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

Side by Side Diff: chrome/browser/chromeos/login/username_view.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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/username_view.h" 5 #include "chrome/browser/chromeos/login/username_view.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/utf_string_conversions.h" 8 #include "base/utf_string_conversions.h"
9 #include "chrome/browser/chromeos/login/rounded_view.h" 9 #include "chrome/browser/chromeos/login/rounded_view.h"
10 #include "grit/generated_resources.h" 10 #include "grit/generated_resources.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 } 56 }
57 57
58 gfx::NativeCursor UsernameView::GetCursor(const views::MouseEvent& event) { 58 gfx::NativeCursor UsernameView::GetCursor(const views::MouseEvent& event) {
59 return use_small_shape_ ? gfx::GetCursor(GDK_HAND2) : NULL; 59 return use_small_shape_ ? gfx::GetCursor(GDK_HAND2) : NULL;
60 } 60 }
61 61
62 void UsernameView::PaintUsername(const gfx::Rect& bounds) { 62 void UsernameView::PaintUsername(const gfx::Rect& bounds) {
63 margin_width_ = bounds.height() * kMarginRatio; 63 margin_width_ = bounds.height() * kMarginRatio;
64 gfx::CanvasSkia canvas(bounds.width(), bounds.height(), false); 64 gfx::CanvasSkia canvas(bounds.width(), bounds.height(), false);
65 // Draw transparent background. 65 // Draw transparent background.
66 canvas.drawColor(0); 66 canvas.sk_canvas()->drawColor(0);
67 67
68 // Calculate needed space. 68 // Calculate needed space.
69 int flags = gfx::Canvas::TEXT_ALIGN_LEFT | 69 int flags = gfx::Canvas::TEXT_ALIGN_LEFT |
70 gfx::Canvas::TEXT_VALIGN_MIDDLE | 70 gfx::Canvas::TEXT_VALIGN_MIDDLE |
71 gfx::Canvas::NO_ELLIPSIS; 71 gfx::Canvas::NO_ELLIPSIS;
72 int text_height, text_width; 72 int text_height, text_width;
73 gfx::CanvasSkia::SizeStringInt(WideToUTF16Hack(GetText()), font(), 73 gfx::CanvasSkia::SizeStringInt(WideToUTF16Hack(GetText()), font(),
74 &text_width, &text_height, 74 &text_width, &text_height,
75 flags); 75 flags);
76 text_width += margin_width_; 76 text_width += margin_width_;
(...skipping 24 matching lines...) Expand all
101 // Draw the final background with the fading in the end. 101 // Draw the final background with the fading in the end.
102 SkShader* solid_shader = new SkColorShader(kLabelBackgoundColor); 102 SkShader* solid_shader = new SkColorShader(kLabelBackgoundColor);
103 SkXfermode* mode = SkXfermode::Create(SkXfermode::kSrcIn_Mode); 103 SkXfermode* mode = SkXfermode::Create(SkXfermode::kSrcIn_Mode);
104 SkShader* composite_shader = new SkComposeShader(gradient_shader, 104 SkShader* composite_shader = new SkComposeShader(gradient_shader,
105 solid_shader, mode); 105 solid_shader, mode);
106 gradient_shader->unref(); 106 gradient_shader->unref();
107 solid_shader->unref(); 107 solid_shader->unref();
108 108
109 SkPaint paint; 109 SkPaint paint;
110 paint.setShader(composite_shader)->unref(); 110 paint.setShader(composite_shader)->unref();
111 canvas.drawPaint(paint); 111 canvas.sk_canvas()->drawPaint(paint);
112 } 112 }
113 113
114 // Draw the text. 114 // Draw the text.
115 // Note, direct call of the DrawStringInt method produces the green dots 115 // Note, direct call of the DrawStringInt method produces the green dots
116 // along the text perimeter (when the label is place on the white background). 116 // along the text perimeter (when the label is place on the white background).
117 SkColor kInvisibleHaloColor = 0x00000000; 117 SkColor kInvisibleHaloColor = 0x00000000;
118 canvas.DrawStringWithHalo(WideToUTF16Hack(GetText()), font(), GetColor(), 118 canvas.DrawStringWithHalo(WideToUTF16Hack(GetText()), font(), GetColor(),
119 kInvisibleHaloColor, bounds.x() + margin_width_, 119 kInvisibleHaloColor, bounds.x() + margin_width_,
120 bounds.y(), bounds.width() - 2 * margin_width_, 120 bounds.y(), bounds.width() - 2 * margin_width_,
121 bounds.height(), flags); 121 bounds.height(), flags);
122 122
123 text_image_.reset(new SkBitmap(canvas.ExtractBitmap())); 123 text_image_.reset(new SkBitmap(canvas.ExtractBitmap()));
124 124
125 if (use_fading_for_text) { 125 if (use_fading_for_text) {
126 // Fade out only the text in the end. Use regular background. 126 // Fade out only the text in the end. Use regular background.
127 canvas.drawColor(kLabelBackgoundColor, SkXfermode::kSrc_Mode); 127 canvas.sk_canvas()->drawColor(kLabelBackgoundColor, SkXfermode::kSrc_Mode);
128 SkShader* image_shader = SkShader::CreateBitmapShader( 128 SkShader* image_shader = SkShader::CreateBitmapShader(
129 *text_image_, 129 *text_image_,
130 SkShader::kRepeat_TileMode, 130 SkShader::kRepeat_TileMode,
131 SkShader::kRepeat_TileMode); 131 SkShader::kRepeat_TileMode);
132 SkXfermode* mode = SkXfermode::Create(SkXfermode::kSrcIn_Mode); 132 SkXfermode* mode = SkXfermode::Create(SkXfermode::kSrcIn_Mode);
133 SkShader* composite_shader = new SkComposeShader(gradient_shader, 133 SkShader* composite_shader = new SkComposeShader(gradient_shader,
134 image_shader, mode); 134 image_shader, mode);
135 gradient_shader->unref(); 135 gradient_shader->unref();
136 image_shader->unref(); 136 image_shader->unref();
137 137
138 SkPaint paint; 138 SkPaint paint;
139 paint.setShader(composite_shader)->unref(); 139 paint.setShader(composite_shader)->unref();
140 canvas.drawPaint(paint); 140 canvas.sk_canvas()->drawPaint(paint);
141 text_image_.reset(new SkBitmap(canvas.ExtractBitmap())); 141 text_image_.reset(new SkBitmap(canvas.ExtractBitmap()));
142 } 142 }
143 } 143 }
144 144
145 void UsernameView::OnLocaleChanged() { 145 void UsernameView::OnLocaleChanged() {
146 if (is_guest_) { 146 if (is_guest_) {
147 SetText(UTF16ToWide(l10n_util::GetStringUTF16(IDS_GUEST))); 147 SetText(UTF16ToWide(l10n_util::GetStringUTF16(IDS_GUEST)));
148 } 148 }
149 // Repaint because the font may have changed. 149 // Repaint because the font may have changed.
150 text_image_.reset(); 150 text_image_.reset();
151 SchedulePaint(); 151 SchedulePaint();
152 } 152 }
153 153
154 } // namespace chromeos 154 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698