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

Side by Side Diff: chrome/browser/tab_contents/thumbnail_generator.cc

Issue 11081007: Remove implicit flooring Scale() method from Point and Size. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: git try -b win_rel,mac_rel,linux_rel,linux_aura Created 8 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/tab_contents/thumbnail_generator.h" 5 #include "chrome/browser/tab_contents/thumbnail_generator.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <map> 8 #include <map>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 13 matching lines...) Expand all
24 #include "content/public/browser/render_view_host.h" 24 #include "content/public/browser/render_view_host.h"
25 #include "content/public/browser/render_widget_host_view.h" 25 #include "content/public/browser/render_widget_host_view.h"
26 #include "content/public/browser/web_contents.h" 26 #include "content/public/browser/web_contents.h"
27 #include "googleurl/src/gurl.h" 27 #include "googleurl/src/gurl.h"
28 #include "skia/ext/image_operations.h" 28 #include "skia/ext/image_operations.h"
29 #include "skia/ext/platform_canvas.h" 29 #include "skia/ext/platform_canvas.h"
30 #include "third_party/skia/include/core/SkBitmap.h" 30 #include "third_party/skia/include/core/SkBitmap.h"
31 #include "ui/base/layout.h" 31 #include "ui/base/layout.h"
32 #include "ui/gfx/color_utils.h" 32 #include "ui/gfx/color_utils.h"
33 #include "ui/gfx/rect.h" 33 #include "ui/gfx/rect.h"
34 #include "ui/gfx/size_conversions.h"
34 #include "ui/gfx/screen.h" 35 #include "ui/gfx/screen.h"
35 #include "ui/gfx/scrollbar_size.h" 36 #include "ui/gfx/scrollbar_size.h"
36 #include "ui/gfx/skbitmap_operations.h" 37 #include "ui/gfx/skbitmap_operations.h"
37 38
38 #if defined(OS_WIN) 39 #if defined(OS_WIN)
39 #include "base/win/windows_version.h" 40 #include "base/win/windows_version.h"
40 #endif 41 #endif
41 42
42 // Overview 43 // Overview
43 // -------- 44 // --------
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 // ui::SCALE_FACTOR_200P because the high resolution thumbnail on high density 101 // ui::SCALE_FACTOR_200P because the high resolution thumbnail on high density
101 // display alleviates the aliasing. 102 // display alleviates the aliasing.
102 // TODO(mazda): Copy the pixels with the smaller size in the case of 103 // TODO(mazda): Copy the pixels with the smaller size in the case of
103 // ui::SCALE_FACTOR_100P once the resampling method has been improved. 104 // ui::SCALE_FACTOR_100P once the resampling method has been improved.
104 gfx::Size GetCopySizeForThumbnail(content::RenderWidgetHostView* view) { 105 gfx::Size GetCopySizeForThumbnail(content::RenderWidgetHostView* view) {
105 gfx::Size copy_size(kThumbnailWidth, kThumbnailHeight); 106 gfx::Size copy_size(kThumbnailWidth, kThumbnailHeight);
106 ui::ScaleFactor scale_factor = 107 ui::ScaleFactor scale_factor =
107 ui::GetScaleFactorForNativeView(view->GetNativeView()); 108 ui::GetScaleFactorForNativeView(view->GetNativeView());
108 switch (scale_factor) { 109 switch (scale_factor) {
109 case ui::SCALE_FACTOR_100P: 110 case ui::SCALE_FACTOR_100P:
110 copy_size = 111 copy_size = gfx::ToFlooredSize(
111 copy_size.Scale(ui::GetScaleFactorScale(ui::SCALE_FACTOR_200P)); 112 copy_size.Scale(ui::GetScaleFactorScale(ui::SCALE_FACTOR_200P)));
112 break; 113 break;
113 case ui::SCALE_FACTOR_200P: 114 case ui::SCALE_FACTOR_200P:
114 // Use the size as-is. 115 // Use the size as-is.
115 break; 116 break;
116 default: 117 default:
117 DLOG(WARNING) << "Unsupported scale factor. Use the same copy size as " 118 DLOG(WARNING) << "Unsupported scale factor. Use the same copy size as "
118 << "ui::SCALE_FACTOR_100P"; 119 << "ui::SCALE_FACTOR_100P";
119 copy_size = 120 copy_size = gfx::ToFlooredSize(
120 copy_size.Scale(ui::GetScaleFactorScale(ui::SCALE_FACTOR_200P)); 121 copy_size.Scale(ui::GetScaleFactorScale(ui::SCALE_FACTOR_200P)));
121 break; 122 break;
122 } 123 }
123 return copy_size; 124 return copy_size;
124 } 125 }
125 126
126 // Returns the size of the thumbnail stored in the database in pixel. 127 // Returns the size of the thumbnail stored in the database in pixel.
127 gfx::Size GetThumbnailSizeInPixel() { 128 gfx::Size GetThumbnailSizeInPixel() {
128 gfx::Size thumbnail_size(kThumbnailWidth, kThumbnailHeight); 129 gfx::Size thumbnail_size(kThumbnailWidth, kThumbnailHeight);
129 // Determine the resolution of the thumbnail based on the primary monitor. 130 // Determine the resolution of the thumbnail based on the primary monitor.
130 // TODO(oshima): Use device's default scale factor. 131 // TODO(oshima): Use device's default scale factor.
131 gfx::Display primary_display = gfx::Screen::GetPrimaryDisplay(); 132 gfx::Display primary_display = gfx::Screen::GetPrimaryDisplay();
132 return thumbnail_size.Scale(primary_display.device_scale_factor()); 133 return gfx::ToFlooredSize(
134 thumbnail_size.Scale(primary_display.device_scale_factor()));
133 } 135 }
134 136
135 // Returns the clipping rectangle that is used for creating a thumbnail with 137 // Returns the clipping rectangle that is used for creating a thumbnail with
136 // the size of |desired_size| from the bitmap with the size of |source_size|. 138 // the size of |desired_size| from the bitmap with the size of |source_size|.
137 // The type of clipping that needs to be done is assigned to |clip_result|. 139 // The type of clipping that needs to be done is assigned to |clip_result|.
138 gfx::Rect GetClippingRect(const gfx::Size& source_size, 140 gfx::Rect GetClippingRect(const gfx::Size& source_size,
139 const gfx::Size& desired_size, 141 const gfx::Size& desired_size,
140 ThumbnailGenerator::ClipResult* clip_result) { 142 ThumbnailGenerator::ClipResult* clip_result) {
141 DCHECK(clip_result); 143 DCHECK(clip_result);
142 144
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 void ThumbnailGenerator::AskForSnapshot(RenderWidgetHost* renderer, 306 void ThumbnailGenerator::AskForSnapshot(RenderWidgetHost* renderer,
305 const ThumbnailReadyCallback& callback, 307 const ThumbnailReadyCallback& callback,
306 gfx::Size page_size, 308 gfx::Size page_size,
307 gfx::Size desired_size) { 309 gfx::Size desired_size) {
308 // We are going to render the thumbnail asynchronously now, so keep 310 // We are going to render the thumbnail asynchronously now, so keep
309 // this callback for later lookup when the rendering is done. 311 // this callback for later lookup when the rendering is done.
310 static int sequence_num = 0; 312 static int sequence_num = 0;
311 sequence_num++; 313 sequence_num++;
312 float scale_factor = ui::GetScaleFactorScale(ui::GetScaleFactorForNativeView( 314 float scale_factor = ui::GetScaleFactorScale(ui::GetScaleFactorForNativeView(
313 renderer->GetView()->GetNativeView())); 315 renderer->GetView()->GetNativeView()));
314 gfx::Size desired_size_in_pixel = desired_size.Scale(scale_factor); 316 gfx::Size desired_size_in_pixel = gfx::ToFlooredSize(
317 desired_size.Scale(scale_factor));
315 scoped_ptr<TransportDIB> thumbnail_dib(TransportDIB::Create( 318 scoped_ptr<TransportDIB> thumbnail_dib(TransportDIB::Create(
316 desired_size_in_pixel.GetArea() * 4, sequence_num)); 319 desired_size_in_pixel.GetArea() * 4, sequence_num));
317 320
318 #if defined(USE_X11) 321 #if defined(USE_X11)
319 // TODO: IPC a handle to the renderer like Windows. 322 // TODO: IPC a handle to the renderer like Windows.
320 // http://code.google.com/p/chromium/issues/detail?id=89777 323 // http://code.google.com/p/chromium/issues/detail?id=89777
321 NOTIMPLEMENTED(); 324 NOTIMPLEMENTED();
322 return; 325 return;
323 #else 326 #else
324 327
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 void ThumbnailGenerator::DidStartLoading( 640 void ThumbnailGenerator::DidStartLoading(
638 content::RenderViewHost* render_view_host) { 641 content::RenderViewHost* render_view_host) {
639 load_interrupted_ = false; 642 load_interrupted_ = false;
640 } 643 }
641 644
642 void ThumbnailGenerator::StopNavigation() { 645 void ThumbnailGenerator::StopNavigation() {
643 // This function gets called when the page loading is interrupted by the 646 // This function gets called when the page loading is interrupted by the
644 // stop button. 647 // stop button.
645 load_interrupted_ = true; 648 load_interrupted_ = true;
646 } 649 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698