Changeset 47058 in vbox for trunk/src/VBox
- Timestamp:
- Jul 9, 2013 4:18:57 PM (12 years ago)
- svn:sync-xref-src-repo-rev:
- 87102
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBufferQImage.cpp
r46364 r47058 226 226 QPainter painter(m_pMachineView->viewport()); 227 227 228 /* Clear paint rectangle first: */ 229 painter.setCompositionMode(QPainter::CompositionMode_Clear); 230 painter.eraseRect(paintRect); 231 painter.setCompositionMode(QPainter::CompositionMode_SourceOver); 232 233 /* Manually clip paint rectangle using visible-region: */ 228 /* Determine the region to erase: */ 234 229 lock(); 235 QRegion visiblePaintRegion = m_syncVisibleRegion & paintRect;230 QRegion regionToErase = (QRegion)paintRect - m_syncVisibleRegion; 236 231 unlock(); 237 238 /* Repaint all the rectangles of visible-region: */ 239 foreach (const QRect &rect, visiblePaintRegion.rects()) 240 { 232 if (!regionToErase.isEmpty()) 233 { 234 /* Optimize composition-mode: */ 235 painter.setCompositionMode(QPainter::CompositionMode_Clear); 236 /* Erase required region, slowly, rectangle-by-rectangle: */ 237 foreach (const QRect &rect, regionToErase.rects()) 238 painter.eraseRect(rect); 239 /* Restore composition-mode: */ 240 painter.setCompositionMode(QPainter::CompositionMode_SourceOver); 241 } 242 243 /* Determine the region to paint: */ 244 lock(); 245 QRegion regionToPaint = (QRegion)paintRect & m_syncVisibleRegion; 246 unlock(); 247 if (!regionToPaint.isEmpty()) 248 { 249 /* Paint required region, slowly, rectangle-by-rectangle: */ 250 foreach (const QRect &rect, regionToPaint.rects()) 251 { 241 252 #ifdef Q_WS_WIN 242 /* Replace translucent background with black one,243 * that is necessary for window with Qt::WA_TranslucentBackground: */244 painter.setCompositionMode(QPainter::CompositionMode_Source);245 painter.fillRect(rect, QColor(Qt::black));246 painter.setCompositionMode(QPainter::CompositionMode_SourceAtop);253 /* Replace translucent background with black one, 254 * that is necessary for window with Qt::WA_TranslucentBackground: */ 255 painter.setCompositionMode(QPainter::CompositionMode_Source); 256 painter.fillRect(rect, QColor(Qt::black)); 257 painter.setCompositionMode(QPainter::CompositionMode_SourceAtop); 247 258 #endif /* Q_WS_WIN */ 248 259 249 /* Draw image rectangle depending on rectangle width: */ 250 if ((ulong)rect.width() < m_width * 2 / 3) 251 drawImageRectNarrow(painter, m_img, 252 rect, m_pMachineView->contentsX(), m_pMachineView->contentsY()); 253 else 254 drawImageRectWide(painter, m_img, 255 rect, m_pMachineView->contentsX(), m_pMachineView->contentsY()); 260 /* Draw image rectangle depending on rectangle width: */ 261 if ((ulong)rect.width() < m_width * 2 / 3) 262 drawImageRectNarrow(painter, m_img, 263 rect, m_pMachineView->contentsX(), m_pMachineView->contentsY()); 264 else 265 drawImageRectWide(painter, m_img, 266 rect, m_pMachineView->contentsX(), m_pMachineView->contentsY()); 267 } 256 268 } 257 269 }
Note:
See TracChangeset
for help on using the changeset viewer.