massive DPI improvements
This commit is contained in:
		
							parent
							
								
									aeae6c9311
								
							
						
					
					
						commit
						ea0526ae9d
					
				
					 8 changed files with 74 additions and 56 deletions
				
			
		|  | @ -509,3 +509,12 @@ qreal AppEnv::screenRatio() | |||
|     return (dpi / 96); | ||||
| #endif | ||||
| } | ||||
| 
 | ||||
| qreal AppEnv::screenRatioPR() | ||||
| { | ||||
| #if QT_VERSION >= 0x050600 | ||||
|     return QGuiApplication::primaryScreen()->devicePixelRatio(); | ||||
| #else | ||||
|     return 1; | ||||
| #endif | ||||
| } | ||||
|  |  | |||
							
								
								
									
										1
									
								
								AppEnv.h
									
										
									
									
									
								
							
							
						
						
									
										1
									
								
								AppEnv.h
									
										
									
									
									
								
							|  | @ -56,6 +56,7 @@ public: | |||
| 
 | ||||
|     // Screen Stuff
 | ||||
|     static qreal screenRatio(); | ||||
|     static qreal screenRatioPR(); | ||||
| }; | ||||
| 
 | ||||
| #endif // APPENV_H
 | ||||
|  |  | |||
|  | @ -142,6 +142,7 @@ void ImportDialog::processImage() | |||
|     QPixmap snapmaticPixmap(snapmaticResolutionW, snapmaticResolutionH); | ||||
|     snapmaticPixmap.fill(selectedColour); | ||||
|     QPainter snapmaticPainter(&snapmaticPixmap); | ||||
|     qreal screenRatioPR = AppEnv::screenRatioPR(); | ||||
|     if (!backImage.isNull()) | ||||
|     { | ||||
|         if (!ui->cbStretch->isChecked()) | ||||
|  | @ -225,7 +226,10 @@ void ImportDialog::processImage() | |||
|     } | ||||
|     snapmaticPainter.end(); | ||||
|     newImage = snapmaticPixmap.toImage(); | ||||
|     ui->labPicture->setPixmap(snapmaticPixmap.scaled(snapmaticResolutionLW, snapmaticResolutionLH, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); | ||||
| #if QT_VERSION >= 0x050600 | ||||
|     snapmaticPixmap.setDevicePixelRatio(screenRatioPR); | ||||
| #endif | ||||
|     ui->labPicture->setPixmap(snapmaticPixmap.scaled(snapmaticResolutionLW * screenRatioPR, snapmaticResolutionLH * screenRatioPR, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); | ||||
| } | ||||
| 
 | ||||
| void ImportDialog::processWatermark(QPainter *snapmaticPainter) | ||||
|  |  | |||
|  | @ -94,6 +94,7 @@ JsonEditorDialog::JsonEditorDialog(SnapmaticPicture *picture, QWidget *parent) : | |||
|     { | ||||
|         ui->lineJSON->setMinimumHeight(qRound(1 * screenRatio)); | ||||
|         ui->lineJSON->setMaximumHeight(qRound(1 * screenRatio)); | ||||
|         ui->lineJSON->setLineWidth(qRound(1 * screenRatio)); | ||||
|     } | ||||
|     resize(450 * screenRatio, 550 * screenRatio); | ||||
| } | ||||
|  |  | |||
|  | @ -138,9 +138,10 @@ void PictureDialog::setupPictureDialog() | |||
| 
 | ||||
|     // Avatar area
 | ||||
