[haiku-commits] r39637 - in haiku/trunk/src: add-ons/decorators/SATDecorator servers/app

  • From: ingo_weinhold@xxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 26 Nov 2010 00:23:09 +0100 (CET)

Author: bonefish
Date: 2010-11-26 00:23:08 +0100 (Fri, 26 Nov 2010)
New Revision: 39637
Changeset: http://dev.haiku-os.org/changeset/39637

Modified:
   haiku/trunk/src/add-ons/decorators/SATDecorator/SATDecorator.cpp
   haiku/trunk/src/servers/app/DefaultDecorator.cpp
   haiku/trunk/src/servers/app/DefaultDecorator.h
Log:
DefaultDecorator(/SATDecorator):
* Use a separate color array for the buttons, instead of using that for the
  tab.
* _DrawBlendedRect(): No longer gets the focus flag, but gets a color array
  instead.
* _GetBitmapForButton(): Made non-static and removed the "focus" and "object"
  parameters.


Modified: haiku/trunk/src/add-ons/decorators/SATDecorator/SATDecorator.cpp
===================================================================
--- haiku/trunk/src/add-ons/decorators/SATDecorator/SATDecorator.cpp    
2010-11-25 22:42:21 UTC (rev 39636)
+++ haiku/trunk/src/add-ons/decorators/SATDecorator/SATDecorator.cpp    
2010-11-25 23:23:08 UTC (rev 39637)
@@ -470,6 +470,17 @@
                        _colors[COLOR_TAB_TEXT] = kFocusTextColor;
                        break;
 
+               case COMPONENT_CLOSE_BUTTON:
+               case COMPONENT_ZOOM_BUTTON:
+                       if (!fTabHighlighted) {
+                               DefaultDecorator::GetComponentColors(component, 
_colors);
+                               return;
+                       }
+
+                       _colors[COLOR_BUTTON] = kHighlightTabColor;
+                       _colors[COLOR_BUTTON_LIGHT] = kHighlightTabColorLight;
+                       break;
+
                case COMPONENT_LEFT_BORDER:
                case COMPONENT_RIGHT_BORDER:
                case COMPONENT_TOP_BORDER:

Modified: haiku/trunk/src/servers/app/DefaultDecorator.cpp
===================================================================
--- haiku/trunk/src/servers/app/DefaultDecorator.cpp    2010-11-25 22:42:21 UTC 
(rev 39636)
+++ haiku/trunk/src/servers/app/DefaultDecorator.cpp    2010-11-25 23:23:08 UTC 
(rev 39637)
@@ -726,7 +726,7 @@
        ServerBitmap* bitmap = fCloseBitmaps[index];
        if (bitmap == NULL) {
                bitmap = _GetBitmapForButton(COMPONENT_CLOSE_BUTTON, GetClose(),
-                       fButtonFocus, rect.IntegerWidth(), 
rect.IntegerHeight(), this);
+                       rect.IntegerWidth(), rect.IntegerHeight());
                fCloseBitmaps[index] = bitmap;
        }
 
@@ -782,7 +782,7 @@
        ServerBitmap* bitmap = fZoomBitmaps[index];
        if (bitmap == NULL) {
                bitmap = _GetBitmapForButton(COMPONENT_ZOOM_BUTTON, GetZoom(),
-                       fButtonFocus, rect.IntegerWidth(), 
rect.IntegerHeight(), this);
+                       rect.IntegerWidth(), rect.IntegerHeight());
                fZoomBitmaps[index] = bitmap;
        }
 
@@ -1167,6 +1167,17 @@
                        }
                        break;
 
