Appearance: Backport changes from Gravity back to Appearance

Make the square a rectangle with Golden Ratio
Use Set*UIColor() instead of Set*Color(ui_color())
Use B_CONTROL_BORDER_COLOR instead of hardcoding
Sort out copyright -- Haiku, Inc. didn't exist before 2003
Use variable width spacing based on font size from ControlLook
Removed unnecessary #includes

Did a little pixel pushing to make sure that everything is spaced
nicely and to ensure everything lies on integer pixel boundries.
This commit is contained in:
John Scipione
2016-04-12 20:54:43 -07:00
parent d1d1535a73
commit a80db836bf
4 changed files with 30 additions and 19 deletions
@@ -51,12 +51,12 @@ ColorItem::DrawItem(BView* owner, BRect frame, bool complete)
owner->FillRect(frame); owner->FillRect(frame);
} }
float spacer = floorf(be_control_look->DefaultItemSpacing() / 2); float spacer = ceilf(be_control_look->DefaultItemSpacing() / 2);
BRect colorRect(frame); BRect colorRect(frame);
colorRect.InsetBy(2.0f, 2.0f); colorRect.InsetBy(2.0f, 2.0f);
colorRect.left += spacer; colorRect.left += spacer;
colorRect.right = colorRect.left + colorRect.Height() * M_PHI; colorRect.right = colorRect.left + floorf(colorRect.Height() * M_PHI);
// draw the colored box // draw the colored box
owner->SetHighColor(fColor); owner->SetHighColor(fColor);
@@ -50,12 +50,12 @@ RainbowItem::DrawItem(BView* owner, BRect frame, bool complete)
owner->FillRect(frame); owner->FillRect(frame);
} }
float spacer = floorf(be_control_look->DefaultItemSpacing() / 2); float spacer = ceilf(be_control_look->DefaultItemSpacing() / 2);
BRect colorRect(frame); BRect colorRect(frame);
colorRect.InsetBy(2.0f, 2.0f); colorRect.InsetBy(2.0f, 2.0f);
colorRect.left += spacer; colorRect.left += spacer;
colorRect.right = colorRect.left + colorRect.Height() * M_PHI; colorRect.right = colorRect.left + floorf(colorRect.Height() * M_PHI);
// draw the rainbow // draw the rainbow
BGradientLinear gradient; BGradientLinear gradient;
+23 -12
View File
@@ -1,21 +1,32 @@
/* /*
* Copyright 2002-2013 Haiku, Inc. All rights reserved. * Copyright 2001-2002 OpenBeOS
* Copyright 2003-2016 Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License. * Distributed under the terms of the MIT License.
* *
* Authors: * Authors:
* DarkWyrm, [email protected] * DarkWyrm, [email protected]
* Rene Gollent, [email protected] * Rene Gollent, [email protected]
* Ryan Leavengood, [email protected] * Ryan Leavengood, [email protected]
* John Scipione, [email protected]
*/ */
#include "ColorWhichItem.h" #include "ColorWhichItem.h"
#include <stdio.h> #include <math.h>
#include <ControlLook.h>
// golden ratio
#ifdef M_PHI
# undef M_PHI
#endif
#define M_PHI 1.61803398874989484820
ColorWhichItem::ColorWhichItem(const char* text, color_which which, ColorWhichItem::ColorWhichItem(const char* text, color_which which,
rgb_color color) rgb_color color)
: :
BStringItem(text, 0, false), BStringItem(text, 0, false),
fColorWhich(which), fColorWhich(which),
@@ -32,7 +43,7 @@ ColorWhichItem::DrawItem(BView* owner, BRect frame, bool complete)
if (IsSelected() || complete) { if (IsSelected() || complete) {
if (IsSelected()) { if (IsSelected()) {
owner->SetHighColor(ui_color(B_LIST_SELECTED_BACKGROUND_COLOR)); owner->SetHighUIColor(B_LIST_SELECTED_BACKGROUND_COLOR);
owner->SetLowColor(owner->HighColor()); owner->SetLowColor(owner->HighColor());
} else } else
owner->SetHighColor(lowColor); owner->SetHighColor(lowColor);
@@ -40,18 +51,18 @@ ColorWhichItem::DrawItem(BView* owner, BRect frame, bool complete)
owner->FillRect(frame); owner->FillRect(frame);
} }
rgb_color border = (rgb_color){ 184, 184, 184, 255 }; float spacer = ceilf(be_control_look->DefaultItemSpacing() / 2);
BRect colorRect(frame); BRect colorRect(frame);
colorRect.InsetBy(2, 2); colorRect.InsetBy(2.0f, 2.0f);
colorRect.right = colorRect.left + colorRect.Height(); colorRect.left += spacer;
colorRect.right = colorRect.left + floorf(colorRect.Height() * M_PHI);
owner->SetHighColor(fColor); owner->SetHighColor(fColor);
owner->FillRect(colorRect); owner->FillRect(colorRect);
owner->SetHighColor(border); owner->SetHighUIColor(B_CONTROL_BORDER_COLOR);
owner->StrokeRect(colorRect); owner->StrokeRect(colorRect);
owner->MovePenTo(frame.left + colorRect.Width() + 8, frame.top owner->MovePenTo(colorRect.right + spacer, frame.top + BaselineOffset());
+ BaselineOffset());
if (!IsEnabled()) { if (!IsEnabled()) {
rgb_color textColor = ui_color(B_LIST_ITEM_TEXT_COLOR); rgb_color textColor = ui_color(B_LIST_ITEM_TEXT_COLOR);
@@ -61,9 +72,9 @@ ColorWhichItem::DrawItem(BView* owner, BRect frame, bool complete)
owner->SetHighColor(tint_color(textColor, B_LIGHTEN_2_TINT)); owner->SetHighColor(tint_color(textColor, B_LIGHTEN_2_TINT));
} else { } else {
if (IsSelected()) if (IsSelected())
owner->SetHighColor(ui_color(B_LIST_SELECTED_ITEM_TEXT_COLOR)); owner->SetHighUIColor(B_LIST_SELECTED_ITEM_TEXT_COLOR);
else else
owner->SetHighColor(ui_color(B_LIST_ITEM_TEXT_COLOR)); owner->SetHighUIColor(B_LIST_ITEM_TEXT_COLOR);
} }
owner->DrawString(Text()); owner->DrawString(Text());
+3 -3
View File
@@ -1,5 +1,6 @@
/* /*
* Copyright 2001-2008, Haiku. * Copyright 2001-2002 OpenBeOS
* Copyright 2003-2016 Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License. * Distributed under the terms of the MIT License.
* *
* Authors: * Authors:
@@ -13,8 +14,7 @@
#include <InterfaceDefs.h> #include <InterfaceDefs.h>
#include <ListItem.h> #include <StringItem.h>
#include <View.h>
class ColorWhichItem : public BStringItem class ColorWhichItem : public BStringItem