|     qreal screenRatio = AppEnv::screenRatio(); | ||||
|     if (screenRatio != 1) | ||||
|     qreal screenRatioPR = AppEnv::screenRatioPR(); | ||||
|     if (screenRatio != 1 || screenRatioPR != 1) | ||||
|     { | ||||
|         avatarAreaPicture = QImage(":/img/avatararea.png").scaledToHeight(536 * screenRatio, Qt::FastTransformation); | ||||
|         avatarAreaPicture = QImage(":/img/avatararea.png").scaledToHeight(536 * screenRatio * screenRatioPR, Qt::FastTransformation); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|  | @ -150,6 +151,11 @@ void PictureDialog::setupPictureDialog() | |||
|     avatarLocY = 66; | ||||
|     avatarSize = 470; | ||||
| 
 | ||||
|     // DPI calculation (picture)
 | ||||
|     ui->labPicture->setFixedSize(960 * screenRatio, 536 * screenRatio); | ||||
|     ui->labPicture->setFocusPolicy(Qt::StrongFocus); | ||||
|     ui->labPicture->setScaledContents(true); | ||||
| 
 | ||||
|     // Overlay area
 | ||||
|     renderOverlayPicture(); | ||||
|     overlayEnabled = true; | ||||
|  | @ -185,8 +191,6 @@ void PictureDialog::setupPictureDialog() | |||
| 
 | ||||
|     installEventFilter(this); | ||||
|     installEventFilter(ui->labPicture); | ||||
|     ui->labPicture->setFixedSize(960 * screenRatio, 536 * screenRatio); | ||||
|     ui->labPicture->setFocusPolicy(Qt::StrongFocus); | ||||
| 
 | ||||
|     // DPI calculation
 | ||||
|     ui->hlButtons->setSpacing(6 * screenRatio); | ||||
|  | @ -343,7 +347,7 @@ LRESULT PictureDialog::HitTestNCA(HWND hWnd, LPARAM lParam) | |||
| void PictureDialog::resizeEvent(QResizeEvent *event) | ||||
| { | ||||
|     Q_UNUSED(event) | ||||
|     //    int newDialogHeight = ui->labPicture->pixmap()->height();
 | ||||
|     //    int newDialogHeight = (ui->labPicture->pixmap()->height() / AppEnv::screenRatioPR());
 | ||||
|     //    newDialogHeight = newDialogHeight + ui->jsonFrame->height();
 | ||||
|     //    if (naviEnabled) newDialogHeight = newDialogHeight + layout()->menuBar()->height();
 | ||||
|     //    int buttomBorderSize = (frameSize().height() - size().height());
 | ||||
|  | @ -364,7 +368,7 @@ void PictureDialog::resizeEvent(QResizeEvent *event) | |||
| void PictureDialog::adaptNewDialogSize(QSize newLabelSize) | ||||
| { | ||||
|     Q_UNUSED(newLabelSize) | ||||
|     int newDialogHeight = ui->labPicture->pixmap()->height(); | ||||
|     int newDialogHeight = (ui->labPicture->pixmap()->height() / AppEnv::screenRatioPR()); | ||||
|     newDialogHeight = newDialogHeight + ui->jsonFrame->height(); | ||||
|     if (naviEnabled) newDialogHeight = newDialogHeight + layout()->menuBar()->height(); | ||||
|     setMaximumSize(width(), newDialogHeight); | ||||
|  | @ -566,24 +570,25 @@ void PictureDialog::renderOverlayPicture() | |||
| { | ||||
|     // Generating Overlay Preview
 | ||||
|     qreal screenRatio = AppEnv::screenRatio(); | ||||
|     QRect preferedRect = QRect(0, 0, 200 * screenRatio, 160 * screenRatio); | ||||
|     qreal screenRatioPR = AppEnv::screenRatioPR(); | ||||
|     QRect preferedRect = QRect(0, 0, 200 * screenRatio * screenRatioPR, 160 * screenRatio * screenRatioPR); | ||||
|     QString overlayText = tr("Key 1 - Avatar Preview Mode\nKey 2 - Toggle Overlay\nArrow Keys - Navigate"); | ||||
| 
 | ||||
|     QFont overlayPainterFont; | ||||
|     overlayPainterFont.setPixelSize(12 * screenRatio); | ||||
|     overlayPainterFont.setPixelSize(12 * screenRatio * screenRatioPR); | ||||
|     QFontMetrics fontMetrics(overlayPainterFont); | ||||
|     QRect overlaySpace = fontMetrics.boundingRect(preferedRect, Qt::AlignLeft | Qt::AlignTop | Qt::TextDontClip | Qt::TextWordWrap, overlayText); | ||||
| 
 | ||||
|     int hOverlay = Qt::AlignTop; | ||||
|     if (overlaySpace.height() < 74 * screenRatio) | ||||
|     if (overlaySpace.height() < 74 * screenRatio * screenRatioPR) | ||||
|     { | ||||
|         hOverlay = Qt::AlignVCenter; | ||||
|         preferedRect.setHeight(71 * screenRatio); | ||||
|         overlaySpace.setHeight(80 * screenRatio); | ||||
|         preferedRect.setHeight(71 * screenRatio * screenRatioPR); | ||||
|         overlaySpace.setHeight(80 * screenRatio * screenRatioPR); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         overlaySpace.setHeight(overlaySpace.height() + 6 * screenRatio); | ||||
|         overlaySpace.setHeight(overlaySpace.height() + 6 * screenRatio * screenRatioPR); | ||||
|     } | ||||
| 
 | ||||
|     QImage overlayImage(overlaySpace.size(), QImage::Format_ARGB32_Premultiplied); | ||||
|  | @ -595,13 +600,13 @@ void PictureDialog::renderOverlayPicture() | |||
|     overlayPainter.drawText(preferedRect, Qt::AlignLeft | hOverlay | Qt::TextDontClip | Qt::TextWordWrap, overlayText); | ||||
|     overlayPainter.end(); | ||||
| 
 | ||||
|     if (overlaySpace.width() < 194 * screenRatio) | ||||
|     if (overlaySpace.width() < 194 * screenRatio * screenRatioPR) | ||||
|     { | ||||
|         overlaySpace.setWidth(200 * screenRatio); | ||||
|         overlaySpace.setWidth(200 * screenRatio * screenRatioPR); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         overlaySpace.setWidth(overlaySpace.width() + 6 * screenRatio); | ||||
|         overlaySpace.setWidth(overlaySpace.width() + 6 * screenRatio * screenRatioPR); | ||||
|     } | ||||
| 
 | ||||
|     QImage overlayBorderImage(overlaySpace.width(), overlaySpace.height(), QImage::Format_ARGB6666_Premultiplied); | ||||
|  | @ -611,7 +616,7 @@ void PictureDialog::renderOverlayPicture() | |||
|     overlayTempImage.fill(Qt::transparent); | ||||
|     QPainter overlayTempPainter(&overlayTempImage); | ||||
|     overlayTempPainter.drawImage(0, 0, overlayBorderImage); | ||||
|     overlayTempPainter.drawImage(3 * screenRatio, 3 * screenRatio, overlayImage); | ||||
|     overlayTempPainter.drawImage(3 * screenRatio * screenRatioPR, 3 * screenRatio * screenRatioPR, overlayImage); | ||||
|     overlayTempPainter.end(); | ||||
| } | ||||
| 
 | ||||
|  | @ -684,63 +689,51 @@ void PictureDialog::setSnapmaticPicture(SnapmaticPicture *picture) | |||
| void PictureDialog::renderPicture() | ||||
| { | ||||
|     qreal screenRatio = AppEnv::screenRatio(); | ||||
|     qreal screenRatioPR = AppEnv::screenRatioPR(); | ||||
|     if (!previewMode) | ||||
|     { | ||||
|         if (overlayEnabled) | ||||
|         { | ||||
|             QPixmap shownImagePixmap(960 * screenRatio, 536 * screenRatio); | ||||
|             QPixmap shownImagePixmap(960 * screenRatio * screenRatioPR, 536 * screenRatio * screenRatioPR); | ||||
|             shownImagePixmap.fill(Qt::transparent); | ||||
|             QPainter shownImagePainter(&shownImagePixmap); | ||||
|             if (screenRatio == 1) | ||||
|             { | ||||
|                 shownImagePainter.drawImage(0, 0, snapmaticPicture); | ||||
|                 shownImagePainter.drawImage(3 * screenRatio, 3 * screenRatio, overlayTempImage); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 shownImagePainter.drawImage(0, 0, snapmaticPicture.scaledToHeight(536 * screenRatio, Qt::SmoothTransformation)); | ||||
|                 shownImagePainter.drawImage(3 * screenRatio, 3 * screenRatio, overlayTempImage); | ||||
|             } | ||||
|             shownImagePainter.drawImage(0, 0, snapmaticPicture.scaled(960 * screenRatio * screenRatioPR, 536 * screenRatio * screenRatioPR, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); | ||||
|             shownImagePainter.drawImage(3 * screenRatio * screenRatioPR, 3 * screenRatio * screenRatioPR, overlayTempImage); | ||||
|             shownImagePainter.end(); | ||||
| #if QT_VERSION >= 0x050600 | ||||
|             shownImagePixmap.setDevicePixelRatio(screenRatioPR); | ||||
| #endif | ||||
|             ui->labPicture->setPixmap(shownImagePixmap); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             if (screenRatio != 1) | ||||
|             { | ||||
|                 QPixmap shownImagePixmap(960 * screenRatio, 536 * screenRatio); | ||||
|                 shownImagePixmap.fill(Qt::transparent); | ||||
|                 QPainter shownImagePainter(&shownImagePixmap); | ||||
|                 shownImagePainter.drawImage(0, 0, snapmaticPicture.scaledToHeight(536 * screenRatio, Qt::SmoothTransformation)); | ||||
|                 shownImagePainter.end(); | ||||
|                 ui->labPicture->setPixmap(shownImagePixmap); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 ui->labPicture->setPixmap(QPixmap::fromImage(snapmaticPicture)); | ||||
|             } | ||||
|             QPixmap shownImagePixmap(960 * screenRatio * screenRatioPR, 536 * screenRatio * screenRatioPR); | ||||
|             shownImagePixmap.fill(Qt::transparent); | ||||
|             QPainter shownImagePainter(&shownImagePixmap); | ||||
|             shownImagePainter.drawImage(0, 0, snapmaticPicture.scaled(960 * screenRatio * screenRatioPR, 536 * screenRatio * screenRatioPR, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); | ||||
|             shownImagePainter.end(); | ||||
| #if QT_VERSION >= 0x050600 | ||||
|             shownImagePixmap.setDevicePixelRatio(screenRatioPR); | ||||
| #endif | ||||
|             ui->labPicture->setPixmap(shownImagePixmap); | ||||
|         } | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         // Generating Avatar Preview
 | ||||
|         QPixmap avatarPixmap(960 * screenRatio, 536 * screenRatio); | ||||
|         QPixmap avatarPixmap(960 * screenRatio * screenRatioPR, 536 * screenRatio * screenRatioPR); | ||||
|         QPainter snapPainter(&avatarPixmap); | ||||
|         QFont snapPainterFont; | ||||
|         snapPainterFont.setPixelSize(12 * screenRatio); | ||||
|         if (screenRatio == 1) | ||||
|         { | ||||
|             snapPainter.drawImage(0, 0, snapmaticPicture); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             snapPainter.drawImage(0, 0, snapmaticPicture.scaledToHeight(536 * screenRatio, Qt::SmoothTransformation)); | ||||
|         } | ||||
|         snapPainterFont.setPixelSize(12 * screenRatio * screenRatioPR); | ||||
|         snapPainter.drawImage(0, 0, snapmaticPicture.scaled(960 * screenRatio * screenRatioPR, 536 * screenRatio * screenRatioPR, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); | ||||
|         snapPainter.drawImage(0, 0, avatarAreaPicture); | ||||
|         snapPainter.setPen(QColor::fromRgb(255, 255, 255, 255)); | ||||
|         snapPainter.setFont(snapPainterFont); | ||||
|         snapPainter.drawText(QRect(3 * screenRatio, 3 * screenRatio, 140 * screenRatio, 536 * screenRatio), Qt::AlignLeft | Qt::TextWordWrap, tr("Avatar Preview Mode\nPress 1 for Default View")); | ||||
|         snapPainter.drawText(QRect(3 * screenRatio * screenRatioPR, 3 * screenRatio * screenRatioPR, 140 * screenRatio * screenRatioPR, 536 * screenRatio * screenRatioPR), Qt::AlignLeft | Qt::TextWordWrap, tr("Avatar Preview Mode\nPress 1 for Default View")); | ||||
|         snapPainter.end(); | ||||
| #if QT_VERSION >= 0x050600 | ||||
|         avatarPixmap.setDevicePixelRatio(screenRatioPR); | ||||
| #endif | ||||
|         ui->labPicture->setPixmap(avatarPixmap); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -58,9 +58,8 @@ SavegameWidget::SavegameWidget(QWidget *parent) : | |||
|     qreal screenRatio = AppEnv::screenRatio(); | ||||
|     ui->labSavegamePic->setFixedSize(48 * screenRatio, 27 * screenRatio); | ||||
| 
 | ||||
|     QPixmap savegamePixmap(":/img/savegame.svgz"); | ||||
|     savegamePixmap = savegamePixmap.scaledToHeight(ui->labSavegamePic->height(), Qt::SmoothTransformation); | ||||
|     ui->labSavegamePic->setPixmap(savegamePixmap); | ||||
|     ui->labSavegamePic->setScaledContents(true); | ||||
|     ui->labSavegamePic->setPixmap(QPixmap(":/img/savegame.svgz")); | ||||
| 
 | ||||
|     QString exportSavegameStr = tr("Export Savegame..."); | ||||
|     Q_UNUSED(exportSavegameStr) | ||||
|  |  | |||
|  | @ -78,9 +78,16 @@ void SnapmaticWidget::setSnapmaticPicture(SnapmaticPicture *picture) | |||
|     QObject::connect(picture, SIGNAL(customSignal(QString)), this, SLOT(customSignal(QString))); | ||||
| 
 | ||||
|     qreal screenRatio = AppEnv::screenRatio(); | ||||
|     qreal screenRatioPR = AppEnv::screenRatioPR(); | ||||
|     ui->labPicture->setFixedSize(48 * screenRatio, 27 * screenRatio); | ||||
| 
 | ||||
|     QPixmap SnapmaticPixmap = QPixmap::fromImage(picture->getImage().scaled(ui->labPicture->width(), ui->labPicture->height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation), Qt::AutoColor); | ||||
|     ui->labPicture->setScaledContents(true); | ||||
| 
 | ||||
|     QPixmap SnapmaticPixmap = QPixmap::fromImage(picture->getImage().scaled(ui->labPicture->width() * screenRatioPR, ui->labPicture->height() * screenRatioPR, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), Qt::AutoColor); | ||||
| #if QT_VERSION >= 0x050600 | ||||
|     SnapmaticPixmap.setDevicePixelRatio(screenRatioPR); | ||||
| #endif | ||||
| 
 | ||||
|     ui->labPicStr->setText(smpic->getPictureStr() % "\n" % smpic->getPictureTitl()); | ||||
|     ui->labPicture->setPixmap(SnapmaticPixmap); | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										4
									
								
								main.cpp
									
										
									
									
									
								
							
							
						
						
									
										4
									
								
								main.cpp
									
										
									
									
									
								
							|  | @ -65,6 +65,10 @@ | |||
| 
 | ||||
| int main(int argc, char *argv[]) | ||||
| { | ||||
| #if QT_VERSION >= 0x050600 | ||||
|     QApplication::setAttribute(Qt::AA_EnableHighDpiScaling, true); | ||||
|     QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps, true); | ||||
| #endif | ||||
|     QApplication a(argc, argv); | ||||
|     a.setApplicationName(GTA5SYNC_APPSTR); | ||||
|     a.setApplicationVersion(GTA5SYNC_APPVER); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue