[haiku-commits] r39143 - haiku/branches/developer/aldeck/tracker_layout/src/kits/tracker

  • From: alex@xxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 25 Oct 2010 16:48:26 +0200 (CEST)

Author: aldeck
Date: 2010-10-25 16:48:26 +0200 (Mon, 25 Oct 2010)
New Revision: 39143
Changeset: http://dev.haiku-os.org/changeset/39143

Modified:
   
haiku/branches/developer/aldeck/tracker_layout/src/kits/tracker/IconButton.cpp
   haiku/branches/developer/aldeck/tracker_layout/src/kits/tracker/Navigator.cpp
Log:
* Constrain clipping region to avoid drawing on the text field
* Remove some (be_control_look != NULL) checks


Modified: 
haiku/branches/developer/aldeck/tracker_layout/src/kits/tracker/IconButton.cpp
===================================================================
--- 
haiku/branches/developer/aldeck/tracker_layout/src/kits/tracker/IconButton.cpp  
    2010-10-25 14:46:26 UTC (rev 39142)
+++ 
haiku/branches/developer/aldeck/tracker_layout/src/kits/tracker/IconButton.cpp  
    2010-10-25 14:48:26 UTC (rev 39143)
@@ -49,7 +49,6 @@
        fTargetCache(target)
 {
        SetLowColor(ui_color(B_PANEL_BACKGROUND_COLOR));
-       //SetViewColor(B_TRANSPARENT_32_BIT);
 }
 
 // destructor
@@ -96,125 +95,37 @@
 
        BRect r(Bounds());
 
-       if (be_control_look != NULL) {
-               uint32 flags = 0;
-               BBitmap* bitmap = fNormalBitmap;
-               if (!IsEnabled()) {
-                       flags |= BControlLook::B_DISABLED;
-                       bitmap = fDisabledBitmap;
-               }
-               if (_HasFlags(STATE_PRESSED) || _HasFlags(STATE_FORCE_PRESSED))
-                       flags |= BControlLook::B_ACTIVATED;
-
-               if (DrawBorder()) {
-                       be_control_look->DrawButtonFrame(this, r, area, 
background,
-                               background, flags);
-                       be_control_look->DrawButtonBackground(this, r, area, 
background,
-                               flags);
-               } /*else {
-                       SetHighColor(background);
-                       FillRect(r);
-               }*/
-
-               if (bitmap && bitmap->IsValid()) {
-                       float x = r.left + floorf((r.Width()
-                               - bitmap->Bounds().Width()) / 2.0 + 0.5);
-                       float y = r.top + floorf((r.Height()
-                               - bitmap->Bounds().Height()) / 2.0 + 0.5);
-                       BPoint point(x, y);
-                       if (_HasFlags(STATE_PRESSED) || 
_HasFlags(STATE_FORCE_PRESSED))
-                               point += BPoint(1.0, 1.0);
-                       if (bitmap->ColorSpace() == B_RGBA32
-                               || bitmap->ColorSpace() == B_RGBA32_BIG) {
-                               SetDrawingMode(B_OP_ALPHA);
-                               SetBlendingMode(B_PIXEL_ALPHA, B_ALPHA_OVERLAY);
-                       }
-                       DrawBitmap(bitmap, point);
-               }
-               return;
-       }
-
-       rgb_color lightShadow, shadow, darkShadow, light;
+       uint32 flags = 0;
        BBitmap* bitmap = fNormalBitmap;
