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

Side by Side Diff: chrome/browser/speech/speech_recognition_bubble.cc

Issue 24175004: Remove dependency on ui::ScaleFactor from ui/gfx (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix new usage of scale in FastShowPickler Created 7 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) 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 "chrome/browser/speech/speech_recognition_bubble.h" 5 #include "chrome/browser/speech/speech_recognition_bubble.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/lazy_instance.h" 8 #include "base/lazy_instance.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "content/public/browser/web_contents.h" 10 #include "content/public/browser/web_contents.h"
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 src_rect.x() < spinner_image->width(); 88 src_rect.x() < spinner_image->width();
89 src_rect.Offset(frame_size, 0)) { 89 src_rect.Offset(frame_size, 0)) {
90 gfx::ImageSkia frame = gfx::ImageSkiaOperations::ExtractSubset( 90 gfx::ImageSkia frame = gfx::ImageSkiaOperations::ExtractSubset(
91 *spinner_image, src_rect); 91 *spinner_image, src_rect);
92 92
93 // The image created by ExtractSubset just points to the same pixels as 93 // The image created by ExtractSubset just points to the same pixels as
94 // the original and adjusts rowBytes accordingly. However that doesn't 94 // the original and adjusts rowBytes accordingly. However that doesn't
95 // render properly and gets vertically squished in Linux due to a bug in 95 // render properly and gets vertically squished in Linux due to a bug in
96 // Skia. Until that gets fixed we work around by taking a real copy of it 96 // Skia. Until that gets fixed we work around by taking a real copy of it
97 // below as the copied image has the correct rowBytes and renders fine. 97 // below as the copied image has the correct rowBytes and renders fine.
98 frame.EnsureRepsForSupportedScaleFactors(); 98 frame.EnsureRepsForSupportedScales();
99 std::vector<gfx::ImageSkiaRep> image_reps = frame.image_reps(); 99 std::vector<gfx::ImageSkiaRep> image_reps = frame.image_reps();
100 gfx::ImageSkia frame_copy; 100 gfx::ImageSkia frame_copy;
101 for (size_t i = 0; i < image_reps.size(); ++i) { 101 for (size_t i = 0; i < image_reps.size(); ++i) {
102 const SkBitmap& copy_src = image_reps[i].sk_bitmap(); 102 const SkBitmap& copy_src = image_reps[i].sk_bitmap();
103 SkBitmap copy_dst; 103 SkBitmap copy_dst;
104 copy_src.copyTo(&copy_dst, SkBitmap::kARGB_8888_Config); 104 copy_src.copyTo(&copy_dst, SkBitmap::kARGB_8888_Config);
105 frame_copy.AddRepresentation(gfx::ImageSkiaRep( 105 frame_copy.AddRepresentation(gfx::ImageSkiaRep(
106 copy_dst, image_reps[i].scale_factor())); 106 copy_dst, image_reps[i].scale()));
107 } 107 }
108 spinner_.push_back(frame_copy); 108 spinner_.push_back(frame_copy);
109 109
110 // The warm up spinner animation is a gray scale version of the real one. 110 // The warm up spinner animation is a gray scale version of the real one.
111 warm_up_.push_back(gfx::ImageSkiaOperations::CreateHSLShiftedImage( 111 warm_up_.push_back(gfx::ImageSkiaOperations::CreateHSLShiftedImage(
112 frame_copy, kGrayscaleShift)); 112 frame_copy, kGrayscaleShift));
113 } 113 }
114 } 114 }
115 115
116 base::LazyInstance<SpeechRecognitionBubbleImages> g_images = 116 base::LazyInstance<SpeechRecognitionBubbleImages> g_images =
(...skipping 16 matching lines...) Expand all
133 133
134 return CreateNativeBubble(web_contents, delegate, element_rect); 134 return CreateNativeBubble(web_contents, delegate, element_rect);
135 } 135 }
136 136
137 SpeechRecognitionBubbleBase::SpeechRecognitionBubbleBase( 137 SpeechRecognitionBubbleBase::SpeechRecognitionBubbleBase(
138 WebContents* web_contents) 138 WebContents* web_contents)
139 : weak_factory_(this), 139 : weak_factory_(this),
140 animation_step_(0), 140 animation_step_(0),
141 display_mode_(DISPLAY_MODE_RECORDING), 141 display_mode_(DISPLAY_MODE_RECORDING),
142 web_contents_(web_contents), 142 web_contents_(web_contents),
143 scale_factor_(ui::SCALE_FACTOR_NONE) { 143 scale_(1.0f) {
144 gfx::NativeView view = 144 gfx::NativeView view =
145 web_contents_ ? web_contents_->GetView()->GetNativeView() : NULL; 145 web_contents_ ? web_contents_->GetView()->GetNativeView() : NULL;
146 gfx::Screen* screen = gfx::Screen::GetScreenFor(view); 146 gfx::Screen* screen = gfx::Screen::GetScreenFor(view);
147 gfx::Display display = screen->GetDisplayNearestWindow(view); 147 gfx::Display display = screen->GetDisplayNearestWindow(view);
148 scale_factor_ = ui::GetScaleFactorFromScale( 148 scale_ = display.device_scale_factor();
149 display.device_scale_factor());
150 149
151 const gfx::ImageSkiaRep& rep = 150 const gfx::ImageSkiaRep& rep =
152 g_images.Get().mic_empty()->GetRepresentation(scale_factor_); 151 g_images.Get().mic_empty()->GetRepresentation(scale_);
153 mic_image_.reset(new SkBitmap()); 152 mic_image_.reset(new SkBitmap());
154 mic_image_->setConfig(SkBitmap::kARGB_8888_Config, 153 mic_image_->setConfig(SkBitmap::kARGB_8888_Config,
155 rep.pixel_width(), rep.pixel_height()); 154 rep.pixel_width(), rep.pixel_height());
156 mic_image_->allocPixels(); 155 mic_image_->allocPixels();
157 156
158 buffer_image_.reset(new SkBitmap()); 157 buffer_image_.reset(new SkBitmap());
159 buffer_image_->setConfig(SkBitmap::kARGB_8888_Config, 158 buffer_image_->setConfig(SkBitmap::kARGB_8888_Config,
160 rep.pixel_width(), rep.pixel_height()); 159 rep.pixel_width(), rep.pixel_height());
161 buffer_image_->allocPixels(); 160 buffer_image_->allocPixels();
162 } 161 }
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 int width = mic_image_->width(); 227 int width = mic_image_->width();
229 int height = mic_image_->height(); 228 int height = mic_image_->height();
230 SkCanvas buffer_canvas(*buffer_image_); 229 SkCanvas buffer_canvas(*buffer_image_);
231 230
232 buffer_canvas.save(); 231 buffer_canvas.save();
233 const int kVolumeSteps = 12; 232 const int kVolumeSteps = 12;
234 SkScalar clip_right = 233 SkScalar clip_right =
235 (((1.0f - volume) * (width * (kVolumeSteps + 1))) - width) / kVolumeSteps; 234 (((1.0f - volume) * (width * (kVolumeSteps + 1))) - width) / kVolumeSteps;
236 buffer_canvas.clipRect(SkRect::MakeLTRB(0, 0, 235 buffer_canvas.clipRect(SkRect::MakeLTRB(0, 0,
237 SkIntToScalar(width) - clip_right, SkIntToScalar(height))); 236 SkIntToScalar(width) - clip_right, SkIntToScalar(height)));
238 buffer_canvas.drawBitmap( 237 buffer_canvas.drawBitmap(image.GetRepresentation(scale_).sk_bitmap(), 0, 0);
239 image.GetRepresentation(scale_factor_).sk_bitmap(), 0, 0);
240 buffer_canvas.restore(); 238 buffer_canvas.restore();
241 SkPaint multiply_paint; 239 SkPaint multiply_paint;
242 multiply_paint.setXfermodeMode(SkXfermode::kModulate_Mode); 240 multiply_paint.setXfermodeMode(SkXfermode::kModulate_Mode);
243 buffer_canvas.drawBitmap( 241 buffer_canvas.drawBitmap(
244 g_images.Get().mic_mask()->GetRepresentation(scale_factor_).sk_bitmap(), 242 g_images.Get().mic_mask()->GetRepresentation(scale_).sk_bitmap(),
245 -clip_right, 0, &multiply_paint); 243 -clip_right, 0, &multiply_paint);
246 244
247 canvas->drawBitmap(*buffer_image_.get(), 0, 0); 245 canvas->drawBitmap(*buffer_image_.get(), 0, 0);
248 } 246 }
249 247
250 void SpeechRecognitionBubbleBase::SetInputVolume(float volume, 248 void SpeechRecognitionBubbleBase::SetInputVolume(float volume,
251 float noise_volume) { 249 float noise_volume) {
252 mic_image_->eraseARGB(0, 0, 0, 0); 250 mic_image_->eraseARGB(0, 0, 0, 0);
253 SkCanvas canvas(*mic_image_); 251 SkCanvas canvas(*mic_image_);
254 252
255 // Draw the empty volume image first and the current volume image on top, 253 // Draw the empty volume image first and the current volume image on top,
256 // and then the noise volume image on top of both. 254 // and then the noise volume image on top of both.
257 canvas.drawBitmap( 255 canvas.drawBitmap(
258 g_images.Get().mic_empty()->GetRepresentation(scale_factor_).sk_bitmap(), 256 g_images.Get().mic_empty()->GetRepresentation(scale_).sk_bitmap(),
259 0, 0); 257 0, 0);
260 DrawVolumeOverlay(&canvas, *g_images.Get().mic_full(), volume); 258 DrawVolumeOverlay(&canvas, *g_images.Get().mic_full(), volume);
261 DrawVolumeOverlay(&canvas, *g_images.Get().mic_noise(), noise_volume); 259 DrawVolumeOverlay(&canvas, *g_images.Get().mic_noise(), noise_volume);
262 260
263 gfx::ImageSkia image(gfx::ImageSkiaRep(*mic_image_.get(), scale_factor_)); 261 gfx::ImageSkia image(gfx::ImageSkiaRep(*mic_image_.get(), scale_));
264 SetImage(image); 262 SetImage(image);
265 } 263 }
266 264
267 WebContents* SpeechRecognitionBubbleBase::GetWebContents() { 265 WebContents* SpeechRecognitionBubbleBase::GetWebContents() {
268 return web_contents_; 266 return web_contents_;
269 } 267 }
270 268
271 void SpeechRecognitionBubbleBase::SetImage(const gfx::ImageSkia& image) { 269 void SpeechRecognitionBubbleBase::SetImage(const gfx::ImageSkia& image) {
272 icon_image_ = image; 270 icon_image_ = image;
273 UpdateImage(); 271 UpdateImage();
274 } 272 }
275 273
276 gfx::ImageSkia SpeechRecognitionBubbleBase::icon_image() { 274 gfx::ImageSkia SpeechRecognitionBubbleBase::icon_image() {
277 return icon_image_; 275 return icon_image_;
278 } 276 }
OLDNEW
« no previous file with comments | « chrome/browser/speech/speech_recognition_bubble.h ('k') | chrome/browser/sync/test/integration/bookmarks_helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698