+               case COMPONENT_CLOSE_BUTTON:
+               case COMPONENT_ZOOM_BUTTON:
+                       if (fButtonFocus) {
+                               _colors[COLOR_BUTTON] = kFocusTabColor;
+                               _colors[COLOR_BUTTON_LIGHT] = 
kFocusTabColorLight;
+                       } else {
+                               _colors[COLOR_BUTTON] = kNonFocusTabColor;
+                               _colors[COLOR_BUTTON_LIGHT] = 
kNonFocusTabColorLight;
+                       }
+                       break;
+
                case COMPONENT_LEFT_BORDER:
                case COMPONENT_RIGHT_BORDER:
                case COMPONENT_TOP_BORDER:
@@ -1224,25 +1235,21 @@
 
 
 /*!    \brief Draws a framed rectangle with a gradient.
-       \param down The rectangle should be drawn recessed or not
+       \param down The rectangle should be drawn recessed or not.
+       \param colors A button color array with the colors to be used.
 */
 void
 DefaultDecorator::_DrawBlendedRect(DrawingEngine* engine, BRect rect,
-       bool down, bool focus)
+       bool down, const ComponentColors& colors)
 {
-       ComponentColors colors;
-       GetComponentColors(COMPONENT_TAB, colors);
-
        // figure out which colors to use
        rgb_color startColor, endColor;
-       rgb_color tabColor = focus ? kFocusTabColor : kNonFocusTabColor;
-               // TODO: Use GetComponentColors() only!
        if (down) {
-               startColor = tint_color(tabColor, B_DARKEN_1_TINT);
-               endColor = colors[COLOR_TAB_LIGHT];
+               startColor = tint_color(colors[COLOR_BUTTON], B_DARKEN_1_TINT);
+               endColor = colors[COLOR_BUTTON_LIGHT];
        } else {
-               startColor = tint_color(tabColor, B_LIGHTEN_MAX_TINT);
-               endColor = tabColor;
+               startColor = tint_color(colors[COLOR_BUTTON], 
B_LIGHTEN_MAX_TINT);
+               endColor = colors[COLOR_BUTTON];
        }
 
        // fill
@@ -1257,7 +1264,7 @@
 
        // outline
        rect.InsetBy(-1, -1);
-       engine->StrokeRect(rect, tint_color(tabColor, B_DARKEN_2_TINT));
+       engine->StrokeRect(rect, tint_color(colors[COLOR_BUTTON], 
B_DARKEN_2_TINT));
 }
 
 
@@ -1343,24 +1350,27 @@
 
 
 ServerBitmap*
