Changeset 71056 in vbox
- Timestamp:
- Feb 19, 2018 2:00:51 PM (7 years ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src
- Files:
-
- 10 edited
-
converter/UIConverterBackend.h (modified) (2 diffs)
-
converter/UIConverterBackendGlobal.cpp (modified) (2 diffs)
-
extradata/UIExtraDataDefs.cpp (modified) (1 diff)
-
extradata/UIExtraDataDefs.h (modified) (2 diffs)
-
extradata/UIExtraDataManager.cpp (modified) (3 diffs)
-
extradata/UIExtraDataManager.h (modified) (1 diff)
-
runtime/UIFrameBuffer.cpp (modified) (16 diffs)
-
runtime/UIFrameBuffer.h (modified) (1 diff)
-
runtime/UIMachineView.cpp (modified) (3 diffs)
-
runtime/UIMachineView.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackend.h
r70870 r71056 100 100 template<> bool canConvert<GuruMeditationHandlerType>(); 101 101 template<> bool canConvert<ScalingOptimizationType>(); 102 #ifdef VBOX_WS_MAC103 template<> bool canConvert<HiDPIOptimizationType>();104 #endif105 102 #ifndef VBOX_WS_MAC 106 103 template<> bool canConvert<MiniToolbarAlignment>(); … … 199 196 template<> QString toInternalString(const ScalingOptimizationType &optimizationType); 200 197 template<> ScalingOptimizationType fromInternalString<ScalingOptimizationType>(const QString &strOptimizationType); 201 #ifdef VBOX_WS_MAC202 template<> QString toInternalString(const HiDPIOptimizationType &optimizationType);203 template<> HiDPIOptimizationType fromInternalString<HiDPIOptimizationType>(const QString &strOptimizationType);204 #endif205 198 #ifndef VBOX_WS_MAC 206 199 template<> QString toInternalString(const MiniToolbarAlignment &miniToolbarAlignment); -
trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp
r70870 r71056 68 68 template<> bool canConvert<GuruMeditationHandlerType>() { return true; } 69 69 template<> bool canConvert<ScalingOptimizationType>() { return true; } 70 #ifdef VBOX_WS_MAC71 template<> bool canConvert<HiDPIOptimizationType>() { return true; }72 #endif73 70 #ifndef VBOX_WS_MAC 74 71 template<> bool canConvert<MiniToolbarAlignment>() { return true; } … … 1651 1648 } 1652 1649 1653 #ifdef VBOX_WS_MAC1654 /* QString <= HiDPIOptimizationType: */1655 template<> QString toInternalString(const HiDPIOptimizationType &optimizationType)1656 {1657 QString strResult;1658 switch (optimizationType)1659 {1660 case HiDPIOptimizationType_None: strResult = "None"; break;1661 case HiDPIOptimizationType_Performance: strResult = "Performance"; break;1662 default:1663 {1664 AssertMsgFailed(("No text for type=%d", optimizationType));1665 break;1666 }1667 }1668 return strResult;1669 }1670 1671 /* HiDPIOptimizationType <= QString: */1672 template<> HiDPIOptimizationType fromInternalString<HiDPIOptimizationType>(const QString &strOptimizationType)1673 {1674 /* Here we have some fancy stuff allowing us1675 * to search through the keys using 'case-insensitive' rule: */1676 QStringList keys; QList<HiDPIOptimizationType> values;1677 keys << "None"; values << HiDPIOptimizationType_None;1678 keys << "Performance"; values << HiDPIOptimizationType_Performance;1679 /* 'Performance' type for empty/unknown words (for trunk): */1680 if (!keys.contains(strOptimizationType, Qt::CaseInsensitive))1681 return HiDPIOptimizationType_Performance;1682 /* Corresponding type for known words: */1683 return values.at(keys.indexOf(QRegExp(strOptimizationType, Qt::CaseInsensitive)));1684 }1685 #endif /* VBOX_WS_MAC */1686 1687 1650 #ifndef VBOX_WS_MAC 1688 1651 /* QString <= MiniToolbarAlignment: */ -
trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.cpp
r70870 r71056 156 156 #endif /* VBOX_WITH_VIDEOHWACCEL */ 157 157 const char* UIExtraDataDefs::GUI_HiDPI_UnscaledOutput = "GUI/HiDPI/UnscaledOutput"; 158 #ifdef VBOX_WS_MAC159 const char* UIExtraDataDefs::GUI_HiDPI_Optimization = "GUI/HiDPI/Optimization";160 #endif161 158 #ifndef VBOX_WS_MAC 162 159 const char* UIExtraDataDefs::GUI_ShowMiniToolBar = "GUI/ShowMiniToolBar"; -
trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h
r70870 r71056 280 280 /** Holds whether Runtime UI should use unscaled HiDPI output. */ 281 281 extern const char* GUI_HiDPI_UnscaledOutput; 282 #ifdef VBOX_WS_MAC283 /** Holds Runtime UI HiDPI optimization type. */284 extern const char* GUI_HiDPI_Optimization;285 #endif286 282 #ifndef VBOX_WS_MAC 287 283 /** Holds whether mini-toolbar is enabled for full and seamless screens. */ … … 757 753 }; 758 754 759 #ifdef VBOX_WS_MAC760 /** Runtime UI: HiDPI optimization types. */761 enum HiDPIOptimizationType762 {763 HiDPIOptimizationType_None,764 HiDPIOptimizationType_Performance765 };766 #endif /* VBOX_WS_MAC */767 768 755 #ifndef VBOX_WS_MAC 769 756 /** Runtime UI: Mini-toolbar alignment. */ -
trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp
r71006 r71056 1997 1997 #endif /* VBOX_WITH_VIDEOHWACCEL */ 1998 1998 << GUI_HiDPI_UnscaledOutput 1999 #ifdef VBOX_WS_MAC2000 << GUI_HiDPI_Optimization2001 #endif2002 1999 #ifndef VBOX_WS_MAC 2003 2000 << GUI_ShowMiniToolBar << GUI_MiniToolBarAutoHide << GUI_MiniToolBarAlignment … … 3745 3742 #endif 3746 3743 } 3747 3748 #ifdef VBOX_WS_MAC3749 HiDPIOptimizationType UIExtraDataManager::hiDPIOptimizationType(const QString &strID)3750 {3751 return gpConverter->fromInternalString<HiDPIOptimizationType>(extraDataString(GUI_HiDPI_Optimization, strID));3752 }3753 #endif /* VBOX_WS_MAC */3754 3744 3755 3745 #ifndef VBOX_WS_MAC … … 4419 4409 else if (strKey == GUI_Scaling_Optimization) 4420 4410 emit sigScalingOptimizationTypeChange(strMachineID); 4421 #ifdef VBOX_WS_MAC4422 /* HiDPI optimization type change: */4423 else if (strKey == GUI_HiDPI_Optimization)4424 emit sigHiDPIOptimizationTypeChange(strMachineID);4425 #endif4426 4411 /* Unscaled HiDPI Output mode change: */ 4427 4412 else if (strKey == GUI_HiDPI_UnscaledOutput) -
trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h
r70870 r71056 534 534 /** Defines whether Runtime UI should @a fUseUnscaledHiDPIOutput. */ 535 535 void setUseUnscaledHiDPIOutput(bool fUseUnscaledHiDPIOutput, const QString &strID); 536 537 #ifdef VBOX_WS_MAC538 /** Returns Runtime UI HiDPI optimization type. */539 HiDPIOptimizationType hiDPIOptimizationType(const QString &strID);540 #endif541 536 542 537 #ifndef VBOX_WS_MAC -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBuffer.cpp
r71034 r71056 168 168 void setScalingOptimizationType(ScalingOptimizationType type) { m_enmScalingOptimizationType = type; } 169 169 170 #ifdef VBOX_WS_MAC171 /** Returns HiDPI frame-buffer optimization type. */172 HiDPIOptimizationType hiDPIOptimizationType() const { return m_hiDPIOptimizationType; }173 /** Defines HiDPI frame-buffer optimization type: */174 void setHiDPIOptimizationType(HiDPIOptimizationType type) { m_hiDPIOptimizationType = type; }175 #endif176 177 170 DECLARE_NOT_AGGREGATABLE(UIFrameBufferPrivate) 178 171 … … 302 295 static void eraseImageRect(QPainter &painter, const QRect &rect, 303 296 bool fUseUnscaledHiDPIOutput, 304 #ifdef VBOX_WS_MAC305 HiDPIOptimizationType hiDPIOptimizationType,306 #endif307 297 double dDevicePixelRatio); 308 298 /** Draws corresponding @a rect of passed @a image with @a painter. */ … … 310 300 int iContentsShiftX, int iContentsShiftY, 311 301 bool fUseUnscaledHiDPIOutput, 312 #ifdef VBOX_WS_MAC313 HiDPIOptimizationType hiDPIOptimizationType,314 #endif315 302 double dDevicePixelRatio); 316 303 … … 392 379 /** Holds whether frame-buffer should use unscaled HiDPI output. */ 393 380 bool m_fUseUnscaledHiDPIOutput; 394 #ifdef VBOX_WS_MAC395 /** Holds HiDPI frame-buffer optimization type. */396 HiDPIOptimizationType m_hiDPIOptimizationType;397 #endif398 381 /** @} */ 399 382 … … 546 529 , m_dDevicePixelRatio(1.0) 547 530 , m_fUseUnscaledHiDPIOutput(false) 548 #ifdef VBOX_WS_MAC549 , m_hiDPIOptimizationType(HiDPIOptimizationType_None)550 #endif551 531 { 552 532 /* Update coordinate-system: */ … … 1289 1269 { 1290 1270 case UIVisualStateType_Scale: 1291 m_scaledSize = m_scaledSize.width() == m_iWidth && m_scaledSize.height() == m_iHeight ? QSize() : m_scaledSize;1271 m_scaledSize = scaledSize().width() == m_iWidth && scaledSize().height() == m_iHeight ? QSize() : scaledSize(); 1292 1272 break; 1293 1273 default: … … 1404 1384 m_pMachineView->contentsX(), m_pMachineView->contentsY(), 1405 1385 useUnscaledHiDPIOutput(), 1406 #ifdef VBOX_WS_MAC1407 hiDPIOptimizationType(),1408 #endif1409 1386 devicePixelRatio()); 1410 1387 … … 1473 1450 eraseImageRect(painter, paintRectHiDPI, 1474 1451 useUnscaledHiDPIOutput(), 1475 #ifdef VBOX_WS_MAC1476 hiDPIOptimizationType(),1477 #endif1478 1452 devicePixelRatio()); 1479 1453 … … 1495 1469 m_pMachineView->contentsX(), m_pMachineView->contentsY(), 1496 1470 useUnscaledHiDPIOutput(), 1497 #ifdef VBOX_WS_MAC1498 hiDPIOptimizationType(),1499 #endif1500 1471 devicePixelRatio()); 1501 1472 … … 1525 1496 void UIFrameBufferPrivate::eraseImageRect(QPainter &painter, const QRect &rect, 1526 1497 bool fUseUnscaledHiDPIOutput, 1527 #ifdef VBOX_WS_MAC1528 HiDPIOptimizationType hiDPIOptimizationType,1529 #endif1530 1498 double dDevicePixelRatio) 1531 1499 { … … 1533 1501 QPixmap subPixmap = QPixmap(rect.width(), rect.height()); 1534 1502 1535 #ifdef VBOX_WS_MAC1536 /* If HiDPI 'device-pixel-ratio' defined: */1537 if (dDevicePixelRatio > 1.0)1538 {1539 /* Should we perform logical HiDPI scaling and optimize it for performance? */1540 if (!fUseUnscaledHiDPIOutput && hiDPIOptimizationType == HiDPIOptimizationType_Performance)1541 {1542 /* Adjust sub-pixmap: */1543 subPixmap = QPixmap((int)(rect.width() * dDevicePixelRatio),1544 (int)(rect.height() * dDevicePixelRatio));1545 }1546 1547 /* Should we not perform logical HiDPI scaling or perform logical HiDPI scaling and optimize it for performance? */1548 if (fUseUnscaledHiDPIOutput || hiDPIOptimizationType == HiDPIOptimizationType_Performance)1549 {1550 /* Mark sub-pixmap as HiDPI: */1551 subPixmap.setDevicePixelRatio(dDevicePixelRatio);1552 }1553 }1554 #else /* !VBOX_WS_MAC */1555 1503 /* If HiDPI 'device-pixel-ratio' defined: */ 1556 1504 if (dDevicePixelRatio > 1.0) … … 1567 1515 subPixmap.setDevicePixelRatio(dDevicePixelRatio); 1568 1516 } 1569 #endif /* !VBOX_WS_MAC */1570 1517 1571 1518 /* Which point we should draw corresponding sub-pixmap? */ … … 1584 1531 int iContentsShiftX, int iContentsShiftY, 1585 1532 bool fUseUnscaledHiDPIOutput, 1586 #ifdef VBOX_WS_MAC1587 HiDPIOptimizationType hiDPIOptimizationType,1588 #endif1589 1533 double dDevicePixelRatio) 1590 1534 { 1591 1535 /* Calculate offset: */ 1592 size_t offset = (rect.x() + iContentsShiftX) * image.depth() / 8 +1593 (rect.y() + iContentsShiftY) * image.bytesPerLine();1536 const size_t offset = (rect.x() + iContentsShiftX) * image.depth() / 8 + 1537 (rect.y() + iContentsShiftY) * image.bytesPerLine(); 1594 1538 1595 1539 /* Restrain boundaries: */ 1596 int iSubImageWidth = qMin(rect.width(), image.width() - rect.x() - iContentsShiftX);1597 int iSubImageHeight = qMin(rect.height(), image.height() - rect.y() - iContentsShiftY);1540 const int iSubImageWidth = qMin(rect.width(), image.width() - rect.x() - iContentsShiftX); 1541 const int iSubImageHeight = qMin(rect.height(), image.height() - rect.y() - iContentsShiftY); 1598 1542 1599 1543 /* Create sub-image (no copy involved): */ … … 1605 1549 QPixmap subPixmap = QPixmap::fromImage(subImage); 1606 1550 1607 #ifdef VBOX_WS_MAC1608 /* If HiDPI 'device-pixel-ratio' defined: */1609 if (dDevicePixelRatio > 1.0)1610 {1611 /* Should we perform logical HiDPI scaling and optimize it for performance? */1612 if (!fUseUnscaledHiDPIOutput && hiDPIOptimizationType == HiDPIOptimizationType_Performance)1613 {1614 /* Fast scale sub-pixmap (2nd copy involved): */1615 subPixmap = subPixmap.scaled(subPixmap.size() * dDevicePixelRatio,1616 Qt::IgnoreAspectRatio, Qt::FastTransformation);1617 }1618 1619 /* Should we not perform logical HiDPI scaling or perform logical HiDPI scaling and optimize it for performance? */1620 if (fUseUnscaledHiDPIOutput || hiDPIOptimizationType == HiDPIOptimizationType_Performance)1621 {1622 /* Mark sub-pixmap as HiDPI: */1623 subPixmap.setDevicePixelRatio(dDevicePixelRatio);1624 }1625 }1626 #else /* !VBOX_WS_MAC */1627 1551 /* If HiDPI 'device-pixel-ratio' defined: */ 1628 1552 if (dDevicePixelRatio > 1.0) … … 1639 1563 subPixmap.setDevicePixelRatio(dDevicePixelRatio); 1640 1564 } 1641 #endif /* !VBOX_WS_MAC */1642 1565 1643 1566 /* Which point we should draw corresponding sub-pixmap? */ … … 1804 1727 } 1805 1728 1806 #ifdef VBOX_WS_MAC1807 HiDPIOptimizationType UIFrameBuffer::hiDPIOptimizationType() const1808 {1809 return m_pFrameBuffer->hiDPIOptimizationType();1810 }1811 1812 void UIFrameBuffer::setHiDPIOptimizationType(HiDPIOptimizationType type)1813 {1814 m_pFrameBuffer->setHiDPIOptimizationType(type);1815 }1816 #endif1817 1818 1729 void UIFrameBuffer::handleNotifyChange(int iWidth, int iHeight) 1819 1730 { -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBuffer.h
r70870 r71056 121 121 void setScalingOptimizationType(ScalingOptimizationType type); 122 122 123 #ifdef VBOX_WS_MAC124 /** Returns HiDPI frame-buffer optimization type. */125 HiDPIOptimizationType hiDPIOptimizationType() const;126 /** Defines HiDPI frame-buffer optimization type: */127 void setHiDPIOptimizationType(HiDPIOptimizationType type);128 #endif129 130 123 /** Handles frame-buffer notify-change-event. */ 131 124 void handleNotifyChange(int iWidth, int iHeight); -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.cpp
r70870 r71056 540 540 } 541 541 542 #ifdef VBOX_WS_MAC543 void UIMachineView::sltHandleHiDPIOptimizationChange(const QString &strMachineID)544 {545 /* Skip unrelated machine IDs: */546 if (strMachineID != vboxGlobal().managedVMUuid())547 return;548 549 /* Take the HiDPI-optimization type into account: */550 frameBuffer()->setHiDPIOptimizationType(gEDataManager->hiDPIOptimizationType(vboxGlobal().managedVMUuid()));551 552 /* Update viewport: */553 viewport()->update();554 }555 #endif /* VBOX_WS_MAC */556 557 542 void UIMachineView::sltHandleUnscaledHiDPIOutputModeChange(const QString &strMachineID) 558 543 { … … 719 704 #endif /* !VBOX_WITH_VIDEOHWACCEL */ 720 705 721 #ifdef VBOX_WS_MAC722 /* Take HiDPI optimization type into account: */723 m_pFrameBuffer->setHiDPIOptimizationType(gEDataManager->hiDPIOptimizationType(vboxGlobal().managedVMUuid()));724 #endif725 726 706 /* Take scaling optimization type into account: */ 727 707 m_pFrameBuffer->setScalingOptimizationType(gEDataManager->scalingOptimizationType(vboxGlobal().managedVMUuid())); … … 850 830 connect(gEDataManager, SIGNAL(sigScalingOptimizationTypeChange(const QString&)), 851 831 this, SLOT(sltHandleScalingOptimizationChange(const QString&))); 852 #ifdef VBOX_WS_MAC853 /* HiDPI-optimization change: */854 connect(gEDataManager, SIGNAL(sigHiDPIOptimizationTypeChange(const QString&)),855 this, SLOT(sltHandleHiDPIOptimizationChange(const QString&)));856 #endif857 832 /* Unscaled HiDPI output mode change: */ 858 833 connect(gEDataManager, SIGNAL(sigUnscaledHiDPIOutputModeChange(const QString&)), -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.h
r70870 r71056 131 131 /** Handles the scaling-optimization change. */ 132 132 void sltHandleScalingOptimizationChange(const QString &strMachineID); 133 134 #ifdef VBOX_WS_MAC135 /** Handles the HiDPI-optimization change. */136 void sltHandleHiDPIOptimizationChange(const QString &strMachineID);137 #endif138 133 139 134 /** Handles the unscaled HiDPI output mode change. */
Note:
See TracChangeset
for help on using the changeset viewer.

