Changeset 71074 in vbox for trunk/src/VBox/Frontends/VirtualBox
- Timestamp:
- Feb 20, 2018 5:43:24 PM (7 years ago)
- svn:sync-xref-src-repo-rev:
- 120938
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/runtime
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBuffer.cpp
r71073 r71074 157 157 /** Defines device-pixel-ratio set for HiDPI frame-buffer. */ 158 158 void setDevicePixelRatio(double dDevicePixelRatio) { m_dDevicePixelRatio = dDevicePixelRatio; } 159 /** Returns actual device-pixel-ratio set for HiDPI frame-buffer. */ 160 double devicePixelRatioActual() const { return m_dDevicePixelRatioActual; } 161 /** Defines actual device-pixel-ratio set for HiDPI frame-buffer. */ 162 void setDevicePixelRatioActual(double dDevicePixelRatioActual) { m_dDevicePixelRatioActual = dDevicePixelRatioActual; } 159 163 160 164 /** Returns whether frame-buffer should use unscaled HiDPI output. */ … … 375 379 /** Holds device-pixel-ratio set for HiDPI frame-buffer. */ 376 380 double m_dDevicePixelRatio; 381 /** Holds actual device-pixel-ratio set for HiDPI frame-buffer. */ 382 double m_dDevicePixelRatioActual; 377 383 /** Holds whether frame-buffer should use unscaled HiDPI output. */ 378 384 bool m_fUseUnscaledHiDPIOutput; … … 526 532 , m_enmScalingOptimizationType(ScalingOptimizationType_None) 527 533 , m_dDevicePixelRatio(1.0) 534 , m_dDevicePixelRatioActual(1.0) 528 535 , m_fUseUnscaledHiDPIOutput(false) 529 536 { … … 1322 1329 /* Take the device-pixel-ratio into account: */ 1323 1330 if (!useUnscaledHiDPIOutput()) 1324 m_transform = m_transform.scale(devicePixelRatio (), devicePixelRatio());1331 m_transform = m_transform.scale(devicePixelRatioActual(), devicePixelRatioActual()); 1325 1332 m_transform = m_transform.scale(1.0 / devicePixelRatio(), 1.0 / devicePixelRatio()); 1326 1333 } … … 1337 1344 /* But if we should scale image by some reason: */ 1338 1345 if ( scaledSize().isValid() 1339 || (!useUnscaledHiDPIOutput() && devicePixelRatio () != 1.0))1346 || (!useUnscaledHiDPIOutput() && devicePixelRatioActual() != 1.0)) 1340 1347 { 1341 1348 /* Calculate final scaled size: */ 1342 1349 QSize effectiveSize = !scaledSize().isValid() ? pSourceImage->size() : scaledSize(); 1343 1350 /* Take the device-pixel-ratio into account: */ 1344 if (!useUnscaledHiDPIOutput() && devicePixelRatio () != 1.0)1345 effectiveSize *= devicePixelRatio ();1351 if (!useUnscaledHiDPIOutput() && devicePixelRatioActual() != 1.0) 1352 effectiveSize *= devicePixelRatioActual(); 1346 1353 /* We scale the image to requested size and retain it 1347 1354 * by making heap shallow copy of that temporary object: */ … … 1392 1399 /* If we had to scale image for some reason: */ 1393 1400 if ( scaledSize().isValid() 1394 || (!useUnscaledHiDPIOutput() && devicePixelRatio () != 1.0))1401 || (!useUnscaledHiDPIOutput() && devicePixelRatioActual() != 1.0)) 1395 1402 { 1396 1403 /* Wipe out copied image: */ … … 1411 1418 /* But if we should scale image by some reason: */ 1412 1419 if ( scaledSize().isValid() 1413 || (!useUnscaledHiDPIOutput() && devicePixelRatio () != 1.0))1420 || (!useUnscaledHiDPIOutput() && devicePixelRatioActual() != 1.0)) 1414 1421 { 1415 1422 /* Calculate final scaled size: */ 1416 1423 QSize effectiveSize = !scaledSize().isValid() ? pSourceImage->size() : scaledSize(); 1417 1424 /* Take the device-pixel-ratio into account: */ 1418 if (!useUnscaledHiDPIOutput() && devicePixelRatio () != 1.0)1419 effectiveSize *= devicePixelRatio ();1425 if (!useUnscaledHiDPIOutput() && devicePixelRatioActual() != 1.0) 1426 effectiveSize *= devicePixelRatioActual(); 1420 1427 /* We scale the image to requested size and retain it 1421 1428 * by making heap shallow copy of that temporary object: */ … … 1482 1489 /* If we had to scale image for some reason: */ 1483 1490 if ( scaledSize().isValid() 1484 || (!useUnscaledHiDPIOutput() && devicePixelRatio () != 1.0))1491 || (!useUnscaledHiDPIOutput() && devicePixelRatioActual() != 1.0)) 1485 1492 { 1486 1493 /* Wipe out copied image: */ … … 1685 1692 } 1686 1693 1694 double UIFrameBuffer::devicePixelRatioActual() const 1695 { 1696 return m_pFrameBuffer->devicePixelRatioActual(); 1697 } 1698 1699 void UIFrameBuffer::setDevicePixelRatioActual(double dDevicePixelRatioActual) 1700 { 1701 m_pFrameBuffer->setDevicePixelRatioActual(dDevicePixelRatioActual); 1702 } 1703 1687 1704 bool UIFrameBuffer::useUnscaledHiDPIOutput() const 1688 1705 { -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBuffer.h
r71056 r71074 110 110 /** Defines device-pixel-ratio set for HiDPI frame-buffer. */ 111 111 void setDevicePixelRatio(double dDevicePixelRatio); 112 /** Returns actual device-pixel-ratio set for HiDPI frame-buffer. */ 113 double devicePixelRatioActual() const; 114 /** Defines actual device-pixel-ratio set for HiDPI frame-buffer. */ 115 void setDevicePixelRatioActual(double dDevicePixelRatioActual); 112 116 113 117 /** Returns whether frame-buffer should use unscaled HiDPI output. */ -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.cpp
r71073 r71074 261 261 // not 3D overlay itself, so for auto scale-up mode we have to take that into account. 262 262 if (!fUseUnscaledHiDPIOutput) 263 dScaleFactorFor3D *= frameBuffer()->devicePixelRatio ();263 dScaleFactorFor3D *= frameBuffer()->devicePixelRatioActual(); 264 264 #endif /* VBOX_WS_WIN || VBOX_WS_X11 */ 265 265 display().NotifyScaleFactorChange(m_uScreenId, … … 366 366 /* Assign new frame-buffer logical-size: */ 367 367 QSize scaledSize = size(); 368 const double dDevicePixelRatio = frameBuffer()->devicePixelRatio(); 369 scaledSize *= dDevicePixelRatio; 368 const double dDevicePixelRatioFormal = frameBuffer()->devicePixelRatio(); 369 const double dDevicePixelRatioActual = frameBuffer()->devicePixelRatioActual(); 370 scaledSize *= dDevicePixelRatioFormal; 370 371 if (!frameBuffer()->useUnscaledHiDPIOutput()) 371 scaledSize /= dDevicePixelRatio ;372 scaledSize /= dDevicePixelRatioActual; 372 373 frameBuffer()->setScaledSize(scaledSize); 373 374 … … 453 454 454 455 /* Take the device-pixel-ratio into account: */ 455 const double dDevicePixelRatio = frameBuffer()->devicePixelRatio(); 456 if (!frameBuffer()->useUnscaledHiDPIOutput() && dDevicePixelRatio != 1.0) 457 { 458 rect.moveTo((int)floor((double)rect.x() * dDevicePixelRatio) - 1, 459 (int)floor((double)rect.y() * dDevicePixelRatio) - 1); 460 rect.setSize(QSize((int)ceil((double)rect.width() * dDevicePixelRatio) + 2, 461 (int)ceil((double)rect.height() * dDevicePixelRatio) + 2)); 462 } 463 if (dDevicePixelRatio != 1.0) 464 { 465 rect.moveTo((int)floor((double)rect.x() / dDevicePixelRatio) - 1, 466 (int)floor((double)rect.y() / dDevicePixelRatio) - 1); 467 rect.setSize(QSize((int)ceil((double)rect.width() / dDevicePixelRatio) + 2, 468 (int)ceil((double)rect.height() / dDevicePixelRatio) + 2)); 456 const double dDevicePixelRatioFormal = frameBuffer()->devicePixelRatio(); 457 const double dDevicePixelRatioActual = frameBuffer()->devicePixelRatioActual(); 458 if (!frameBuffer()->useUnscaledHiDPIOutput() && dDevicePixelRatioActual != 1.0) 459 { 460 rect.moveTo((int)floor((double)rect.x() * dDevicePixelRatioActual) - 1, 461 (int)floor((double)rect.y() * dDevicePixelRatioActual) - 1); 462 rect.setSize(QSize((int)ceil((double)rect.width() * dDevicePixelRatioActual) + 2, 463 (int)ceil((double)rect.height() * dDevicePixelRatioActual) + 2)); 464 } 465 if (dDevicePixelRatioFormal != 1.0) 466 { 467 rect.moveTo((int)floor((double)rect.x() / dDevicePixelRatioFormal) - 1, 468 (int)floor((double)rect.y() / dDevicePixelRatioFormal) - 1); 469 rect.setSize(QSize((int)ceil((double)rect.width() / dDevicePixelRatioFormal) + 2, 470 (int)ceil((double)rect.height() / dDevicePixelRatioFormal) + 2)); 469 471 } 470 472 … … 512 514 // not 3D overlay itself, so for auto scale-up mode we have to take that into account. 513 515 if (!fUseUnscaledHiDPIOutput) 514 dScaleFactorFor3D *= frameBuffer()->devicePixelRatio ();516 dScaleFactorFor3D *= frameBuffer()->devicePixelRatioActual(); 515 517 #endif /* VBOX_WS_WIN || VBOX_WS_X11 */ 516 518 display().NotifyScaleFactorChange(m_uScreenId, … … 712 714 713 715 /* Take the scale-factor related attributes into account: */ 714 const double dDevicePixelRatio = gpDesktop->devicePixelRatio(machineWindow()); 716 const double dDevicePixelRatioFormal = gpDesktop->devicePixelRatio(machineWindow()); 717 const double dDevicePixelRatioActual = gpDesktop->devicePixelRatioActual(machineWindow()); 715 718 const double dScaleFactor = gEDataManager->scaleFactor(vboxGlobal().managedVMUuid()); 716 719 const bool fUseUnscaledHiDPIOutput = gEDataManager->useUnscaledHiDPIOutput(vboxGlobal().managedVMUuid()); 717 m_pFrameBuffer->setDevicePixelRatio(dDevicePixelRatio); 720 m_pFrameBuffer->setDevicePixelRatio(dDevicePixelRatioFormal); 721 m_pFrameBuffer->setDevicePixelRatioActual(dDevicePixelRatioActual); 718 722 m_pFrameBuffer->setScaleFactor(dScaleFactor); 719 723 m_pFrameBuffer->setUseUnscaledHiDPIOutput(fUseUnscaledHiDPIOutput); … … 727 731 // not 3D overlay itself, so for auto scale-up mode we have to take that into account. 728 732 if (!fUseUnscaledHiDPIOutput) 729 dScaleFactorFor3D *= dDevicePixelRatio ;733 dScaleFactorFor3D *= dDevicePixelRatioActual; 730 734 #endif /* VBOX_WS_WIN || VBOX_WS_X11 */ 731 735 display().NotifyScaleFactorChange(m_uScreenId, … … 1061 1065 /* Assign new frame-buffer logical-size: */ 1062 1066 QSize scaledSize = size(); 1063 const double dDevicePixelRatio = frameBuffer()->devicePixelRatio(); 1064 scaledSize *= dDevicePixelRatio; 1067 const double dDevicePixelRatioFormal = frameBuffer()->devicePixelRatio(); 1068 const double dDevicePixelRatioActual = frameBuffer()->devicePixelRatioActual(); 1069 scaledSize *= dDevicePixelRatioFormal; 1065 1070 if (!frameBuffer()->useUnscaledHiDPIOutput()) 1066 scaledSize /= dDevicePixelRatio ;1071 scaledSize /= dDevicePixelRatioActual; 1067 1072 frameBuffer()->setScaledSize(scaledSize); 1068 1073 } … … 1127 1132 1128 1133 /* Take the device-pixel-ratio into account: */ 1129 const double dDevicePixelRatio = frameBuffer()->devicePixelRatio();1130 if (!frameBuffer()->useUnscaledHiDPIOutput() && dDevicePixelRatio != 1.0)1131 screenShot = screenShot.scaled(screenShot.size() * dDevicePixelRatio ,1134 const double dDevicePixelRatioActual = frameBuffer()->devicePixelRatioActual(); 1135 if (!frameBuffer()->useUnscaledHiDPIOutput() && dDevicePixelRatioActual != 1.0) 1136 screenShot = screenShot.scaled(screenShot.size() * dDevicePixelRatioActual, 1132 1137 Qt::IgnoreAspectRatio, Qt::SmoothTransformation); 1133 1138 … … 1165 1170 1166 1171 /* Take the device-pixel-ratio into account: */ 1167 const double dDevicePixelRatio = frameBuffer()->devicePixelRatio();1168 if (!frameBuffer()->useUnscaledHiDPIOutput() )1169 effectiveSize *= dDevicePixelRatio ;1172 const double dDevicePixelRatioActual = frameBuffer()->devicePixelRatioActual(); 1173 if (!frameBuffer()->useUnscaledHiDPIOutput() && dDevicePixelRatioActual != 1.0) 1174 effectiveSize *= dDevicePixelRatioActual; 1170 1175 1171 1176 /* Create a screen-shot on the basis of the screen-data we have in saved-state: */ … … 1198 1203 1199 1204 /* Take the device-pixel-ratio into account: */ 1200 const double dDevicePixelRatio = frameBuffer()->devicePixelRatio();1201 if (!frameBuffer()->useUnscaledHiDPIOutput() )1202 scaledSize *= dDevicePixelRatio ;1205 const double dDevicePixelRatioActual = frameBuffer()->devicePixelRatioActual(); 1206 if (!frameBuffer()->useUnscaledHiDPIOutput() && dDevicePixelRatioActual != 1.0) 1207 scaledSize *= dDevicePixelRatioActual; 1203 1208 1204 1209 /* Update pause pixmap finally: */ … … 1230 1235 1231 1236 /* Take the device-pixel-ratio into account: */ 1232 const double dDevicePixelRatio = frameBuffer()->devicePixelRatio(); 1233 xRange *= dDevicePixelRatio; 1234 yRange *= dDevicePixelRatio; 1237 const double dDevicePixelRatioFormal = frameBuffer()->devicePixelRatio(); 1238 const double dDevicePixelRatioActual = frameBuffer()->devicePixelRatioActual(); 1239 xRange *= dDevicePixelRatioFormal; 1240 yRange *= dDevicePixelRatioFormal; 1235 1241 if (!frameBuffer()->useUnscaledHiDPIOutput()) 1236 1242 { 1237 xRange /= dDevicePixelRatio ;1238 yRange /= dDevicePixelRatio ;1243 xRange /= dDevicePixelRatioActual; 1244 yRange /= dDevicePixelRatioActual; 1239 1245 } 1240 1246 … … 1253 1259 1254 1260 /* Take the device-pixel-ratio into account: */ 1255 const double dDevicePixelRatio = frameBuffer()->devicePixelRatio(); 1261 const double dDevicePixelRatioFormal = frameBuffer()->devicePixelRatio(); 1262 const double dDevicePixelRatioActual = frameBuffer()->devicePixelRatioActual(); 1256 1263 if (!frameBuffer()->useUnscaledHiDPIOutput()) 1257 1264 { 1258 iContentsX *= dDevicePixelRatio ;1259 iContentsY *= dDevicePixelRatio ;1260 } 1261 iContentsX /= dDevicePixelRatio ;1262 iContentsY /= dDevicePixelRatio ;1265 iContentsX *= dDevicePixelRatioActual; 1266 iContentsY *= dDevicePixelRatioActual; 1267 } 1268 iContentsX /= dDevicePixelRatioFormal; 1269 iContentsY /= dDevicePixelRatioFormal; 1263 1270 1264 1271 /* Return point shifted according scroll-bars: */ … … 1472 1479 /* Update device-pixel-ratio for underlying frame-buffer: */ 1473 1480 m_pFrameBuffer->setDevicePixelRatio(gpDesktop->devicePixelRatio(machineWindow())); 1481 m_pFrameBuffer->setDevicePixelRatioActual(gpDesktop->devicePixelRatioActual(machineWindow())); 1474 1482 /* Perform frame-buffer rescaling: */ 1475 1483 m_pFrameBuffer->performRescale(); … … 1878 1886 1879 1887 /* Take the device-pixel-ratio into account: */ 1880 const double dDevicePixelRatio = frameBuffer()->devicePixelRatio(); 1888 const double dDevicePixelRatioFormal = frameBuffer()->devicePixelRatio(); 1889 const double dDevicePixelRatioActual = frameBuffer()->devicePixelRatioActual(); 1881 1890 if (!frameBuffer()->useUnscaledHiDPIOutput()) 1882 size = QSize(size.width() * dDevicePixelRatio , size.height() * dDevicePixelRatio);1883 size = QSize(size.width() / dDevicePixelRatio , size.height() / dDevicePixelRatio);1891 size = QSize(size.width() * dDevicePixelRatioActual, size.height() * dDevicePixelRatioActual); 1892 size = QSize(size.width() / dDevicePixelRatioFormal, size.height() / dDevicePixelRatioFormal); 1884 1893 1885 1894 /* Return result: */ … … 1890 1899 { 1891 1900 /* Take the device-pixel-ratio into account: */ 1892 const double dDevicePixelRatio = frameBuffer()->devicePixelRatio(); 1893 size = QSize(size.width() * dDevicePixelRatio, size.height() * dDevicePixelRatio); 1901 const double dDevicePixelRatioFormal = frameBuffer()->devicePixelRatio(); 1902 const double dDevicePixelRatioActual = frameBuffer()->devicePixelRatioActual(); 1903 size = QSize(size.width() * dDevicePixelRatioFormal, size.height() * dDevicePixelRatioFormal); 1894 1904 if (!frameBuffer()->useUnscaledHiDPIOutput()) 1895 size = QSize(size.width() / dDevicePixelRatio , size.height() / dDevicePixelRatio);1905 size = QSize(size.width() / dDevicePixelRatioActual, size.height() / dDevicePixelRatioActual); 1896 1906 1897 1907 /* Take the scale-factor into account: */ -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMouseHandler.cpp
r71073 r71074 1045 1045 1046 1046 /* Take the device-pixel-ratio into account: */ 1047 const double dDevicePixelRatio = pFrameBuffer->devicePixelRatio(); 1048 cpnt.setX(cpnt.x() * dDevicePixelRatio); 1049 cpnt.setY(cpnt.y() * dDevicePixelRatio); 1047 const double dDevicePixelRatioFormal = pFrameBuffer->devicePixelRatio(); 1048 const double dDevicePixelRatioActual = pFrameBuffer->devicePixelRatioActual(); 1049 cpnt.setX(cpnt.x() * dDevicePixelRatioFormal); 1050 cpnt.setY(cpnt.y() * dDevicePixelRatioFormal); 1050 1051 if (!pFrameBuffer->useUnscaledHiDPIOutput()) 1051 1052 { 1052 cpnt.setX(cpnt.x() / dDevicePixelRatio );1053 cpnt.setY(cpnt.y() / dDevicePixelRatio );1053 cpnt.setX(cpnt.x() / dDevicePixelRatioActual); 1054 cpnt.setY(cpnt.y() / dDevicePixelRatioActual); 1054 1055 } 1055 1056 -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/scale/UIMachineViewScale.cpp
r71073 r71074 64 64 /* Assign new frame-buffer logical-size: */ 65 65 QSize scaledSize = size(); 66 const double dDevicePixelRatio = frameBuffer()->devicePixelRatio(); 66 const double dDevicePixelRatioFormal = frameBuffer()->devicePixelRatio(); 67 const double dDevicePixelRatioActual = frameBuffer()->devicePixelRatioActual(); 67 68 const bool fUseUnscaledHiDPIOutput = frameBuffer()->useUnscaledHiDPIOutput(); 68 scaledSize *= dDevicePixelRatio ;69 scaledSize *= dDevicePixelRatioFormal; 69 70 if (!fUseUnscaledHiDPIOutput) 70 scaledSize /= dDevicePixelRatio ;71 scaledSize /= dDevicePixelRatioActual; 71 72 frameBuffer()->setScaledSize(scaledSize); 72 73 frameBuffer()->performRescale(); … … 86 87 if (!fUseUnscaledHiDPIOutput) 87 88 { 88 xScaleFactor *= dDevicePixelRatio ;89 yScaleFactor *= dDevicePixelRatio ;89 xScaleFactor *= dDevicePixelRatioActual; 90 yScaleFactor *= dDevicePixelRatioActual; 90 91 } 91 92 #endif /* VBOX_WS_WIN || VBOX_WS_X11 */ … … 130 131 /* If scaled-size is valid: */ 131 132 const QSize scaledSize = frameBuffer()->scaledSize(); 132 const double dDevicePixelRatio = frameBuffer()->devicePixelRatio(); Q_UNUSED(dDevicePixelRatio);133 const double dDevicePixelRatioActual = frameBuffer()->devicePixelRatioActual(); Q_UNUSED(dDevicePixelRatioActual); 133 134 const bool fUseUnscaledHiDPIOutput = frameBuffer()->useUnscaledHiDPIOutput(); 134 135 if (scaledSize.isValid()) … … 145 146 if (!fUseUnscaledHiDPIOutput) 146 147 { 147 xScaleFactor *= dDevicePixelRatio ;148 yScaleFactor *= dDevicePixelRatio ;148 xScaleFactor *= dDevicePixelRatioActual; 149 yScaleFactor *= dDevicePixelRatioActual; 149 150 } 150 151 #endif /* VBOX_WS_WIN || VBOX_WS_X11 */
Note:
See TracChangeset
for help on using the changeset viewer.