diff options
author | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-29 19:20:08 +0000 |
---|---|---|
committer | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-29 19:20:08 +0000 |
commit | 36a9ad19d54426021747e1c292d697fa20b12fc4 (patch) | |
tree | ed0aafd8f64a0ad02f1ffe485ff1cf46eb1b869d /views/controls/menu/menu_item_view_gtk.cc | |
parent | 554436b584f8e49c7ede4d4a0b3dd0e4b49379bb (diff) | |
download | chromium_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.cc | 84 |
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. |