summaryrefslogtreecommitdiffstats
path: root/views/controls/menu/menu_item_view_gtk.cc
diff options
context:
space:
mode:
authoroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-29 19:20:08 +0000
committeroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-29 19:20:08 +0000
commit36a9ad19d54426021747e1c292d697fa20b12fc4 (patch)
treeed0aafd8f64a0ad02f1ffe485ff1cf46eb1b869d /views/controls/menu/menu_item_view_gtk.cc
parent554436b584f8e49c7ede4d4a0b3dd0e4b49379bb (diff)
downloadchromium_src-36a9ad19d54426021747e1c292d697fa20b12fc4.zip
chromium_src-36a9ad19d54426021747e1c292d697fa20b12fc4.tar.gz
chromium_src-36a9ad19d54426021747e1c292d697fa20b12fc4.tar.bz2
Refactor RadioButton Image code for linux/gtk
so that DOMUI menu can use the same image. BUG=none TEST=none Review URL: http://codereview.chromium.org/3435033 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@60972 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/controls/menu/menu_item_view_gtk.cc')
-rw-r--r--views/controls/menu/menu_item_view_gtk.cc84
1 files changed, 8 insertions, 76 deletions
diff --git a/views/controls/menu/menu_item_view_gtk.cc b/views/controls/menu/menu_item_view_gtk.cc
index 9f77390..73599e2 100644
--- a/views/controls/menu/menu_item_view_gtk.cc
+++ b/views/controls/menu/menu_item_view_gtk.cc
@@ -11,6 +11,7 @@
#include "third_party/skia/include/effects/SkGradientShader.h"
#include "views/controls/button/text_button.h"
#include "views/controls/menu/menu_config.h"
+#include "views/controls/menu/radio_button_image_gtk.h"
#include "views/controls/menu/submenu_view.h"
namespace views {
@@ -22,23 +23,6 @@ static const SkColor kSelectedBackgroundColor = SkColorSetRGB(0xDC, 0xE4, 0xFA);
static const SkColor kSelectedBackgroundColor = SkColorSetRGB(246, 249, 253);
#endif
-// Size of the radio button inciator.
-static const int kSelectedIndicatorSize = 5;
-static const int kIndicatorSize = 10;
-
-// Used for the radio indicator. See theme_draw for details.
-static const double kGradientStop = .5;
-static const SkColor kGradient0 = SkColorSetRGB(255, 255, 255);
-static const SkColor kGradient1 = SkColorSetRGB(255, 255, 255);
-static const SkColor kGradient2 = SkColorSetRGB(0xD8, 0xD8, 0xD8);
-static const SkColor kBaseStroke = SkColorSetRGB(0x8F, 0x8F, 0x8F);
-static const SkColor kRadioButtonIndicatorGradient0 =
- SkColorSetRGB(0, 0, 0);
-static const SkColor kRadioButtonIndicatorGradient1 =
- SkColorSetRGB(0x83, 0x83, 0x83);
-
-static const SkColor kIndicatorStroke = SkColorSetRGB(0, 0, 0);
-
gfx::Size MenuItemView::GetPreferredSize() {
const gfx::Font& font = MenuConfig::instance().font;
// TODO(sky): this is a workaround until I figure out why font.height()
@@ -82,65 +66,13 @@ void MenuItemView::Paint(gfx::Canvas* canvas, bool for_drag) {
AdjustBoundsForRTLUI(&check_bounds);
canvas->DrawBitmapInt(*check, check_bounds.x(), check_bounds.y());
} else if (type_ == RADIO) {
- // This code comes from theme_draw.cc. See it for details.
- canvas->TranslateInt(
- icon_x,
- top_margin + (height() - top_margin - bottom_margin -
- kIndicatorSize) / 2);
-
- SkPoint gradient_points[3];
- gradient_points[0].set(SkIntToScalar(0), SkIntToScalar(0));
- gradient_points[1].set(
- SkIntToScalar(0),
- SkIntToScalar(static_cast<int>(kIndicatorSize * kGradientStop)));
- gradient_points[2].set(SkIntToScalar(0), SkIntToScalar(kIndicatorSize));
- SkColor gradient_colors[3] = { kGradient0, kGradient1, kGradient2 };
- SkShader* shader = SkGradientShader::CreateLinear(
- gradient_points, gradient_colors, NULL, arraysize(gradient_points),
- SkShader::kClamp_TileMode, NULL);
- SkPaint paint;
- paint.setStyle(SkPaint::kFill_Style);
- paint.setAntiAlias(true);
- paint.setShader(shader);
- shader->unref();
- int radius = kIndicatorSize / 2;
- canvas->AsCanvasSkia()->drawCircle(radius, radius, radius, paint);
-
- paint.setStrokeWidth(SkIntToScalar(0));
- paint.setShader(NULL);
- paint.setStyle(SkPaint::kStroke_Style);
- paint.setColor(kBaseStroke);
- canvas->AsCanvasSkia()->drawCircle(radius, radius, radius, paint);
-
- if (GetDelegate()->IsItemChecked(GetCommand())) {
- SkPoint selected_gradient_points[2];
- selected_gradient_points[0].set(SkIntToScalar(0), SkIntToScalar(0));
- selected_gradient_points[1].set(
- SkIntToScalar(0),
- SkIntToScalar(kSelectedIndicatorSize));
- SkColor selected_gradient_colors[2] = { kRadioButtonIndicatorGradient0,
- kRadioButtonIndicatorGradient1 };
- shader = SkGradientShader::CreateLinear(
- selected_gradient_points, selected_gradient_colors, NULL,
- arraysize(selected_gradient_points), SkShader::kClamp_TileMode, NULL);
- paint.setShader(shader);
- shader->unref();
- paint.setStyle(SkPaint::kFill_Style);
- canvas->AsCanvasSkia()->drawCircle(radius, radius,
- kSelectedIndicatorSize / 2, paint);
-
- paint.setStrokeWidth(SkIntToScalar(0));
- paint.setShader(NULL);
- paint.setStyle(SkPaint::kStroke_Style);
- paint.setColor(kIndicatorStroke);
- canvas->AsCanvasSkia()->drawCircle(radius, radius,
- kSelectedIndicatorSize / 2, paint);
- }
-
- canvas->TranslateInt(
- -icon_x,
- -(top_margin + (height() - top_margin - bottom_margin -
- kIndicatorSize) / 2));
+ const SkBitmap* image =
+ GetRadioButtonImage(GetDelegate()->IsItemChecked(GetCommand()));
+ canvas->DrawBitmapInt(*image,
+ icon_x,
+ top_margin +
+ (height() - top_margin - bottom_margin -
+ image->height()) / 2);
}
// Render the foreground.