-DefaultDecorator::_GetBitmapForButton(Component item, bool down, bool focus,
-       int32 width, int32 height, DefaultDecorator* object)
+DefaultDecorator::_GetBitmapForButton(Component item, bool down, int32 width,
+       int32 height)
 {
        // TODO: the list of shared bitmaps is never freed
        struct decorator_bitmap {
                Component                       item;
                bool                            down;
-               bool                            focus;
                int32                           width;
                int32                           height;
-               rgb_color                       focusColor;
-               rgb_color                       nonFocusColor;
+               rgb_color                       baseColor;
+               rgb_color                       lightColor;
                UtilityBitmap*          bitmap;
                decorator_bitmap*       next;
        };
 
        static BLocker sBitmapListLock("decorator lock", true);
        static decorator_bitmap* sBitmapList = NULL;
+
+       ComponentColors colors;
+       GetComponentColors(item, colors);
+
        BAutolock locker(sBitmapListLock);
 
        // search our list for a matching bitmap
@@ -1368,10 +1378,9 @@
        decorator_bitmap* current = sBitmapList;
        while (current) {
                if (current->item == item && current->down == down
-                       && current->focus == focus && current->width == width
-                       && current->height == height
-                       && current->focusColor == object->kFocusTabColor
-                       && current->nonFocusColor == object->kNonFocusTabColor) 
{
+                       && current->width == width && current->height == height
+                       && current->baseColor == colors[COLOR_BUTTON]
+                       && current->lightColor == colors[COLOR_BUTTON_LIGHT]) {
                        return current->bitmap;
                }
 
@@ -1389,12 +1398,12 @@
 
        BRect rect(0, 0, width - 1, height - 1);
 
-       STRACE(("DefaultDecorator creating bitmap for %s %sfocus %s at size 
%ldx%ld\n",
-               item == COMPONENT_CLOSE_BUTTON ? "close" : "zoom", focus ? "" : 
"non-",
+       STRACE(("DefaultDecorator creating bitmap for %s %s at size %ldx%ld\n",
+               item == COMPONENT_CLOSE_BUTTON ? "close" : "zoom",
                down ? "down" : "up", width, height));
        switch (item) {
                case COMPONENT_CLOSE_BUTTON:
-                       object->_DrawBlendedRect(sBitmapDrawingEngine, rect, 
down, focus);
+                       _DrawBlendedRect(sBitmapDrawingEngine, rect, down, 
colors);
                        break;
 
                case COMPONENT_ZOOM_BUTTON:
@@ -1406,15 +1415,13 @@
                        BRect zoomRect(rect);
                        zoomRect.left += inset;
                        zoomRect.top += inset;
-                       object->_DrawBlendedRect(sBitmapDrawingEngine, zoomRect,
-                               down, focus);
+                       _DrawBlendedRect(sBitmapDrawingEngine, zoomRect, down, 
colors);
 
                        inset = floorf(width / 2.1);
                        zoomRect = rect;
                        zoomRect.right -= inset;
                        zoomRect.bottom -= inset;
-                       object->_DrawBlendedRect(sBitmapDrawingEngine, zoomRect,
-                               down, focus);
+                       _DrawBlendedRect(sBitmapDrawingEngine, zoomRect, down, 
colors);
                        break;
                }
 
@@ -1436,12 +1443,11 @@
 
        entry->item = item;
        entry->down = down;
-       entry->focus = focus;
        entry->width = width;
        entry->height = height;
        entry->bitmap = bitmap;
-       entry->focusColor = object->kFocusTabColor;
-       entry->nonFocusColor = object->kNonFocusTabColor;
+       entry->baseColor = colors[COLOR_BUTTON];
+       entry->lightColor = colors[COLOR_BUTTON_LIGHT];
        entry->next = sBitmapList;
        sBitmapList = entry;
        return bitmap;

Modified: haiku/trunk/src/servers/app/DefaultDecorator.h
===================================================================
--- haiku/trunk/src/servers/app/DefaultDecorator.h      2010-11-25 22:42:21 UTC 
(rev 39636)
+++ haiku/trunk/src/servers/app/DefaultDecorator.h      2010-11-25 23:23:08 UTC 
(rev 39637)
@@ -68,6 +68,11 @@
                                COLOR_TAB_TEXT                  = 6
                        };
 
+                       enum {
+                               COLOR_BUTTON                    = 0,
+                               COLOR_BUTTON_LIGHT              = 1
+                       };
+
                        typedef rgb_color ComponentColors[7];
 
 protected:
@@ -118,12 +123,12 @@
                        void                            
_DrawButtonBitmap(ServerBitmap* bitmap,
                                                                        BRect 
rect);
                        void                            
_DrawBlendedRect(DrawingEngine *engine,
-                                                                       BRect 
rect, bool down, bool focus);
+                                                                       BRect 
rect, bool down,
+                                                                       const 
ComponentColors& colors);
                        void                            _LayoutTabItems(const 
BRect& tabRect);
                        void                            _InvalidateBitmaps();
-       static  ServerBitmap*           _GetBitmapForButton(Component item, 
bool down,
-                                                                       bool 
focus, int32 width, int32 height,
-                                                                       
DefaultDecorator* object);
+                       ServerBitmap*           _GetBitmapForButton(Component 
item, bool down,
+                                                                       int32 
width, int32 height);
 
 protected:
        static  const rgb_color         kFrameColors[4];


Other related posts:

  • » [haiku-commits] r39637 - in haiku/trunk/src: add-ons/decorators/SATDecorator servers/app - ingo_weinhold