-       // adjust colors and bitmap according to flags
-       if (IsEnabled()) {
-               lightShadow = tint_color(background, B_DARKEN_1_TINT);
-               shadow = tint_color(background, B_DARKEN_2_TINT);
-               darkShadow = tint_color(background, B_DARKEN_4_TINT);
-               light = tint_color(background, B_LIGHTEN_MAX_TINT);
-               SetHighColor(0, 0, 0, 255);
-       } else {
-               lightShadow = tint_color(background, 1.11);
-               shadow = tint_color(background, B_DARKEN_1_TINT);
-               darkShadow = tint_color(background, B_DARKEN_2_TINT);
-               light = tint_color(background, B_LIGHTEN_2_TINT);
+       if (!IsEnabled()) {
+               flags |= BControlLook::B_DISABLED;
                bitmap = fDisabledBitmap;
-               SetHighColor(tint_color(background, B_DISABLED_LABEL_TINT));
        }
-       if (_HasFlags(STATE_PRESSED) || _HasFlags(STATE_FORCE_PRESSED)) {
-               if (IsEnabled())  {
-//                     background = tint_color(background, B_DARKEN_2_TINT);
-//                     background = tint_color(background, B_LIGHTEN_1_TINT);
-                       background = tint_color(background, B_DARKEN_1_TINT);
-                       bitmap = fClickedBitmap;
-               } else {
-//                     background = tint_color(background, B_DARKEN_1_TINT);
-//                     background = tint_color(background, (B_NO_TINT + 
B_LIGHTEN_1_TINT) / 2.0);
-                       background = tint_color(background, (B_NO_TINT + 
B_DARKEN_1_TINT) / 2.0);
-                       bitmap = fDisabledClickedBitmap;
-               }
-               // background
-               SetLowColor(background);
-               r.InsetBy(2.0, 2.0);
-               StrokeLine(r.LeftBottom(), r.LeftTop(), B_SOLID_LOW);
-               StrokeLine(r.LeftTop(), r.RightTop(), B_SOLID_LOW);
-               r.InsetBy(-2.0, -2.0);
-       }
-       // draw frame only if tracking
+       if (_HasFlags(STATE_PRESSED) || _HasFlags(STATE_FORCE_PRESSED))
+               flags |= BControlLook::B_ACTIVATED;
+
        if (DrawBorder()) {
-               if (_HasFlags(STATE_PRESSED) || _HasFlags(STATE_FORCE_PRESSED))
-                       DrawPressedBorder(r, background, shadow, darkShadow, 
lightShadow, light);
-               else
-                       DrawNormalBorder(r, background, shadow, darkShadow, 
lightShadow, light);
-               r.InsetBy(2.0, 2.0);
-       } else
-               _DrawFrame(r, background, background, background, background);
-       float width = Bounds().Width();
-       float height = Bounds().Height();
-       // bitmap
-       BRegion originalClippingRegion;
+               be_control_look->DrawButtonFrame(this, r, area, background,
+                       background, flags);
+               be_control_look->DrawButtonBackground(this, r, area, background,
+                       flags);
+       }
+
        if (bitmap && bitmap->IsValid()) {
-               float x = floorf((width - bitmap->Bounds().Width()) / 2.0 + 
0.5);
-               float y = floorf((height - bitmap->Bounds().Height()) / 2.0 + 
0.5);
+               float x = r.left + floorf((r.Width()
+                       - bitmap->Bounds().Width()) / 2.0 + 0.5);
+               float y = r.top + floorf((r.Height()
+                       - bitmap->Bounds().Height()) / 2.0 + 0.5);
                BPoint point(x, y);
                if (_HasFlags(STATE_PRESSED) || _HasFlags(STATE_FORCE_PRESSED))
                        point += BPoint(1.0, 1.0);
-               if (bitmap->ColorSpace() == B_RGBA32 || bitmap->ColorSpace() == 
B_RGBA32_BIG) {
-                       FillRect(r, B_SOLID_LOW);
+               if (bitmap->ColorSpace() == B_RGBA32
+                       || bitmap->ColorSpace() == B_RGBA32_BIG) {
                        SetDrawingMode(B_OP_ALPHA);
                        SetBlendingMode(B_PIXEL_ALPHA, B_ALPHA_OVERLAY);
                }
                DrawBitmap(bitmap, point);
-               // constrain clipping region
-               BRegion region= originalClippingRegion;
-               GetClippingRegion(&region);
-               region.Exclude(bitmap->Bounds().OffsetByCopy(point));
-               ConstrainClippingRegion(&region);
        }
-       // background
-       SetDrawingMode(B_OP_COPY);
-       FillRect(r, B_SOLID_LOW);
-       ConstrainClippingRegion(NULL);
-       // label
-       if (fLabel.CountChars() > 0) {
-               SetDrawingMode(B_OP_COPY);
-               font_height fh;
-               GetFontHeight(&fh);
-               float y = Bounds().bottom - 4.0;
-               y -= fh.descent;
-               float x = (width - StringWidth(fLabel.String())) / 2.0;
-               DrawString(fLabel.String(), BPoint(x, y));
-       }
 }
 
 // MouseDown

Modified: 
haiku/branches/developer/aldeck/tracker_layout/src/kits/tracker/Navigator.cpp
===================================================================
--- 
haiku/branches/developer/aldeck/tracker_layout/src/kits/tracker/Navigator.cpp   
    2010-10-25 14:46:26 UTC (rev 39142)
+++ 
haiku/branches/developer/aldeck/tracker_layout/src/kits/tracker/Navigator.cpp   
    2010-10-25 14:48:26 UTC (rev 39143)
@@ -41,8 +41,8 @@
 #include "Tracker.h"
 
 #include <ControlLook.h>
-#include <GroupLayout.h>
 #include <GroupLayoutBuilder.h>
+#include <Region.h>
 #include <Window.h>
 #include <Picture.h>
 #include <TextControl.h>
@@ -115,18 +115,26 @@
 }
 
 void 
-BNavigator::Draw(BRect)
+BNavigator::Draw(BRect updateRect)
 {
+       BRegion clipper(updateRect);
+       clipper.Exclude(fLocation->Frame());
+       ConstrainClippingRegion(&clipper);
+               // workaround, since we use B_DRAW_ON_CHILDREN to draw the 
gradient
+               // also on the background of the buttons we need to avoid the 
fLocation
+               // textfield as it doesn't blank some parts of itself properly.
+               // TODO: either find a way to avoid using draw on children and 
achieve
+               // the same effect and also look if we could do something in 
BTextField
+
        BRect bounds(Bounds());                 
-       if (be_control_look != NULL) {
-               rgb_color base = ui_color(B_PANEL_BACKGROUND_COLOR);
-               SetHighColor(tint_color(base, B_DARKEN_2_TINT));
-               StrokeLine(bounds.LeftBottom(), bounds.RightBottom());
-               bounds.bottom--;
 
-               be_control_look->DrawButtonBackground(this, bounds, bounds, 
base, 0,
-                       BControlLook::B_TOP_BORDER | 
BControlLook::B_BOTTOM_BORDER);
-       }
+       rgb_color base = ui_color(B_PANEL_BACKGROUND_COLOR);
+       SetHighColor(tint_color(base, B_DARKEN_2_TINT));
+       StrokeLine(bounds.LeftBottom(), bounds.RightBottom());
+       bounds.bottom--;
+
+       be_control_look->DrawButtonBackground(this, bounds, bounds, base, 0,
+               BControlLook::B_TOP_BORDER | BControlLook::B_BOTTOM_BORDER);
 }
 
 void 


Other related posts:

  • » [haiku-commits] r39143 - haiku/branches/developer/aldeck/tracker_layout/src/kits/tracker - alex