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

Side by Side Diff: chrome/browser/chromeos/login/rounded_rect_painter.cc

Issue 8122013: Allow CanvasSkia to bind to an existing SkCanvas. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: 1 more fix Created 9 years, 2 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "chrome/browser/chromeos/login/rounded_rect_painter.h" 5 #include "chrome/browser/chromeos/login/rounded_rect_painter.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "chrome/browser/chromeos/login/helper.h" 8 #include "chrome/browser/chromeos/login/helper.h"
9 #include "third_party/skia/include/effects/SkBlurMaskFilter.h" 9 #include "third_party/skia/include/effects/SkBlurMaskFilter.h"
10 #include "third_party/skia/include/effects/SkGradientShader.h" 10 #include "third_party/skia/include/effects/SkGradientShader.h"
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 SkColor colors[2] = { top_color, bottom_color }; 46 SkColor colors[2] = { top_color, bottom_color };
47 SkShader* s = 47 SkShader* s =
48 SkGradientShader::CreateLinear(p, colors, NULL, 2, 48 SkGradientShader::CreateLinear(p, colors, NULL, 2,
49 SkShader::kClamp_TileMode, NULL); 49 SkShader::kClamp_TileMode, NULL);
50 paint.setShader(s); 50 paint.setShader(s);
51 // Need to unref shader, otherwise never deleted. 51 // Need to unref shader, otherwise never deleted.
52 s->unref(); 52 s->unref();
53 } else { 53 } else {
54 paint.setColor(top_color); 54 paint.setColor(top_color);
55 } 55 }
56 canvas->AsCanvasSkia()->drawPath(path, paint); 56 canvas->GetSkCanvas()->drawPath(path, paint);
57 57
58 if (stroke_color != 0) { 58 if (stroke_color != 0) {
59 // Expand rect by 0.5px so resulting stroke will take the whole pixel. 59 // Expand rect by 0.5px so resulting stroke will take the whole pixel.
60 rect.set( 60 rect.set(
61 SkIntToScalar(x) - SK_ScalarHalf, 61 SkIntToScalar(x) - SK_ScalarHalf,
62 SkIntToScalar(y) - SK_ScalarHalf, 62 SkIntToScalar(y) - SK_ScalarHalf,
63 SkIntToScalar(x + w) + SK_ScalarHalf, 63 SkIntToScalar(x + w) + SK_ScalarHalf,
64 SkIntToScalar(y + h) + SK_ScalarHalf); 64 SkIntToScalar(y + h) + SK_ScalarHalf);
65 paint.setShader(NULL); 65 paint.setShader(NULL);
66 paint.setStyle(SkPaint::kStroke_Style); 66 paint.setStyle(SkPaint::kStroke_Style);
67 paint.setStrokeWidth(SkIntToScalar(SK_Scalar1)); 67 paint.setStrokeWidth(SkIntToScalar(SK_Scalar1));
68 paint.setColor(stroke_color); 68 paint.setColor(stroke_color);
69 canvas->AsCanvasSkia()->drawRoundRect( 69 canvas->GetSkCanvas()->drawRoundRect(
70 rect, 70 rect,
71 SkIntToScalar(corner_radius), SkIntToScalar(corner_radius), 71 SkIntToScalar(corner_radius), SkIntToScalar(corner_radius),
72 paint); 72 paint);
73 } 73 }
74 } 74 }
75 75
76 static void DrawRoundedRectShadow( 76 static void DrawRoundedRectShadow(
77 gfx::Canvas* canvas, 77 gfx::Canvas* canvas,
78 int x, int y, 78 int x, int y,
79 int w, int h, 79 int w, int h,
80 int corner_radius, 80 int corner_radius,
81 int shadow, 81 int shadow,
82 SkColor color) { 82 SkColor color) {
83 SkPaint paint; 83 SkPaint paint;
84 paint.setFlags(SkPaint::kAntiAlias_Flag); 84 paint.setFlags(SkPaint::kAntiAlias_Flag);
85 paint.setStyle(SkPaint::kFill_Style); 85 paint.setStyle(SkPaint::kFill_Style);
86 paint.setColor(color); 86 paint.setColor(color);
87 SkMaskFilter* filter = SkBlurMaskFilter::Create( 87 SkMaskFilter* filter = SkBlurMaskFilter::Create(
88 shadow / 2, SkBlurMaskFilter::kNormal_BlurStyle); 88 shadow / 2, SkBlurMaskFilter::kNormal_BlurStyle);
89 paint.setMaskFilter(filter)->unref(); 89 paint.setMaskFilter(filter)->unref();
90 SkRect rect; 90 SkRect rect;
91 rect.set( 91 rect.set(
92 SkIntToScalar(x + shadow / 2), SkIntToScalar(y + shadow / 2), 92 SkIntToScalar(x + shadow / 2), SkIntToScalar(y + shadow / 2),
93 SkIntToScalar(x + w - shadow / 2), SkIntToScalar(y + h - shadow / 2)); 93 SkIntToScalar(x + w - shadow / 2), SkIntToScalar(y + h - shadow / 2));
94 canvas->AsCanvasSkia()->drawRoundRect( 94 canvas->GetSkCanvas()->drawRoundRect(
95 rect, 95 rect,
96 SkIntToScalar(corner_radius), SkIntToScalar(corner_radius), 96 SkIntToScalar(corner_radius), SkIntToScalar(corner_radius),
97 paint); 97 paint);
98 paint.setMaskFilter(NULL); 98 paint.setMaskFilter(NULL);
99 } 99 }
100 100
101 static void DrawRectWithBorder(int w, 101 static void DrawRectWithBorder(int w,
102 int h, 102 int h,
103 const BorderDefinition* const border, 103 const BorderDefinition* const border,
104 gfx::Canvas* canvas) { 104 gfx::Canvas* canvas) {
105 int padding = border->padding; 105 int padding = border->padding;
106 SkColor padding_color = border->padding_color; 106 SkColor padding_color = border->padding_color;
107 int shadow = border->shadow; 107 int shadow = border->shadow;
108 SkColor shadow_color = border->shadow_color; 108 SkColor shadow_color = border->shadow_color;
109 int corner_radius = border->corner_radius; 109 int corner_radius = border->corner_radius;
110 SkColor top_color = border->top_color; 110 SkColor top_color = border->top_color;
111 SkColor bottom_color = border->bottom_color; 111 SkColor bottom_color = border->bottom_color;
112 if (padding > 0) { 112 if (padding > 0) {
113 SkPaint paint; 113 SkPaint paint;
114 paint.setColor(padding_color); 114 paint.setColor(padding_color);
115 canvas->AsCanvasSkia()->drawRectCoords( 115 canvas->GetSkCanvas()->drawRectCoords(
116 SkIntToScalar(0), SkIntToScalar(0), SkIntToScalar(w), SkIntToScalar(h), 116 SkIntToScalar(0), SkIntToScalar(0), SkIntToScalar(w), SkIntToScalar(h),
117 paint); 117 paint);
118 } 118 }
119 if (border->shadow > 0) { 119 if (border->shadow > 0) {
120 DrawRoundedRectShadow( 120 DrawRoundedRectShadow(
121 canvas, 121 canvas,
122 padding, padding, 122 padding, padding,
123 w - 2 * padding, h - 2 * padding, 123 w - 2 * padding, h - 2 * padding,
124 corner_radius, 124 corner_radius,
125 shadow, shadow_color); 125 shadow, shadow_color);
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 rect.iset(0, 0, view->width(), view->height()); 200 rect.iset(0, 0, view->width(), view->height());
201 SkPath path; 201 SkPath path;
202 path.addRoundRect(rect, 202 path.addRoundRect(rect,
203 SkIntToScalar(corner_radius_), 203 SkIntToScalar(corner_radius_),
204 SkIntToScalar(corner_radius_)); 204 SkIntToScalar(corner_radius_));
205 // Draw interior. 205 // Draw interior.
206 SkPaint paint; 206 SkPaint paint;
207 paint.setStyle(SkPaint::kFill_Style); 207 paint.setStyle(SkPaint::kFill_Style);
208 paint.setFlags(SkPaint::kAntiAlias_Flag); 208 paint.setFlags(SkPaint::kAntiAlias_Flag);
209 paint.setColor(get_color()); 209 paint.setColor(get_color());
210 canvas->AsCanvasSkia()->drawPath(path, paint); 210 canvas->GetSkCanvas()->drawPath(path, paint);
211 // Redraw boundary region with correspoinding color. 211 // Redraw boundary region with correspoinding color.
212 paint.setStyle(SkPaint::kStroke_Style); 212 paint.setStyle(SkPaint::kStroke_Style);
213 paint.setStrokeWidth(SkIntToScalar(stroke_width_)); 213 paint.setStrokeWidth(SkIntToScalar(stroke_width_));
214 paint.setColor(stroke_color_); 214 paint.setColor(stroke_color_);
215 canvas->AsCanvasSkia()->drawPath(path, paint); 215 canvas->GetSkCanvas()->drawPath(path, paint);
216 } 216 }
217 217
218 private: 218 private:
219 int corner_radius_; 219 int corner_radius_;
220 int stroke_width_; 220 int stroke_width_;
221 SkColor stroke_color_; 221 SkColor stroke_color_;
222 222
223 DISALLOW_COPY_AND_ASSIGN(RoundedBackground); 223 DISALLOW_COPY_AND_ASSIGN(RoundedBackground);
224 }; 224 };
225 225
(...skipping 30 matching lines...) Expand all
256 256
257 views::Background* CreateRoundedBackground(int corner_radius, 257 views::Background* CreateRoundedBackground(int corner_radius,
258 int stroke_width, 258 int stroke_width,
259 SkColor background_color, 259 SkColor background_color,
260 SkColor stroke_color) { 260 SkColor stroke_color) {
261 return new RoundedBackground( 261 return new RoundedBackground(
262 corner_radius, stroke_width, background_color, stroke_color); 262 corner_radius, stroke_width, background_color, stroke_color);
263 } 263 }
264 264
265 } // namespace chromeos 265 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698