Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(25)

Side by Side Diff: ui/views/controls/menu/menu_image_util.cc

Issue 10437006: Converts ui/views/controls, ui/views/examples, ui/base/models to ImageSkia (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/views/controls/menu/menu_image_util.h" 5 #include "ui/views/controls/menu/menu_image_util.h"
6 6
7 #include "base/i18n/rtl.h" 7 #include "base/i18n/rtl.h"
8 #include "grit/ui_resources.h" 8 #include "grit/ui_resources.h"
9 #include "third_party/skia/include/effects/SkGradientShader.h" 9 #include "third_party/skia/include/effects/SkGradientShader.h"
10 #include "ui/base/resource/resource_bundle.h" 10 #include "ui/base/resource/resource_bundle.h"
11 #include "ui/gfx/canvas.h" 11 #include "ui/gfx/canvas.h"
12 #include "ui/gfx/image/image.h" 12 #include "ui/gfx/image/image.h"
13 #include "ui/gfx/image/image_skia.h"
13 #include "ui/gfx/point.h" 14 #include "ui/gfx/point.h"
14 #include "ui/gfx/size.h" 15 #include "ui/gfx/size.h"
15 16
16 namespace { 17 namespace {
17 18
18 // Size of the radio button inciator. 19 // Size of the radio button inciator.
19 const int kSelectedIndicatorSize = 5; 20 const int kSelectedIndicatorSize = 5;
20 const int kIndicatorSize = 10; 21 const int kIndicatorSize = 10;
21 22
22 // Used for the radio indicator. See theme_draw for details. 23 // Used for the radio indicator. See theme_draw for details.
23 const double kGradientStop = .5; 24 const double kGradientStop = .5;
24 const SkColor kGradient0 = SkColorSetRGB(255, 255, 255); 25 const SkColor kGradient0 = SkColorSetRGB(255, 255, 255);
25 const SkColor kGradient1 = SkColorSetRGB(255, 255, 255); 26 const SkColor kGradient1 = SkColorSetRGB(255, 255, 255);
26 const SkColor kGradient2 = SkColorSetRGB(0xD8, 0xD8, 0xD8); 27 const SkColor kGradient2 = SkColorSetRGB(0xD8, 0xD8, 0xD8);
27 const SkColor kBaseStroke = SkColorSetRGB(0x8F, 0x8F, 0x8F); 28 const SkColor kBaseStroke = SkColorSetRGB(0x8F, 0x8F, 0x8F);
28 const SkColor kRadioButtonIndicatorGradient0 = SkColorSetRGB(0, 0, 0); 29 const SkColor kRadioButtonIndicatorGradient0 = SkColorSetRGB(0, 0, 0);
29 const SkColor kRadioButtonIndicatorGradient1 = SkColorSetRGB(0x83, 0x83, 0x83); 30 const SkColor kRadioButtonIndicatorGradient1 = SkColorSetRGB(0x83, 0x83, 0x83);
30 const SkColor kIndicatorStroke = SkColorSetRGB(0, 0, 0); 31 const SkColor kIndicatorStroke = SkColorSetRGB(0, 0, 0);
31 32
32 SkBitmap* CreateRadioButtonImage(bool selected) { 33 gfx::ImageSkia* CreateRadioButtonImage(bool selected) {
33 // + 2 (1px on each side) to cover rounding error. 34 // + 2 (1px on each side) to cover rounding error.
34 gfx::Canvas canvas(gfx::Size(kIndicatorSize + 2, kIndicatorSize + 2), false); 35 gfx::Canvas canvas(gfx::Size(kIndicatorSize + 2, kIndicatorSize + 2), false);
35 canvas.Translate(gfx::Point(1, 1)); 36 canvas.Translate(gfx::Point(1, 1));
36 37
37 SkPoint gradient_points[3]; 38 SkPoint gradient_points[3];
38 gradient_points[0].iset(0, 0); 39 gradient_points[0].iset(0, 0);
39 gradient_points[1].iset(0, static_cast<int>(kIndicatorSize * kGradientStop)); 40 gradient_points[1].iset(0, static_cast<int>(kIndicatorSize * kGradientStop));
40 gradient_points[2].iset(0, kIndicatorSize); 41 gradient_points[2].iset(0, kIndicatorSize);
41 SkColor gradient_colors[3] = { kGradient0, kGradient1, kGradient2 }; 42 SkColor gradient_colors[3] = { kGradient0, kGradient1, kGradient2 };
42 SkShader* shader = SkGradientShader::CreateLinear( 43 SkShader* shader = SkGradientShader::CreateLinear(
(...skipping 28 matching lines...) Expand all
71 canvas.sk_canvas()->drawCircle(radius, radius, 72 canvas.sk_canvas()->drawCircle(radius, radius,
72 kSelectedIndicatorSize / 2, paint); 73 kSelectedIndicatorSize / 2, paint);
73 74
74 paint.setStrokeWidth(SkIntToScalar(0)); 75 paint.setStrokeWidth(SkIntToScalar(0));
75 paint.setShader(NULL); 76 paint.setShader(NULL);
76 paint.setStyle(SkPaint::kStroke_Style); 77 paint.setStyle(SkPaint::kStroke_Style);
77 paint.setColor(kIndicatorStroke); 78 paint.setColor(kIndicatorStroke);
78 canvas.sk_canvas()->drawCircle(radius, radius, 79 canvas.sk_canvas()->drawCircle(radius, radius,
79 kSelectedIndicatorSize / 2, paint); 80 kSelectedIndicatorSize / 2, paint);
80 } 81 }
81 return new SkBitmap(canvas.ExtractBitmap()); 82 return new gfx::ImageSkia(canvas.ExtractBitmap());
82 } 83 }
83 84
84 SkBitmap* GetRtlSubmenuArrowImage() { 85 gfx::ImageSkia* GetRtlSubmenuArrowImage() {
85 static SkBitmap* kRtlArrow = NULL; 86 static gfx::ImageSkia* kRtlArrow = NULL;
86 if (!kRtlArrow) { 87 if (!kRtlArrow) {
87 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); 88 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
88 const SkBitmap* r = rb.GetImageNamed(IDR_MENU_ARROW).ToSkBitmap(); 89 const gfx::ImageSkia* r = rb.GetImageNamed(IDR_MENU_ARROW).ToImageSkia();
89 gfx::Canvas canvas(gfx::Size(r->width(), r->height()), false); 90 gfx::Canvas canvas(gfx::Size(r->width(), r->height()), false);
90 canvas.Scale(-1, 1); 91 canvas.Scale(-1, 1);
91 canvas.DrawBitmapInt(*r, - r->width(), 0); 92 canvas.DrawBitmapInt(*r, - r->width(), 0);
92 kRtlArrow = new SkBitmap(canvas.ExtractBitmap()); 93 kRtlArrow = new gfx::ImageSkia(canvas.ExtractBitmap());
93 } 94 }
94 return kRtlArrow; 95 return kRtlArrow;
95 } 96 }
96 97
97 } // namespace 98 } // namespace
98 99
99 namespace views { 100 namespace views {
100 101
101 const SkBitmap* GetRadioButtonImage(bool selected) { 102 const gfx::ImageSkia* GetRadioButtonImage(bool selected) {
102 static const SkBitmap* kRadioOn = CreateRadioButtonImage(true); 103 static const gfx::ImageSkia* kRadioOn = CreateRadioButtonImage(true);
103 static const SkBitmap* kRadioOff = CreateRadioButtonImage(false); 104 static const gfx::ImageSkia* kRadioOff = CreateRadioButtonImage(false);
104 105
105 return selected ? kRadioOn : kRadioOff; 106 return selected ? kRadioOn : kRadioOff;
106 } 107 }
107 108
108 const SkBitmap* GetSubmenuArrowImage() { 109 const gfx::ImageSkia* GetSubmenuArrowImage() {
109 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); 110 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
110 return base::i18n::IsRTL() ? GetRtlSubmenuArrowImage() 111 return base::i18n::IsRTL() ? GetRtlSubmenuArrowImage()
111 : rb.GetImageNamed(IDR_MENU_ARROW).ToSkBitmap(); 112 : rb.GetImageNamed(IDR_MENU_ARROW).ToImageSkia();
112 } 113 }
113 114
114 } // namespace views 115 } // namespace views
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698