void TaskbarThumbnailEffect::paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data) { effects->paintWindow(w, mask, region, data); // paint window first if (thumbnails.contains(w)) { // paint thumbnails on it int mask = PAINT_WINDOW_TRANSFORMED; if (data.opacity() == 1.0) mask |= PAINT_WINDOW_OPAQUE; else mask |= PAINT_WINDOW_TRANSLUCENT; mask |= PAINT_WINDOW_LANCZOS; foreach (const Data & thumb, thumbnails.values(w)) { EffectWindow* thumbw = effects->findWindow(thumb.window); if (thumbw == NULL) continue; WindowPaintData thumbData(thumbw); thumbData.multiplyOpacity(data.opacity()); QRect r, thumbRect(thumb.rect); thumbRect.translate(w->pos() + QPoint(data.xTranslation(), data.yTranslation())); thumbRect.setSize(QSize(thumbRect.width() * data.xScale(), thumbRect.height() * data.yScale())); // QSize has no vector multiplicator... :-( if (effects->isOpenGLCompositing()) { if (data.shader) { thumbData.shader = data.shader; } } // if ( effects->compositingType() == KWin::OpenGLCompositing ) setPositionTransformations(thumbData, r, thumbw, thumbRect, Qt::KeepAspectRatio); effects->drawWindow(thumbw, mask, r, thumbData); } }
void ThumbnailAsideEffect::paintScreen( int mask, QRegion region, ScreenPaintData& data ) { effects->paintScreen( mask, region, data ); foreach( const Data& d, windows ) { if( region.contains( d.rect )) { WindowPaintData data( d.window ); data.opacity = opacity; QRect region; setPositionTransformations( data, region, d.window, d.rect, Qt::KeepAspectRatio ); effects->drawWindow( d.window, PAINT_WINDOW_OPAQUE | PAINT_WINDOW_TRANSLUCENT | PAINT_WINDOW_TRANSFORMED, region, data ); } } }