From 358b3c8e76e6a86c099a6d87753927d7f429537e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Thu, 14 Sep 2006 18:13:11 +0000 Subject: [PATCH] * don't mess so much with the drawing and blending mode when drawing icons, most importantly, don't switch from compositing to pixel alpha, this fixes the drag bitmap generation, now it looks beautiful git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18846 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/tracker/IconCache.cpp | 46 +++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/src/kits/tracker/IconCache.cpp b/src/kits/tracker/IconCache.cpp index f5e58bc953..a0d811741c 100644 --- a/src/kits/tracker/IconCache.cpp +++ b/src/kits/tracker/IconCache.cpp @@ -1508,9 +1508,13 @@ SharedCacheEntry::Draw(BView* view, BPoint where, IconDrawMode mode, icon_size s BBitmap* bitmap = IconForMode(mode, size); ASSERT(bitmap); + drawing_mode oldMode = view->DrawingMode(); + if (bitmap->ColorSpace() == B_RGBA32) { - view->SetDrawingMode(B_OP_ALPHA); - view->SetBlendingMode(B_PIXEL_ALPHA, B_ALPHA_OVERLAY); + if (oldMode != B_OP_ALPHA) { + view->SetDrawingMode(B_OP_ALPHA); + view->SetBlendingMode(B_PIXEL_ALPHA, B_ALPHA_OVERLAY); + } } else { view->SetDrawingMode(B_OP_OVER); } @@ -1519,6 +1523,8 @@ SharedCacheEntry::Draw(BView* view, BPoint where, IconDrawMode mode, icon_size s view->DrawBitmapAsync(bitmap, where); else view->DrawBitmap(bitmap, where); + + view->SetDrawingMode(oldMode); } @@ -1530,13 +1536,13 @@ SharedCacheEntry::Draw(BView *view, BPoint where, IconDrawMode mode, icon_size s if (!bitmap) return; - if (bitmap->ColorSpace() == B_RGBA32) { - view->SetDrawingMode(B_OP_ALPHA); - view->SetBlendingMode(B_PIXEL_ALPHA, B_ALPHA_OVERLAY); - } else { - view->SetDrawingMode(B_OP_OVER); - } - +// if (bitmap->ColorSpace() == B_RGBA32) { +// view->SetDrawingMode(B_OP_ALPHA); +// view->SetBlendingMode(B_PIXEL_ALPHA, B_ALPHA_OVERLAY); +// } else { +// view->SetDrawingMode(B_OP_OVER); +// } +// (blitFunc)(view, where, bitmap, passThruState); } @@ -1617,9 +1623,13 @@ NodeCacheEntry::Draw(BView *view, BPoint where, IconDrawMode mode, icon_size siz if (!bitmap) return; + drawing_mode oldMode = view->DrawingMode(); + if (bitmap->ColorSpace() == B_RGBA32) { - view->SetDrawingMode(B_OP_ALPHA); - view->SetBlendingMode(B_PIXEL_ALPHA, B_ALPHA_OVERLAY); + if (oldMode != B_OP_ALPHA) { + view->SetDrawingMode(B_OP_ALPHA); + view->SetBlendingMode(B_PIXEL_ALPHA, B_ALPHA_OVERLAY); + } } else { view->SetDrawingMode(B_OP_OVER); } @@ -1630,6 +1640,8 @@ NodeCacheEntry::Draw(BView *view, BPoint where, IconDrawMode mode, icon_size siz view->DrawBitmapAsync(bitmap, where); } else view->DrawBitmap(bitmap, where); + + view->SetDrawingMode(oldMode); } @@ -1641,12 +1653,12 @@ NodeCacheEntry::Draw(BView *view, BPoint where, IconDrawMode mode, icon_size siz if (!bitmap) return; - if (bitmap->ColorSpace() == B_RGBA32) { - view->SetDrawingMode(B_OP_ALPHA); - view->SetBlendingMode(B_PIXEL_ALPHA, B_ALPHA_OVERLAY); - } else { - view->SetDrawingMode(B_OP_OVER); - } +// if (bitmap->ColorSpace() == B_RGBA32) { +// view->SetDrawingMode(B_OP_ALPHA); +// view->SetBlendingMode(B_PIXEL_ALPHA, B_ALPHA_OVERLAY); +// } else { +// view->SetDrawingMode(B_OP_OVER); +// } (blitFunc)(view, where, bitmap, passThruState); }