mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	mobile/profile: add x/y offsets to widget
This will allow us to pan the profile around in the QML UI. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
		
							parent
							
								
									31afa976f3
								
							
						
					
					
						commit
						51100cb20e
					
				
					 2 changed files with 30 additions and 4 deletions
				
			
		|  | @ -12,9 +12,12 @@ QMLProfile::QMLProfile(QQuickItem *parent) : | |||
| 	QQuickPaintedItem(parent), | ||||
| 	m_devicePixelRatio(1.0), | ||||
| 	m_margin(0), | ||||
| 	m_profileWidget(new ProfileWidget2) | ||||
| 	m_profileWidget(new ProfileWidget2), | ||||
| 	m_xOffset(0.0), | ||||
| 	m_yOffset(0.0) | ||||
| { | ||||
| 	setAntialiasing(true); | ||||
| 	setFlags(QQuickItem::ItemClipsChildrenToShape | QQuickItem::ItemHasContents ); | ||||
| 	m_profileWidget->setProfileState(); | ||||
| 	m_profileWidget->setPrintMode(true); | ||||
| 	m_profileWidget->setFontPrintScale(0.8); | ||||
|  | @ -58,7 +61,7 @@ void QMLProfile::paint(QPainter *painter) | |||
| 	QTransform profileTransform = QTransform(); | ||||
| 	profileTransform.scale(sx, sy); | ||||
| 	QTransform painterTransform = painter->transform(); | ||||
| 	painterTransform.translate(-painterRect.width() * magicShiftFactor ,-painterRect.height() * magicShiftFactor); | ||||
| 	painterTransform.translate(dpr * m_xOffset - painterRect.width() * magicShiftFactor, dpr * m_yOffset - painterRect.height() * magicShiftFactor); | ||||
| 
 | ||||
| #if defined(PROFILE_SCALING_DEBUG) | ||||
| 	// some debugging messages to help adjust this in case the magic above is insufficient
 | ||||
|  | @ -79,7 +82,7 @@ void QMLProfile::paint(QPainter *painter) | |||
| 	// finally, render the profile
 | ||||
| 	m_profileWidget->render(painter); | ||||
| 	if (verbose) | ||||
| 		qDebug() << "finished rendering profile in" << timer.elapsed() << "ms"; | ||||
| 		qDebug() << "finished rendering profile with offset" << QString::number(m_xOffset, 'f', 1) << "/" << QString::number(m_yOffset, 'f', 1)  << "in" << timer.elapsed() << "ms"; | ||||
| } | ||||
| 
 | ||||
| void QMLProfile::setMargin(int margin) | ||||
|  | @ -98,7 +101,7 @@ void QMLProfile::updateProfile() | |||
| 	if (!d) | ||||
| 		return; | ||||
| 	if (verbose) | ||||
| 		qDebug() << "update profile for dive #" << d->number; | ||||
| 		qDebug() << "update profile for dive #" << d->number << "offeset" << QString::number(m_xOffset, 'f', 1) << "/" << QString::number(m_yOffset, 'f', 1); | ||||
| 	m_profileWidget->plotDive(d, true); | ||||
| } | ||||
| 
 | ||||
|  | @ -125,6 +128,24 @@ void QMLProfile::setDevicePixelRatio(qreal dpr) | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| // don't update the profile here, have the user update x and y and then manually trigger an update
 | ||||
| void QMLProfile::setXOffset(qreal value) | ||||
| { | ||||
| 	if (IS_FP_SAME(value, m_xOffset)) | ||||
| 		return; | ||||
| 	m_xOffset = value; | ||||
| 	emit xOffsetChanged(); | ||||
| } | ||||
| 
 | ||||
| // don't update the profile here, have the user update x and y and then manually trigger an update
 | ||||
| void QMLProfile::setYOffset(qreal value) | ||||
| { | ||||
| 	if (IS_FP_SAME(value, m_yOffset)) | ||||
| 		return; | ||||
| 	m_yOffset = value; | ||||
| 	emit yOffsetChanged(); | ||||
| } | ||||
| 
 | ||||
| void QMLProfile::screenChanged(QScreen *screen) | ||||
| { | ||||
| 	setDevicePixelRatio(screen->devicePixelRatio()); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue