summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ash/shell/app_list.cc5
-rw-r--r--chrome/browser/chromeos/status/network_menu_icon.cc2
-rw-r--r--chrome/browser/extensions/extension_icon_manager.cc6
-rw-r--r--chrome/browser/profiles/profile_info_util.cc15
-rw-r--r--chrome/browser/tab_contents/thumbnail_generator_unittest.cc14
-rw-r--r--chrome/browser/themes/browser_theme_pack.cc9
-rw-r--r--chrome/browser/ui/cocoa/infobars/extension_infobar_controller.mm5
-rw-r--r--chrome/browser/ui/gtk/avatar_menu_item_gtk.cc2
-rw-r--r--chrome/browser/ui/gtk/gtk_theme_service.cc5
-rw-r--r--chrome/browser/ui/gtk/infobars/extension_infobar_gtk.cc4
-rw-r--r--chrome/browser/ui/libgtk2ui/gtk2_ui.cc5
-rw-r--r--chrome/browser/ui/panels/panel_browser_frame_view.cc4
-rw-r--r--chrome/browser/ui/panels/panel_browser_window_gtk.cc4
-rw-r--r--chrome/browser/ui/panels/panel_frame_view.cc4
-rw-r--r--chrome/browser/ui/panels/taskbar_window_thumbnailer_win.cc4
-rw-r--r--chrome/browser/ui/views/dropdown_bar_view.cc6
-rw-r--r--chrome/browser/ui/views/extensions/browser_action_overflow_menu_controller.cc2
-rw-r--r--chrome/browser/ui/views/omnibox/omnibox_view_win.cc2
-rw-r--r--chrome/browser/ui/views/tabs/dragged_tab_view.cc5
-rw-r--r--chrome/browser/ui/views/tabs/tab.cc8
-rw-r--r--chrome/browser/ui/views/tabs/tab_strip.cc4
-rw-r--r--chrome/browser/ui/views/theme_helpers.cc2
-rw-r--r--chrome/browser/ui/webui/ntp/ntp_login_handler.cc5
-rw-r--r--chrome/common/badge_util.cc6
-rw-r--r--chrome/renderer/print_web_view_helper.cc5
-rw-r--r--content/browser/renderer_host/render_widget_host_unittest.cc2
-rw-r--r--content/browser/renderer_host/render_widget_host_view_win.cc2
-rw-r--r--ui/base/clipboard/clipboard_gtk.cc6
-rw-r--r--ui/base/clipboard/clipboard_mac.mm4
-rw-r--r--ui/base/clipboard/clipboard_win.cc6
-rw-r--r--ui/base/dragdrop/drag_utils.cc2
-rw-r--r--ui/base/native_theme/native_theme_android.cc11
-rw-r--r--ui/base/native_theme/native_theme_base.cc11
-rw-r--r--ui/compositor/layer.cc14
-rw-r--r--ui/compositor/layer_unittest.cc4
-rw-r--r--ui/gfx/canvas.cc78
-rw-r--r--ui/gfx/canvas.h43
-rw-r--r--ui/gfx/canvas_linux.cc6
-rw-r--r--ui/gfx/canvas_skia.cc10
-rw-r--r--ui/gfx/image/canvas_image_source.cc2
-rw-r--r--ui/gfx/image/image.cc6
-rw-r--r--ui/views/controls/glow_hover_controller.cc2
-rw-r--r--ui/views/controls/menu/native_menu_win.cc1
-rw-r--r--ui/views/controls/table/table_view_win.cc10
-rw-r--r--ui/views/controls/tree/tree_view_win.cc6
-rw-r--r--ui/views/widget/native_widget_win.cc3
46 files changed, 181 insertions, 181 deletions
diff --git a/ash/shell/app_list.cc b/ash/shell/app_list.cc
index 6d636d9..bf2e8b4 100644
--- a/ash/shell/app_list.cc
+++ b/ash/shell/app_list.cc
@@ -203,7 +203,8 @@ class ExampleAppListViewDelegate : public app_list::AppListViewDelegate {
const string16 icon_text = ASCIIToUTF16("ash");
const gfx::Size icon_size(32, 32);
- gfx::Canvas canvas(icon_size, false /* is_opaque */);
+ gfx::Canvas canvas(icon_size, ui::SCALE_FACTOR_100P,
+ false /* is_opaque */);
canvas.DrawStringInt(icon_text,
gfx::Font(),
SK_ColorBLACK,
@@ -212,7 +213,7 @@ class ExampleAppListViewDelegate : public app_list::AppListViewDelegate {
gfx::Canvas::TEXT_VALIGN_MIDDLE |
gfx::Canvas::NO_SUBPIXEL_RENDERING);
- return gfx::ImageSkia(canvas.ExtractImageSkiaRep());
+ return gfx::ImageSkia(canvas.ExtractImageRep());
}
void DecorateSearchBox(app_list::SearchBoxModel* search_box_model) {
diff --git a/chrome/browser/chromeos/status/network_menu_icon.cc b/chrome/browser/chromeos/status/network_menu_icon.cc
index e5a5f72..d546d8a 100644
--- a/chrome/browser/chromeos/status/network_menu_icon.cc
+++ b/chrome/browser/chromeos/status/network_menu_icon.cc
@@ -233,7 +233,7 @@ class NetworkIconImageSource : public gfx::ImageSkiaSource {
icon_.width() - bottom_right_badge_->width(),
icon_.height() - bottom_right_badge_->height());
}
- return gfx::ImageSkiaRep(canvas.ExtractBitmap(), icon_rep.scale_factor());
+ return canvas.ExtractImageRep();
}
private:
diff --git a/chrome/browser/extensions/extension_icon_manager.cc b/chrome/browser/extensions/extension_icon_manager.cc
index 7f57da2..ac47e2f 100644
--- a/chrome/browser/extensions/extension_icon_manager.cc
+++ b/chrome/browser/extensions/extension_icon_manager.cc
@@ -27,13 +27,15 @@ static SkBitmap ApplyPadding(const SkBitmap& source,
const gfx::Insets& padding) {
scoped_ptr<gfx::Canvas> result(
new gfx::Canvas(gfx::Size(source.width() + padding.width(),
- source.height() + padding.height()), false));
+ source.height() + padding.height()),
+ ui::SCALE_FACTOR_100P,
+ false));
result->DrawImageInt(
source,
0, 0, source.width(), source.height(),
padding.left(), padding.top(), source.width(), source.height(),
false);
- return result->ExtractBitmap();
+ return result->ExtractImageRep().sk_bitmap();
}
} // namespace
diff --git a/chrome/browser/profiles/profile_info_util.cc b/chrome/browser/profiles/profile_info_util.cc
index 83d38f5..27e3130 100644
--- a/chrome/browser/profiles/profile_info_util.cc
+++ b/chrome/browser/profiles/profile_info_util.cc
@@ -21,7 +21,8 @@ gfx::Image GetAvatarIconForMenu(const gfx::Image& image,
int length = std::min(kAvatarIconWidth, kAvatarIconHeight) - 2;
SkBitmap bmp = skia::ImageOperations::Resize(
*image.ToSkBitmap(), skia::ImageOperations::RESIZE_BEST, length, length);
- gfx::Canvas canvas(gfx::Size(kAvatarIconWidth, kAvatarIconHeight), false);
+ gfx::Canvas canvas(gfx::Size(kAvatarIconWidth, kAvatarIconHeight),
+ ui::SCALE_FACTOR_100P, false);
// Draw the icon centered on the canvas.
int x = (kAvatarIconWidth - length) / 2;
@@ -32,7 +33,7 @@ gfx::Image GetAvatarIconForMenu(const gfx::Image& image,
SkColor color = SkColorSetARGB(83, 0, 0, 0);
canvas.DrawRect(gfx::Rect(x, y, length - 1, length - 1), color);
- return gfx::Image(canvas.ExtractBitmap());
+ return gfx::Image(canvas.ExtractImageRep());
}
gfx::Image GetAvatarIconForWebUI(const gfx::Image& image,
@@ -43,14 +44,15 @@ gfx::Image GetAvatarIconForWebUI(const gfx::Image& image,
int length = std::min(kAvatarIconWidth, kAvatarIconHeight) - 2;
SkBitmap bmp = skia::ImageOperations::Resize(
*image.ToSkBitmap(), skia::ImageOperations::RESIZE_BEST, length, length);
- gfx::Canvas canvas(gfx::Size(kAvatarIconWidth, kAvatarIconHeight), false);
+ gfx::Canvas canvas(gfx::Size(kAvatarIconWidth, kAvatarIconHeight),
+ ui::SCALE_FACTOR_100P, false);
// Draw the icon centered on the canvas.
int x = (kAvatarIconWidth - length) / 2;
int y = (kAvatarIconHeight - length) / 2;
canvas.DrawImageInt(bmp, x, y);
- return gfx::Image(canvas.ExtractBitmap());
+ return gfx::Image(canvas.ExtractImageRep());
}
gfx::Image GetAvatarIconForTitleBar(const gfx::Image& image,
@@ -64,7 +66,8 @@ gfx::Image GetAvatarIconForTitleBar(const gfx::Image& image,
std::min(dst_width, dst_height)) - 2;
SkBitmap bmp = skia::ImageOperations::Resize(
*image.ToSkBitmap(), skia::ImageOperations::RESIZE_BEST, length, length);
- gfx::Canvas canvas(gfx::Size(dst_width, dst_height), false);
+ gfx::Canvas canvas(gfx::Size(dst_width, dst_height), ui::SCALE_FACTOR_100P,
+ false);
// Draw the icon on the bottom center of the canvas.
int x1 = (dst_width - length) / 2;
@@ -88,7 +91,7 @@ gfx::Image GetAvatarIconForTitleBar(const gfx::Image& image,
canvas.DrawLine(gfx::Point(x2 - 1, y1 + 1), gfx::Point(x2 - 1, y2 - 1),
shadow_color);
- return gfx::Image(canvas.ExtractBitmap());
+ return gfx::Image(canvas.ExtractImageRep());
}
} // namespace
diff --git a/chrome/browser/tab_contents/thumbnail_generator_unittest.cc b/chrome/browser/tab_contents/thumbnail_generator_unittest.cc
index 90d73dd..19cc175 100644
--- a/chrome/browser/tab_contents/thumbnail_generator_unittest.cc
+++ b/chrome/browser/tab_contents/thumbnail_generator_unittest.cc
@@ -29,7 +29,7 @@ TEST_F(ThumbnailGeneratorTest, CalculateBoringScore_Empty) {
TEST_F(ThumbnailGeneratorTest, CalculateBoringScore_SingleColor) {
const gfx::Size kSize(20, 10);
- gfx::Canvas canvas(kSize, true);
+ gfx::Canvas canvas(kSize, ui::SCALE_FACTOR_100P, true);
// Fill all pixesl in black.
canvas.FillRect(gfx::Rect(kSize), SK_ColorBLACK);
@@ -42,7 +42,7 @@ TEST_F(ThumbnailGeneratorTest, CalculateBoringScore_SingleColor) {
TEST_F(ThumbnailGeneratorTest, CalculateBoringScore_TwoColors) {
const gfx::Size kSize(20, 10);
- gfx::Canvas canvas(kSize, true);
+ gfx::Canvas canvas(kSize, ui::SCALE_FACTOR_100P, true);
// Fill all pixesl in black.
canvas.FillRect(gfx::Rect(kSize), SK_ColorBLACK);
// Fill the left half pixels in white.
@@ -59,7 +59,7 @@ TEST_F(ThumbnailGeneratorTest, CalculateBoringScore_TwoColors) {
TEST_F(ThumbnailGeneratorTest, GetClippedBitmap_TallerThanWide) {
// The input bitmap is vertically long.
- gfx::Canvas canvas(gfx::Size(40, 90), true);
+ gfx::Canvas canvas(gfx::Size(40, 90), ui::SCALE_FACTOR_100P, true);
SkBitmap bitmap =
skia::GetTopDevice(*canvas.sk_canvas())->accessBitmap(false);
@@ -76,7 +76,7 @@ TEST_F(ThumbnailGeneratorTest, GetClippedBitmap_TallerThanWide) {
TEST_F(ThumbnailGeneratorTest, GetClippedBitmap_WiderThanTall) {
// The input bitmap is horizontally long.
- gfx::Canvas canvas(gfx::Size(70, 40), true);
+ gfx::Canvas canvas(gfx::Size(70, 40), ui::SCALE_FACTOR_100P, true);
SkBitmap bitmap =
skia::GetTopDevice(*canvas.sk_canvas())->accessBitmap(false);
@@ -93,7 +93,7 @@ TEST_F(ThumbnailGeneratorTest, GetClippedBitmap_WiderThanTall) {
TEST_F(ThumbnailGeneratorTest, GetClippedBitmap_TooWiderThanTall) {
// The input bitmap is horizontally very long.
- gfx::Canvas canvas(gfx::Size(90, 40), true);
+ gfx::Canvas canvas(gfx::Size(90, 40), ui::SCALE_FACTOR_100P, true);
SkBitmap bitmap =
skia::GetTopDevice(*canvas.sk_canvas())->accessBitmap(false);
@@ -110,7 +110,7 @@ TEST_F(ThumbnailGeneratorTest, GetClippedBitmap_TooWiderThanTall) {
TEST_F(ThumbnailGeneratorTest, GetClippedBitmap_NotClipped) {
// The input bitmap is square.
- gfx::Canvas canvas(gfx::Size(40, 40), true);
+ gfx::Canvas canvas(gfx::Size(40, 40), ui::SCALE_FACTOR_100P, true);
SkBitmap bitmap =
skia::GetTopDevice(*canvas.sk_canvas())->accessBitmap(false);
@@ -127,7 +127,7 @@ TEST_F(ThumbnailGeneratorTest, GetClippedBitmap_NotClipped) {
TEST_F(ThumbnailGeneratorTest, GetClippedBitmap_NonSquareOutput) {
// The input bitmap is square.
- gfx::Canvas canvas(gfx::Size(40, 40), true);
+ gfx::Canvas canvas(gfx::Size(40, 40), ui::SCALE_FACTOR_100P, true);
SkBitmap bitmap =
skia::GetTopDevice(*canvas.sk_canvas())->accessBitmap(false);
diff --git a/chrome/browser/themes/browser_theme_pack.cc b/chrome/browser/themes/browser_theme_pack.cc
index d1b843c..bf3f74a 100644
--- a/chrome/browser/themes/browser_theme_pack.cc
+++ b/chrome/browser/themes/browser_theme_pack.cc
@@ -1009,11 +1009,8 @@ void BrowserThemePack::GenerateTabBackgroundImages(ImageCache* bitmaps) const {
int vertical_offset = bitmaps->count(prs_id)
? kRestoredTabVerticalOffset : 0;
gfx::Canvas canvas(gfx::Size(bg_tint.width(), bg_tint.height()),
+ image_rep_to_tint.scale_factor(),
false);
- SkScalar image_rep_to_tint_scale =
- SkFloatToScalar(image_rep_to_tint.GetScale());
- canvas.sk_canvas()->scale(image_rep_to_tint_scale,
- image_rep_to_tint_scale);
canvas.TileImageInt(bg_tint, 0, vertical_offset, 0, 0,
bg_tint_dip_size.width(), bg_tint_dip_size.height());
@@ -1024,9 +1021,7 @@ void BrowserThemePack::GenerateTabBackgroundImages(ImageCache* bitmaps) const {
canvas.TileImageInt(*overlay, 0, 0, bg_tint_dip_size.width(),
overlay->height());
}
- SkBitmap bg_tab = canvas.ExtractBitmap();
- tinted_image.AddRepresentation(gfx::ImageSkiaRep(bg_tab,
- image_rep_to_tint.scale_factor()));
+ tinted_image.AddRepresentation(canvas.ExtractImageRep());
}
temp_output[prs_id] = new gfx::Image(tinted_image);
diff --git a/chrome/browser/ui/cocoa/infobars/extension_infobar_controller.mm b/chrome/browser/ui/cocoa/infobars/extension_infobar_controller.mm
index e0b77ed..fb52ade 100644
--- a/chrome/browser/ui/cocoa/infobars/extension_infobar_controller.mm
+++ b/chrome/browser/ui/cocoa/infobars/extension_infobar_controller.mm
@@ -105,7 +105,7 @@ class InfobarBridge : public ExtensionInfoBarDelegate::DelegateObserver,
scoped_ptr<gfx::Canvas> canvas(
new gfx::Canvas(
gfx::Size(image_size + kDropArrowLeftMarginPx + drop_image->width(),
- image_size), false));
+ image_size), ui::SCALE_FACTOR_100P, false));
canvas->DrawImageInt(*icon,
0, 0, icon->width(), icon->height(),
0, 0, image_size, image_size,
@@ -113,7 +113,8 @@ class InfobarBridge : public ExtensionInfoBarDelegate::DelegateObserver,
canvas->DrawImageInt(*drop_image,
image_size + kDropArrowLeftMarginPx,
image_size / 2);
- [owner_ setButtonImage:gfx::SkBitmapToNSImage(canvas->ExtractBitmap())];
+ [owner_ setButtonImage:gfx::SkBitmapToNSImage(
+ canvas->ExtractImageRep().sk_bitmap())];
}
// Overridden from ExtensionInfoBarDelegate::DelegateObserver:
diff --git a/chrome/browser/ui/gtk/avatar_menu_item_gtk.cc b/chrome/browser/ui/gtk/avatar_menu_item_gtk.cc
index 1510f6c..434fe22 100644
--- a/chrome/browser/ui/gtk/avatar_menu_item_gtk.cc
+++ b/chrome/browser/ui/gtk/avatar_menu_item_gtk.cc
@@ -213,7 +213,7 @@ void AvatarMenuItemGtk::Init(GtkThemeService* theme_service) {
int x = avatar_image->width() - check_image->width() + kCheckMarkXOffset;
canvas.DrawImageInt(*check_image, x, y);
- SkBitmap final_image = canvas.ExtractBitmap();
+ SkBitmap final_image = canvas.ExtractImageRep().sk_bitmap();
avatar_pixbuf = gfx::GdkPixbufFromSkBitmap(final_image);
} else {
avatar_pixbuf = gfx::GdkPixbufFromSkBitmap(*item_.icon.ToSkBitmap());
diff --git a/chrome/browser/ui/gtk/gtk_theme_service.cc b/chrome/browser/ui/gtk/gtk_theme_service.cc
index 8d55010..27af31c 100644
--- a/chrome/browser/ui/gtk/gtk_theme_service.cc
+++ b/chrome/browser/ui/gtk/gtk_theme_service.cc
@@ -1014,7 +1014,8 @@ SkBitmap GtkThemeService::GenerateFrameImage(
DCHECK(it != colors_.end());
SkColor base = it->second;
- gfx::Canvas canvas(gfx::Size(kToolbarImageWidth, kToolbarImageHeight), true);
+ gfx::Canvas canvas(gfx::Size(kToolbarImageWidth, kToolbarImageHeight),
+ ui::SCALE_FACTOR_100P, true);
int gradient_size;
GdkColor* gradient_top_color = NULL;
@@ -1041,7 +1042,7 @@ SkBitmap GtkThemeService::GenerateFrameImage(
canvas.FillRect(gfx::Rect(0, gradient_size, kToolbarImageWidth,
kToolbarImageHeight - gradient_size), base);
- return canvas.ExtractBitmap();
+ return canvas.ExtractImageRep().sk_bitmap();
}
SkBitmap GtkThemeService::GenerateTabImage(int base_id) const {
diff --git a/chrome/browser/ui/gtk/infobars/extension_infobar_gtk.cc b/chrome/browser/ui/gtk/infobars/extension_infobar_gtk.cc
index 4e5ff10..4ad5c21 100644
--- a/chrome/browser/ui/gtk/infobars/extension_infobar_gtk.cc
+++ b/chrome/browser/ui/gtk/infobars/extension_infobar_gtk.cc
@@ -85,13 +85,13 @@ void ExtensionInfoBarGtk::OnImageLoaded(const gfx::Image& image,
static const int kDropArrowLeftMargin = 3;
scoped_ptr<gfx::Canvas> canvas(new gfx::Canvas(
gfx::Size(image_size + kDropArrowLeftMargin + drop_image->width(),
- image_size), false));
+ image_size), ui::SCALE_FACTOR_100P, false));
canvas->DrawImageInt(*icon, 0, 0, icon->width(), icon->height(), 0, 0,
image_size, image_size, false);
canvas->DrawImageInt(*drop_image, image_size + kDropArrowLeftMargin,
image_size / 2);
- SkBitmap bitmap = canvas->ExtractBitmap();
+ SkBitmap bitmap = canvas->ExtractImageRep().sk_bitmap();
GdkPixbuf* pixbuf = gfx::GdkPixbufFromSkBitmap(bitmap);
gtk_image_set_from_pixbuf(GTK_IMAGE(icon_), pixbuf);
g_object_unref(pixbuf);
diff --git a/chrome/browser/ui/libgtk2ui/gtk2_ui.cc b/chrome/browser/ui/libgtk2ui/gtk2_ui.cc
index e2fede6..15cad58 100644
--- a/chrome/browser/ui/libgtk2ui/gtk2_ui.cc
+++ b/chrome/browser/ui/libgtk2ui/gtk2_ui.cc
@@ -740,7 +740,8 @@ SkBitmap Gtk2UI::GenerateFrameImage(
DCHECK(it != colors_.end());
SkColor base = it->second;
- gfx::Canvas canvas(gfx::Size(kToolbarImageWidth, kToolbarImageHeight), true);
+ gfx::Canvas canvas(gfx::Size(kToolbarImageWidth, kToolbarImageHeight),
+ ui::SCALE_FACTOR_100P, true);
int gradient_size;
GdkColor* gradient_top_color = NULL;
@@ -767,7 +768,7 @@ SkBitmap Gtk2UI::GenerateFrameImage(
canvas.FillRect(gfx::Rect(0, gradient_size, kToolbarImageWidth,
kToolbarImageHeight - gradient_size), base);
- return canvas.ExtractBitmap();
+ return canvas.ExtractImageRep().sk_bitmap();
}
SkBitmap Gtk2UI::GenerateTabImage(int base_id) const {
diff --git a/chrome/browser/ui/panels/panel_browser_frame_view.cc b/chrome/browser/ui/panels/panel_browser_frame_view.cc
index 66bb7c1..d2006d8 100644
--- a/chrome/browser/ui/panels/panel_browser_frame_view.cc
+++ b/chrome/browser/ui/panels/panel_browser_frame_view.cc
@@ -150,9 +150,9 @@ struct EdgeResources {
};
gfx::ImageSkia* CreateImageForColor(SkColor color) {
- gfx::Canvas canvas(gfx::Size(1, 1), true);
+ gfx::Canvas canvas(gfx::Size(1, 1), ui::SCALE_FACTOR_100P, true);
canvas.DrawColor(color);
- return new gfx::ImageSkia(canvas.ExtractBitmap());
+ return new gfx::ImageSkia(canvas.ExtractImageRep());
}
const ButtonResources& GetCloseButtonResources() {
diff --git a/chrome/browser/ui/panels/panel_browser_window_gtk.cc b/chrome/browser/ui/panels/panel_browser_window_gtk.cc
index 1b15f44..d41a773 100644
--- a/chrome/browser/ui/panels/panel_browser_window_gtk.cc
+++ b/chrome/browser/ui/panels/panel_browser_window_gtk.cc
@@ -48,9 +48,9 @@ const SkColor kDividerColor = SkColorSetRGB(0x2a, 0x2c, 0x2c);
const int kMinWindowWidth = 26;
gfx::Image* CreateImageForColor(SkColor color) {
- gfx::Canvas canvas(gfx::Size(1, 1), true);
+ gfx::Canvas canvas(gfx::Size(1, 1), ui::SCALE_FACTOR_100P, true);
canvas.DrawColor(color);
- return new gfx::Image(canvas.ExtractBitmap());
+ return new gfx::Image(gfx::ImageSkia(canvas.ExtractImageRep()));
}
const gfx::Image* GetActiveBackgroundDefaultImage() {
diff --git a/chrome/browser/ui/panels/panel_frame_view.cc b/chrome/browser/ui/panels/panel_frame_view.cc
index 2cd301f..5eee67d 100644
--- a/chrome/browser/ui/panels/panel_frame_view.cc
+++ b/chrome/browser/ui/panels/panel_frame_view.cc
@@ -109,9 +109,9 @@ struct EdgeResources {
};
gfx::ImageSkia* CreateImageForColor(SkColor color) {
- gfx::Canvas canvas(gfx::Size(1, 1), true);
+ gfx::Canvas canvas(gfx::Size(1, 1), ui::SCALE_FACTOR_100P, true);
canvas.DrawColor(color);
- return new gfx::ImageSkia(canvas.ExtractBitmap());
+ return new gfx::ImageSkia(canvas.ExtractImageRep());
}
const EdgeResources& GetFrameEdges() {
diff --git a/chrome/browser/ui/panels/taskbar_window_thumbnailer_win.cc b/chrome/browser/ui/panels/taskbar_window_thumbnailer_win.cc
index 5eee233..4dfdcdb 100644
--- a/chrome/browser/ui/panels/taskbar_window_thumbnailer_win.cc
+++ b/chrome/browser/ui/panels/taskbar_window_thumbnailer_win.cc
@@ -128,11 +128,11 @@ SkBitmap* TaskbarWindowThumbnailerWin::CaptureWindowImage() const {
int width = bounds.right - bounds.left;
int height = bounds.bottom - bounds.top;
- gfx::Canvas canvas(gfx::Size(width, height), false);
+ gfx::Canvas canvas(gfx::Size(width, height), ui::SCALE_FACTOR_100P, false);
HDC target_dc = canvas.BeginPlatformPaint();
HDC source_dc = ::GetDC(hwnd_);
::BitBlt(target_dc, 0, 0, width, height, source_dc, 0, 0, SRCCOPY);
::ReleaseDC(hwnd_, source_dc);
canvas.EndPlatformPaint();
- return new SkBitmap(canvas.ExtractBitmap());
+ return new SkBitmap(canvas.ExtractImageRep().sk_bitmap());
}
diff --git a/chrome/browser/ui/views/dropdown_bar_view.cc b/chrome/browser/ui/views/dropdown_bar_view.cc
index b811c21..0067779 100644
--- a/chrome/browser/ui/views/dropdown_bar_view.cc
+++ b/chrome/browser/ui/views/dropdown_bar_view.cc
@@ -111,11 +111,13 @@ void DropdownBarView::OnPaint(gfx::Canvas* canvas) {
if (animation_offset() > 0) {
gfx::Canvas animating_edges(
- gfx::Size(bounds().width(), kAnimatingEdgeHeight), false);
+ gfx::Size(bounds().width(), kAnimatingEdgeHeight),
+ canvas->scale_factor(),
+ false);
canvas->Translate(bounds().origin());
OnPaintBackground(&animating_edges);
OnPaintBorder(&animating_edges);
- canvas->DrawImageInt(animating_edges.ExtractBitmap(), bounds().x(),
+ canvas->DrawImageInt(animating_edges.ExtractImageRep(), bounds().x(),
animation_offset());
}
}
diff --git a/chrome/browser/ui/views/extensions/browser_action_overflow_menu_controller.cc b/chrome/browser/ui/views/extensions/browser_action_overflow_menu_controller.cc
index e26037b..2fba05a 100644
--- a/chrome/browser/ui/views/extensions/browser_action_overflow_menu_controller.cc
+++ b/chrome/browser/ui/views/extensions/browser_action_overflow_menu_controller.cc
@@ -44,7 +44,7 @@ BrowserActionOverflowMenuController::BrowserActionOverflowMenuController(
menu_->AppendMenuItemWithIcon(
command_id,
UTF8ToUTF16(view->button()->extension()->name()),
- canvas->ExtractBitmap());
+ canvas->ExtractImageRep());
// Set the tooltip for this item.
string16 tooltip = UTF8ToUTF16(
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_win.cc b/chrome/browser/ui/views/omnibox/omnibox_view_win.cc
index eb131b2..44a6e1a 100644
--- a/chrome/browser/ui/views/omnibox/omnibox_view_win.cc
+++ b/chrome/browser/ui/views/omnibox/omnibox_view_win.cc
@@ -2380,7 +2380,7 @@ void OmniboxViewWin::DrawSlashForInsecureScheme(HDC hdc,
// it to fully transparent so any antialiasing will look nice when painted
// atop the edit.
gfx::Canvas canvas(gfx::Size(scheme_rect.Width(), scheme_rect.Height()),
- false);
+ ui::SCALE_FACTOR_100P, false);
SkCanvas* sk_canvas = canvas.sk_canvas();
sk_canvas->getDevice()->accessBitmap(true).eraseARGB(0, 0, 0, 0);
diff --git a/chrome/browser/ui/views/tabs/dragged_tab_view.cc b/chrome/browser/ui/views/tabs/dragged_tab_view.cc
index 49e1431..cb0ff4d 100644
--- a/chrome/browser/ui/views/tabs/dragged_tab_view.cc
+++ b/chrome/browser/ui/views/tabs/dragged_tab_view.cc
@@ -133,7 +133,8 @@ gfx::Size DraggedTabView::GetPreferredSize() {
void DraggedTabView::PaintDetachedView(gfx::Canvas* canvas) {
gfx::Size ps = GetPreferredSize();
- gfx::Canvas scale_canvas(ps, false);
+ // TODO(pkotwicz): DIP enable this class.
+ gfx::Canvas scale_canvas(ps, ui::SCALE_FACTOR_100P, false);
SkBitmap& bitmap_device = const_cast<SkBitmap&>(
skia::GetTopDevice(*scale_canvas.sk_canvas())->accessBitmap(true));
bitmap_device.eraseARGB(0, 0, 0, 0);
@@ -153,7 +154,7 @@ void DraggedTabView::PaintDetachedView(gfx::Canvas* canvas) {
SkIRect subset;
subset.set(0, 0, ps.width(), ps.height());
- SkBitmap mipmap = scale_canvas.ExtractBitmap();
+ SkBitmap mipmap = scale_canvas.ExtractImageRep().sk_bitmap();
mipmap.buildMipMap(true);
SkShader* bitmap_shader =
diff --git a/chrome/browser/ui/views/tabs/tab.cc b/chrome/browser/ui/views/tabs/tab.cc
index 46af013..984b613 100644
--- a/chrome/browser/ui/views/tabs/tab.cc
+++ b/chrome/browser/ui/views/tabs/tab.cc
@@ -565,7 +565,7 @@ void Tab::PaintInactiveTabBackgroundWithTitleChange(gfx::Canvas* canvas) {
gfx::Canvas background_canvas(size(), canvas->scale_factor(), false);
PaintInactiveTabBackground(&background_canvas);
- gfx::ImageSkia background_image(background_canvas.ExtractImageSkiaRep());
+ gfx::ImageSkia background_image(background_canvas.ExtractImageRep());
// Draw a radial gradient to hover_canvas.
gfx::Canvas hover_canvas(size(), canvas->scale_factor(), false);
@@ -595,7 +595,7 @@ void Tab::PaintInactiveTabBackgroundWithTitleChange(gfx::Canvas* canvas) {
// Draw the radial gradient clipped to the background into hover_image.
gfx::ImageSkia hover_image = gfx::ImageSkiaOperations::CreateMaskedImage(
- gfx::ImageSkia(hover_canvas.ExtractImageSkiaRep()), background_image);
+ gfx::ImageSkia(hover_canvas.ExtractImageRep()), background_image);
// Draw the tab background to the canvas.
canvas->DrawImageInt(background_image, 0, 0);
@@ -677,11 +677,11 @@ void Tab::PaintInactiveTabBackground(gfx::Canvas* canvas) {
height() - drop_shadow_height() - kToolbarOverlap - tab_image->y_offset);
canvas->DrawImageInt(
- gfx::ImageSkia(background_canvas.ExtractImageSkiaRep()), 0, 0);
+ gfx::ImageSkia(background_canvas.ExtractImageRep()), 0, 0);
if (!GetThemeProvider()->HasCustomImage(tab_id) &&
hover_controller().ShouldDraw()) {
- hover_controller().Draw(canvas, background_canvas.ExtractImageSkiaRep());
+ hover_controller().Draw(canvas, background_canvas.ExtractImageRep());
}
// Now draw the highlights/shadows around the tab edge.
diff --git a/chrome/browser/ui/views/tabs/tab_strip.cc b/chrome/browser/ui/views/tabs/tab_strip.cc
index 1bdccf8..3e773c0 100644
--- a/chrome/browser/ui/views/tabs/tab_strip.cc
+++ b/chrome/browser/ui/views/tabs/tab_strip.cc
@@ -436,7 +436,7 @@ gfx::ImageSkia NewTabButton::GetBackgroundImage(
canvas.FillRect(gfx::Rect(size()), SkColorSetARGB(64, 255, 255, 255));
return gfx::ImageSkiaOperations::CreateMaskedImage(
- gfx::ImageSkia(canvas.ExtractImageSkiaRep()), *mask);
+ gfx::ImageSkia(canvas.ExtractImageRep()), *mask);
}
gfx::ImageSkia NewTabButton::GetImageForState(
@@ -467,7 +467,7 @@ gfx::ImageSkia NewTabButton::GetImageForState(
canvas.DrawImageInt(*overlay, 0, 0);
canvas.Restore();
- return gfx::ImageSkia(canvas.ExtractImageSkiaRep());
+ return gfx::ImageSkia(canvas.ExtractImageRep());
}
gfx::ImageSkia NewTabButton::GetImage(ui::ScaleFactor scale_factor) const {
diff --git a/chrome/browser/ui/views/theme_helpers.cc b/chrome/browser/ui/views/theme_helpers.cc
index 954a745..833f49c 100644
--- a/chrome/browser/ui/views/theme_helpers.cc
+++ b/chrome/browser/ui/views/theme_helpers.cc
@@ -23,7 +23,7 @@ void GetRebarGradientColors(int width, int x1, int x2,
// those so calling code can use them to create gradient brushes for use in
// rendering in other directions.
- gfx::Canvas canvas(gfx::Size(width, 1), true);
+ gfx::Canvas canvas(gfx::Size(width, 1), ui::SCALE_FACTOR_100P, true);
// Render the Rebar gradient into the DIB
CTheme theme;
diff --git a/chrome/browser/ui/webui/ntp/ntp_login_handler.cc b/chrome/browser/ui/webui/ntp/ntp_login_handler.cc
index e391b54..14ea6fa 100644
--- a/chrome/browser/ui/webui/ntp/ntp_login_handler.cc
+++ b/chrome/browser/ui/webui/ntp/ntp_login_handler.cc
@@ -60,14 +60,15 @@ SkBitmap GetGAIAPictureForNTP(const gfx::Image& image) {
SkBitmap bmp = skia::ImageOperations::Resize(*image.ToSkBitmap(),
skia::ImageOperations::RESIZE_BEST, kLength, kLength);
- gfx::Canvas canvas(gfx::Size(kLength, kLength), false);
+ gfx::Canvas canvas(gfx::Size(kLength, kLength), ui::SCALE_FACTOR_100P,
+ false);
canvas.DrawImageInt(bmp, 0, 0);
// Draw a gray border on the inside of the icon.
SkColor color = SkColorSetARGB(83, 0, 0, 0);
canvas.DrawRect(gfx::Rect(0, 0, kLength - 1, kLength - 1), color);
- return canvas.ExtractBitmap();
+ return canvas.ExtractImageRep().sk_bitmap();
}
// Puts the |content| into a span with the given CSS class.
diff --git a/chrome/common/badge_util.cc b/chrome/common/badge_util.cc
index 3859a72..42668e8 100644
--- a/chrome/common/badge_util.cc
+++ b/chrome/common/badge_util.cc
@@ -84,8 +84,8 @@ SkBitmap DrawBadgeIconOverlay(const SkBitmap& icon,
badge_width--;
// Render the badge bitmap and overlay into a canvas.
- scoped_ptr<gfx::Canvas> canvas(
- new gfx::Canvas(gfx::Size(badge_width, icon.height()), false));
+ scoped_ptr<gfx::Canvas> canvas(new gfx::Canvas(
+ gfx::Size(badge_width, icon.height()), ui::SCALE_FACTOR_100P, false));
canvas->DrawImageInt(icon, 0, 0);
// Draw the text overlay centered horizontally and vertically. Skia expects
@@ -97,7 +97,7 @@ SkBitmap DrawBadgeIconOverlay(const SkBitmap& icon,
badge_text.c_str(), badge_text.size(), x, y, *paint);
// Return the generated image.
- return canvas->ExtractBitmap();
+ return canvas->ExtractImageRep().sk_bitmap();
}
} // namespace badge_util
diff --git a/chrome/renderer/print_web_view_helper.cc b/chrome/renderer/print_web_view_helper.cc
index 79c4e47..c425877 100644
--- a/chrome/renderer/print_web_view_helper.cc
+++ b/chrome/renderer/print_web_view_helper.cc
@@ -453,8 +453,9 @@ void PrintHeaderFooterText(
SkMatrix m = canvas->getTotalMatrix();
ui::ScaleFactor device_scale_factor = ui::GetScaleFactorFromScale(
SkScalarAbs(m.getScaleX()));
- gfx::Canvas gfx_canvas(canvas, device_scale_factor, false);
- paint->Draw(&gfx_canvas);
+ scoped_ptr<gfx::Canvas> gfx_canvas(gfx::Canvas::CreateCanvasWithoutScaling(
+ canvas, device_scale_factor));
+ paint->Draw(gfx_canvas.get());
}
#else
// TODO(arthurhsu): following code has issues with i18n BiDi, see
diff --git a/content/browser/renderer_host/render_widget_host_unittest.cc b/content/browser/renderer_host/render_widget_host_unittest.cc
index e0e46bb..37e1e63 100644
--- a/content/browser/renderer_host/render_widget_host_unittest.cc
+++ b/content/browser/renderer_host/render_widget_host_unittest.cc
@@ -489,7 +489,7 @@ TEST_F(RenderWidgetHostTest, Background) {
host_->SetView(view.get());
// Create a checkerboard background to test with.
- gfx::Canvas canvas(gfx::Size(4, 4), true);
+ gfx::Canvas canvas(gfx::Size(4, 4), ui::SCALE_FACTOR_100P, true);
canvas.FillRect(gfx::Rect(0, 0, 2, 2), SK_ColorBLACK);
canvas.FillRect(gfx::Rect(2, 0, 2, 2), SK_ColorWHITE);
canvas.FillRect(gfx::Rect(0, 2, 2, 2), SK_ColorWHITE);
diff --git a/content/browser/renderer_host/render_widget_host_view_win.cc b/content/browser/renderer_host/render_widget_host_view_win.cc
index 9149c23..d4b532d 100644
--- a/content/browser/renderer_host/render_widget_host_view_win.cc
+++ b/content/browser/renderer_host/render_widget_host_view_win.cc
@@ -1545,7 +1545,7 @@ void RenderWidgetHostViewWin::DrawBackground(const RECT& dirty_rect,
CPaintDC* dc) {
if (!background_.empty()) {
gfx::Rect dirty_area(dirty_rect);
- gfx::Canvas canvas(dirty_area.size(), true);
+ gfx::Canvas canvas(dirty_area.size(), ui::SCALE_FACTOR_100P, true);
canvas.Translate(gfx::Point().Subtract(dirty_area.origin()));
gfx::Rect dc_rect(dc->m_ps.rcPaint);
diff --git a/ui/base/clipboard/clipboard_gtk.cc b/ui/base/clipboard/clipboard_gtk.cc
index 78eebba..6199afa 100644
--- a/ui/base/clipboard/clipboard_gtk.cc
+++ b/ui/base/clipboard/clipboard_gtk.cc
@@ -564,14 +564,16 @@ SkBitmap Clipboard::ReadImage(Buffer buffer) const {
return SkBitmap();
gfx::Canvas canvas(gfx::Size(gdk_pixbuf_get_width(pixbuf.get()),
- gdk_pixbuf_get_height(pixbuf.get())), false);
+ gdk_pixbuf_get_height(pixbuf.get())),
+ ui::SCALE_FACTOR_100P,
+ false);
{
skia::ScopedPlatformPaint scoped_platform_paint(canvas.sk_canvas());
cairo_t* context = scoped_platform_paint.GetPlatformSurface();
gdk_cairo_set_source_pixbuf(context, pixbuf.get(), 0.0, 0.0);
cairo_paint(context);
}
- return canvas.ExtractBitmap();
+ return canvas.ExtractImageRep().sk_bitmap();
}
void Clipboard::ReadCustomData(Buffer buffer,
diff --git a/ui/base/clipboard/clipboard_mac.mm b/ui/base/clipboard/clipboard_mac.mm
index 7d0bea1..0367448 100644
--- a/ui/base/clipboard/clipboard_mac.mm
+++ b/ui/base/clipboard/clipboard_mac.mm
@@ -349,7 +349,7 @@ SkBitmap Clipboard::ReadImage(Buffer buffer) const {
int width = [image size].width;
int height = [image size].height;
- gfx::Canvas canvas(gfx::Size(width, height), false);
+ gfx::Canvas canvas(gfx::Size(width, height), ui::SCALE_FACTOR_100P, false);
{
skia::ScopedPlatformPaint scoped_platform_paint(canvas.sk_canvas());
CGContextRef gc = scoped_platform_paint.GetPlatformSurface();
@@ -361,7 +361,7 @@ SkBitmap Clipboard::ReadImage(Buffer buffer) const {
operation:NSCompositeCopy
fraction:1.0];
}
- return canvas.ExtractBitmap();
+ return canvas.ExtractImageRep().sk_bitmap();
}
void Clipboard::ReadCustomData(Buffer buffer,
diff --git a/ui/base/clipboard/clipboard_win.cc b/ui/base/clipboard/clipboard_win.cc
index 3fa071f..6ea0cb1 100644
--- a/ui/base/clipboard/clipboard_win.cc
+++ b/ui/base/clipboard/clipboard_win.cc
@@ -564,7 +564,9 @@ SkBitmap Clipboard::ReadImage(Buffer buffer) const {
+ bitmap->bmiHeader.biSize + color_table_length * sizeof(RGBQUAD);
gfx::Canvas canvas(gfx::Size(bitmap->bmiHeader.biWidth,
- bitmap->bmiHeader.biHeight), false);
+ bitmap->bmiHeader.biHeight),
+ ui::SCALE_FACTOR_100P,
+ false);
{
skia::ScopedPlatformPaint scoped_platform_paint(canvas.sk_canvas());
HDC dc = scoped_platform_paint.GetPlatformSurface();
@@ -592,7 +594,7 @@ SkBitmap Clipboard::ReadImage(Buffer buffer) const {
}
}
- return canvas.ExtractBitmap();
+ return canvas.ExtractImageRep().sk_bitmap();
}
void Clipboard::ReadCustomData(Buffer buffer,
diff --git a/ui/base/dragdrop/drag_utils.cc b/ui/base/dragdrop/drag_utils.cc
index 910fda13..34f4f93 100644
--- a/ui/base/dragdrop/drag_utils.cc
+++ b/ui/base/dragdrop/drag_utils.cc
@@ -102,7 +102,7 @@ void SetDragImageOnDataObject(const gfx::Canvas& canvas,
const gfx::Size& size,
const gfx::Point& cursor_offset,
ui::OSExchangeData* data_object) {
- gfx::ImageSkia image = gfx::ImageSkia(canvas.ExtractImageSkiaRep());
+ gfx::ImageSkia image = gfx::ImageSkia(canvas.ExtractImageRep());
SetDragImageOnDataObject(image, size, cursor_offset, data_object);
}
diff --git a/ui/base/native_theme/native_theme_android.cc b/ui/base/native_theme/native_theme_android.cc
index d507ade..79b1067 100644
--- a/ui/base/native_theme/native_theme_android.cc
+++ b/ui/base/native_theme/native_theme_android.cc
@@ -8,6 +8,7 @@
#include "base/basictypes.h"
#include "base/logging.h"
+#include "base/memory/scoped_ptr.h"
#include "grit/ui_resources.h"
#include "third_party/skia/include/effects/SkGradientShader.h"
#include "ui/base/layout.h"
@@ -670,8 +671,9 @@ void NativeThemeAndroid::DrawImageInt(SkCanvas* sk_canvas,
SkMatrix m = sk_canvas->getTotalMatrix();
ui::ScaleFactor device_scale_factor = ui::GetScaleFactorFromScale(
SkScalarAbs(m.getScaleX()));
- gfx::Canvas canvas(sk_canvas, device_scale_factor, false);
- canvas.DrawImageInt(image, src_x, src_y, src_w, src_h,
+ scoped_ptr<gfx::Canvas> canvas(gfx::Canvas::CreateCanvasWithoutScaling(
+ sk_canvas, device_scale_factor));
+ canvas->DrawImageInt(image, src_x, src_y, src_w, src_h,
dest_x, dest_y, dest_w, dest_h, true);
}
@@ -690,8 +692,9 @@ void NativeThemeAndroid::DrawTiledImage(SkCanvas* sk_canvas,
SkMatrix m = sk_canvas->getTotalMatrix();
ui::ScaleFactor device_scale_factor = ui::GetScaleFactorFromScale(
SkScalarAbs(m.getScaleX()));
- gfx::Canvas canvas(sk_canvas, device_scale_factor, false);
- canvas.TileImageInt(image, src_x, src_y, tile_scale_x,
+ scoped_ptr<gfx::Canvas> canvas(gfx::Canvas::CreateCanvasWithoutScaling(
+ sk_canvas, device_scale_factor));
+ canvas->TileImageInt(image, src_x, src_y, tile_scale_x,
tile_scale_y, dest_x, dest_y, w, h);
}
diff --git a/ui/base/native_theme/native_theme_base.cc b/ui/base/native_theme/native_theme_base.cc
index eab57e0..57b0a4e 100644
--- a/ui/base/native_theme/native_theme_base.cc
+++ b/ui/base/native_theme/native_theme_base.cc
@@ -8,6 +8,7 @@
#include "base/command_line.h"
#include "base/logging.h"
+#include "base/memory/scoped_ptr.h"
#include "grit/ui_resources.h"
#include "third_party/skia/include/effects/SkGradientShader.h"
#include "ui/base/layout.h"
@@ -1020,8 +1021,9 @@ void NativeThemeBase::DrawImageInt(
SkMatrix m = sk_canvas->getTotalMatrix();
ui::ScaleFactor device_scale_factor = ui::GetScaleFactorFromScale(
SkScalarAbs(m.getScaleX()));
- gfx::Canvas canvas(sk_canvas, device_scale_factor, false);
- canvas.DrawImageInt(image, src_x, src_y, src_w, src_h,
+ scoped_ptr<gfx::Canvas> canvas(gfx::Canvas::CreateCanvasWithoutScaling(
+ sk_canvas, device_scale_factor));
+ canvas->DrawImageInt(image, src_x, src_y, src_w, src_h,
dest_x, dest_y, dest_w, dest_h, true);
}
@@ -1034,8 +1036,9 @@ void NativeThemeBase::DrawTiledImage(SkCanvas* sk_canvas,
SkMatrix m = sk_canvas->getTotalMatrix();
ui::ScaleFactor device_scale_factor = ui::GetScaleFactorFromScale(
SkScalarAbs(m.getScaleX()));
- gfx::Canvas canvas(sk_canvas, device_scale_factor, false);
- canvas.TileImageInt(image, src_x, src_y, tile_scale_x,
+ scoped_ptr<gfx::Canvas> canvas(gfx::Canvas::CreateCanvasWithoutScaling(
+ sk_canvas, device_scale_factor));
+ canvas->TileImageInt(image, src_x, src_y, tile_scale_x,
tile_scale_y, dest_x, dest_y, w, h);
}
diff --git a/ui/compositor/layer.cc b/ui/compositor/layer.cc
index a3ae747..6c30d52 100644
--- a/ui/compositor/layer.cc
+++ b/ui/compositor/layer.cc
@@ -488,11 +488,19 @@ void Layer::paintContents(WebKit::WebCanvas* web_canvas,
WebKit::WebRect& opaque) {
#endif
TRACE_EVENT0("ui", "Layer::paintContents");
- gfx::Canvas canvas(web_canvas,
- ui::GetScaleFactorFromScale(device_scale_factor_), scale_content_);
+ scoped_ptr<gfx::Canvas> canvas(gfx::Canvas::CreateCanvasWithoutScaling(
+ web_canvas, ui::GetScaleFactorFromScale(device_scale_factor_)));
+
+ if (scale_content_) {
+ canvas->Save();
+ canvas->sk_canvas()->scale(SkFloatToScalar(device_scale_factor_),
+ SkFloatToScalar(device_scale_factor_));
+ }
if (delegate_)
- delegate_->OnPaintLayer(&canvas);
+ delegate_->OnPaintLayer(canvas.get());
+ if (scale_content_)
+ canvas->Restore();
}
unsigned Layer::prepareTexture(WebKit::WebTextureUpdater& /* updater */) {
diff --git a/ui/compositor/layer_unittest.cc b/ui/compositor/layer_unittest.cc
index c72bdd4..08623a7 100644
--- a/ui/compositor/layer_unittest.cc
+++ b/ui/compositor/layer_unittest.cc
@@ -238,8 +238,8 @@ class TestLayerDelegate : public LayerDelegate {
// Overridden from LayerDelegate:
virtual void OnPaintLayer(gfx::Canvas* canvas) OVERRIDE {
- SkBitmap contents = canvas->ExtractBitmap();
- paint_size_ = gfx::Size(contents.width(), contents.height());
+ gfx::ImageSkiaRep contents = canvas->ExtractImageRep();
+ paint_size_ = gfx::Size(contents.pixel_width(), contents.pixel_height());
canvas->FillRect(gfx::Rect(paint_size_), colors_[color_index_]);
color_index_ = (color_index_ + 1) % static_cast<int>(colors_.size());
const SkMatrix& matrix = canvas->sk_canvas()->getTotalMatrix();
diff --git a/ui/gfx/canvas.cc b/ui/gfx/canvas.cc
index 26f2e30..1a87c73 100644
--- a/ui/gfx/canvas.cc
+++ b/ui/gfx/canvas.cc
@@ -22,23 +22,12 @@
namespace gfx {
-Canvas::Canvas(const gfx::Size& size, bool is_opaque)
- : owned_canvas_(new skia::PlatformCanvas(size.width(), size.height(),
- is_opaque)),
- canvas_(owned_canvas_.get()) {
-#if defined(OS_WIN) || defined(OS_MACOSX)
- // skia::PlatformCanvas instances are initialized to 0 by Cairo on Linux, but
- // uninitialized on Win and Mac.
- if (!is_opaque)
- owned_canvas_->clear(SkColorSetARGB(0, 0, 0, 0));
-#endif
-
- ApplyScaleFactor(ui::SCALE_FACTOR_100P, false);
-}
-
Canvas::Canvas(const gfx::Size& size,
ui::ScaleFactor scale_factor,
- bool is_opaque) {
+ bool is_opaque)
+ : scale_factor_(scale_factor),
+ owned_canvas_(NULL),
+ canvas_(NULL) {
gfx::Size pixel_size = size.Scale(ui::GetScaleFactorScale(scale_factor));
owned_canvas_.reset(new skia::PlatformCanvas(pixel_size.width(),
pixel_size.height(),
@@ -51,50 +40,47 @@ Canvas::Canvas(const gfx::Size& size,
owned_canvas_->clear(SkColorSetARGB(0, 0, 0, 0));
#endif
- ApplyScaleFactor(scale_factor, true);
+ SkScalar scale = SkFloatToScalar(ui::GetScaleFactorScale(scale_factor));
+ canvas_->scale(scale, scale);
}
Canvas::Canvas(const gfx::ImageSkiaRep& image_rep, bool is_opaque)
- : owned_canvas_(new skia::PlatformCanvas(image_rep.pixel_width(),
+ : scale_factor_(image_rep.scale_factor()),
+ owned_canvas_(new skia::PlatformCanvas(image_rep.pixel_width(),
image_rep.pixel_height(),
is_opaque)),
canvas_(owned_canvas_.get()) {
- ApplyScaleFactor(image_rep.scale_factor(), true);
+ SkScalar scale = SkFloatToScalar(ui::GetScaleFactorScale(scale_factor_));
+ canvas_->scale(scale, scale);
DrawImageInt(gfx::ImageSkia(image_rep), 0, 0);
}
Canvas::Canvas()
- : owned_canvas_(new skia::PlatformCanvas()),
+ : scale_factor_(ui::SCALE_FACTOR_100P),
+ owned_canvas_(new skia::PlatformCanvas()),
canvas_(owned_canvas_.get()) {
- ApplyScaleFactor(ui::SCALE_FACTOR_100P, false);
}
-Canvas::Canvas(SkCanvas* canvas,
- ui::ScaleFactor scale_factor,
- bool scale_canvas)
- : owned_canvas_(),
- canvas_(canvas) {
- DCHECK(canvas);
- ApplyScaleFactor(scale_factor, scale_canvas);
+Canvas::~Canvas() {
}
-Canvas::~Canvas() {
- if (scale_factor_scales_canvas_) {
- SkScalar scale = 1.0f / ui::GetScaleFactorScale(scale_factor_);
- canvas_->scale(scale, scale);
- }
+// static
+Canvas* Canvas::CreateCanvasWithoutScaling(SkCanvas* canvas,
+ ui::ScaleFactor scale_factor) {
+ return new Canvas(canvas, scale_factor);
}
void Canvas::RecreateBackingCanvas(const gfx::Size& size,
ui::ScaleFactor scale_factor,
bool is_opaque) {
+ scale_factor_ = scale_factor;
gfx::Size pixel_size = size.Scale(ui::GetScaleFactorScale(scale_factor));
owned_canvas_.reset(new skia::PlatformCanvas(pixel_size.width(),
pixel_size.height(),
is_opaque));
canvas_ = owned_canvas_.get();
-
- ApplyScaleFactor(scale_factor, true);
+ SkScalar scale = SkFloatToScalar(ui::GetScaleFactorScale(scale_factor_));
+ canvas_->scale(scale, scale);
}
// static
@@ -109,7 +95,7 @@ int Canvas::DefaultCanvasTextAlignment() {
return base::i18n::IsRTL() ? TEXT_ALIGN_RIGHT : TEXT_ALIGN_LEFT;
}
-SkBitmap Canvas::ExtractBitmap() const {
+gfx::ImageSkiaRep Canvas::ExtractImageRep() const {
const SkBitmap& device_bitmap = canvas_->getDevice()->accessBitmap(false);
// Make a bitmap to return, and a canvas to draw into it. We don't just want
@@ -117,11 +103,8 @@ SkBitmap Canvas::ExtractBitmap() const {
// of the bitmap.
SkBitmap result;
device_bitmap.copyTo(&result, SkBitmap::kARGB_8888_Config);
- return result;
-}
-gfx::ImageSkiaRep Canvas::ExtractImageSkiaRep() const {
- return gfx::ImageSkiaRep(ExtractBitmap(), scale_factor_);
+ return gfx::ImageSkiaRep(result, scale_factor_);
}
void Canvas::DrawDashedRect(const gfx::Rect& rect, SkColor color) {
@@ -501,6 +484,13 @@ void Canvas::Transform(const ui::Transform& transform) {
canvas_->concat(transform.matrix());
}
+Canvas::Canvas(SkCanvas* canvas, ui::ScaleFactor scale_factor)
+ : scale_factor_(scale_factor),
+ owned_canvas_(),
+ canvas_(canvas) {
+ DCHECK(canvas);
+}
+
bool Canvas::IntersectsClipRectInt(int x, int y, int w, int h) {
SkRect clip;
return canvas_->getClipBounds(&clip) &&
@@ -513,16 +503,6 @@ bool Canvas::IntersectsClipRect(const gfx::Rect& rect) {
rect.width(), rect.height());
}
-void Canvas::ApplyScaleFactor(ui::ScaleFactor scale_factor,
- bool scale_canvas) {
- scale_factor_scales_canvas_ = scale_canvas;
- scale_factor_ = scale_factor;
- if (scale_canvas) {
- SkScalar scale = SkFloatToScalar(ui::GetScaleFactorScale(scale_factor));
- canvas_->scale(scale, scale);
- }
-}
-
const gfx::ImageSkiaRep& Canvas::GetImageRepToPaint(
const gfx::ImageSkia& image) const {
return GetImageRepToPaint(image, 1.0f, 1.0f);
diff --git a/ui/gfx/canvas.h b/ui/gfx/canvas.h
index 8256412..700d7d2 100644
--- a/ui/gfx/canvas.h
+++ b/ui/gfx/canvas.h
@@ -99,12 +99,6 @@ class UI_EXPORT Canvas {
// Creates an empty canvas with scale factor of 1x.
Canvas();
- // Creates canvas with provided DIP |size| and a scale factor of 1x.
- // If this canvas is not opaque, it's explicitly cleared to transparent before
- // being returned.
- // TODO(pkotwicz): Remove this constructor.
- Canvas(const gfx::Size& size, bool is_opaque);
-
// Creates canvas with provided DIP |size| and |scale_factor|.
// If this canvas is not opaque, it's explicitly cleared to transparent before
// being returned.
@@ -116,14 +110,14 @@ class UI_EXPORT Canvas {
// provided |image_rep|, and draws the |image_rep| into it.
Canvas(const gfx::ImageSkiaRep& image_rep, bool is_opaque);
- // Sets scale factor to |scale_factor|.
- // Only scales canvas if |scale_canvas| is true.
- Canvas(SkCanvas* canvas,
- ui::ScaleFactor scale_factor,
- bool scale_canvas);
-
virtual ~Canvas();
+ // Creates a gfx::Canvas backed by an |sk_canvas| with |scale_factor|.
+ // |sk_canvas| is assumed to be already scaled based on |scale_factor|
+ // so no additional scaling is applied.
+ static Canvas* CreateCanvasWithoutScaling(SkCanvas* sk_canvas,
+ ui::ScaleFactor scale_factor);
+
// Recreates the backing platform canvas with DIP |size| and |scale_factor|.
// If the canvas is not opaque, it is explicitly cleared.
// This method is public so that canvas_skia_paint can recreate the platform
@@ -172,13 +166,8 @@ class UI_EXPORT Canvas {
int x, int y, int w, int h,
int flags);
- // Extracts a bitmap from the contents of this canvas.
- // TODO(pkotwicz): Remove ExtractBitmap once all callers use
- // ExtractImageSkiaRep instead.
- SkBitmap ExtractBitmap() const;
-
// Extracts an ImageSkiaRep from the contents of this canvas.
- gfx::ImageSkiaRep ExtractImageSkiaRep() const;
+ gfx::ImageSkiaRep ExtractImageRep() const;
// Draws a dashed rectangle of the specified color.
void DrawDashedRect(const gfx::Rect& rect, SkColor color);
@@ -388,16 +377,12 @@ class UI_EXPORT Canvas {
ui::ScaleFactor scale_factor() const { return scale_factor_; }
private:
+ Canvas(SkCanvas* canvas, ui::ScaleFactor scale_factor);
+
// Test whether the provided rectangle intersects the current clip rect.
bool IntersectsClipRectInt(int x, int y, int w, int h);
bool IntersectsClipRect(const gfx::Rect& rect);
- // Sets the canvas' scale factor to |scale_factor|. This affects
- // the scale factor at which drawing bitmaps occurs and the scale factor of
- // the image rep returned by Canvas::ExtractImageSkiaRep().
- // If |scale_canvas| is true, scales the canvas by |scale_factor|.
- void ApplyScaleFactor(ui::ScaleFactor scale_factor, bool scale_canvas);
-
// Returns the image rep which best matches the canvas |scale_factor_|.
// Returns a null image rep if |image| contains no image reps.
// Builds mip map for returned image rep if necessary.
@@ -410,18 +395,14 @@ class UI_EXPORT Canvas {
float user_defined_scale_factor_x,
float user_defined_scale_factor_y) const;
- scoped_ptr<skia::PlatformCanvas> owned_canvas_;
- SkCanvas* canvas_;
-
- // True if the scale factor scales the canvas and the inverse
- // canvas scale should be applied when the destructor is called.
- bool scale_factor_scales_canvas_;
-
// The device scale factor at which drawing on this canvas occurs.
// An additional scale can be applied via Canvas::Scale(). However,
// Canvas::Scale() does not affect |scale_factor_|.
ui::ScaleFactor scale_factor_;
+ scoped_ptr<skia::PlatformCanvas> owned_canvas_;
+ SkCanvas* canvas_;
+
DISALLOW_COPY_AND_ASSIGN(Canvas);
};
diff --git a/ui/gfx/canvas_linux.cc b/ui/gfx/canvas_linux.cc
index 9d417c9..c2a4eec 100644
--- a/ui/gfx/canvas_linux.cc
+++ b/ui/gfx/canvas_linux.cc
@@ -112,7 +112,7 @@ void DrawStringContext::Draw(SkColor text_color) {
void DrawStringContext::DrawWithHalo(SkColor text_color,
SkColor halo_color) {
gfx::Size size(bounds_.width() + 2, bounds_.height() + 2);
- gfx::Canvas text_canvas(size, false);
+ gfx::Canvas text_canvas(size, scale_factor(), false);
text_canvas.FillRect(gfx::Rect(size), static_cast<SkColor>(0));
{
@@ -157,7 +157,9 @@ void DrawStringContext::DrawWithHalo(SkColor text_color,
const SkBitmap& text_bitmap = const_cast<SkBitmap&>(
skia::GetTopDevice(*text_canvas.sk_canvas())->accessBitmap(false));
- canvas_->DrawImageInt(text_bitmap, text_rect_.x() - 1, text_rect_.y() - 1);
+ const gfx::ImageSkia text_image = gfx::ImageSkia(gfx::ImageSkiaRep(
+ text_bitmap, text_canvas.scale_factor()));
+ canvas_->DrawImageInt(text_image, text_rect_.x() - 1, text_rect_.y() - 1);
}
void DrawStringContext::DrawUnderline(cairo_t* cr, double extra_edge_width) {
diff --git a/ui/gfx/canvas_skia.cc b/ui/gfx/canvas_skia.cc
index 918842b..4a6ef61 100644
--- a/ui/gfx/canvas_skia.cc
+++ b/ui/gfx/canvas_skia.cc
@@ -377,7 +377,7 @@ void Canvas::DrawStringWithHalo(const string16& text,
// Create a temporary buffer filled with the halo color. It must leave room
// for the 1-pixel border around the text.
Size size(w + 2, h + 2);
- Canvas text_canvas(size, true);
+ Canvas text_canvas(size, scale_factor(), true);
SkPaint bkgnd_paint;
bkgnd_paint.setColor(halo_color);
text_canvas.DrawRect(gfx::Rect(size), bkgnd_paint);
@@ -390,9 +390,9 @@ void Canvas::DrawStringWithHalo(const string16& text,
SkBitmap& text_bitmap = const_cast<SkBitmap&>(
skia::GetTopDevice(*text_canvas.sk_canvas())->accessBitmap(true));
- for (int cur_y = 0; cur_y < h + 2; cur_y++) {
+ for (int cur_y = 0; cur_y < text_bitmap.height(); cur_y++) {
uint32_t* text_row = text_bitmap.getAddr32(0, cur_y);
- for (int cur_x = 0; cur_x < w + 2; cur_x++) {
+ for (int cur_x = 0; cur_x < text_bitmap.width(); cur_x++) {
if (text_row[cur_x] == halo_premul) {
// This pixel was not touched by the text routines. See if it borders
// a touched pixel in any of the 4 directions (not diagonally).
@@ -405,7 +405,9 @@ void Canvas::DrawStringWithHalo(const string16& text,
}
// Draw the halo bitmap with blur.
- DrawImageInt(text_bitmap, x - 1, y - 1);
+ gfx::ImageSkia text_image = gfx::ImageSkia(gfx::ImageSkiaRep(text_bitmap,
+ text_canvas.scale_factor()));
+ DrawImageInt(text_image, x - 1, y - 1);
}
void Canvas::DrawFadeTruncatingString(
diff --git a/ui/gfx/image/canvas_image_source.cc b/ui/gfx/image/canvas_image_source.cc
index 38f6db8..747625a 100644
--- a/ui/gfx/image/canvas_image_source.cc
+++ b/ui/gfx/image/canvas_image_source.cc
@@ -22,7 +22,7 @@ gfx::ImageSkiaRep CanvasImageSource::GetImageForScale(
ui::ScaleFactor scale_factor) {
gfx::Canvas canvas(size_, scale_factor, is_opaque_);
Draw(&canvas);
- return canvas.ExtractImageSkiaRep();
+ return canvas.ExtractImageRep();
}
} // namespace gfx
diff --git a/ui/gfx/image/image.cc b/ui/gfx/image/image.cc
index c5d30a2..ea302ab 100644
--- a/ui/gfx/image/image.cc
+++ b/ui/gfx/image/image.cc
@@ -32,12 +32,14 @@ namespace internal {
const ImageSkia ImageSkiaFromGdkPixbuf(GdkPixbuf* pixbuf) {
CHECK(pixbuf);
gfx::Canvas canvas(gfx::Size(gdk_pixbuf_get_width(pixbuf),
- gdk_pixbuf_get_height(pixbuf)), false);
+ gdk_pixbuf_get_height(pixbuf)),
+ ui::SCALE_FACTOR_100P,
+ false);
skia::ScopedPlatformPaint scoped_platform_paint(canvas.sk_canvas());
cairo_t* cr = scoped_platform_paint.GetPlatformSurface();
gdk_cairo_set_source_pixbuf(cr, pixbuf, 0, 0);
cairo_paint(cr);
- return ImageSkia(SkBitmap(canvas.ExtractBitmap()));
+ return ImageSkia(canvas.ExtractImageRep());
}
#endif
diff --git a/ui/views/controls/glow_hover_controller.cc b/ui/views/controls/glow_hover_controller.cc
index e86be4d..71785f0 100644
--- a/ui/views/controls/glow_hover_controller.cc
+++ b/ui/views/controls/glow_hover_controller.cc
@@ -98,7 +98,7 @@ void GlowHoverController::Draw(gfx::Canvas* canvas,
radius * 2, radius * 2), paint);
}
gfx::ImageSkia result = gfx::ImageSkiaOperations::CreateMaskedImage(
- gfx::ImageSkia(hover_canvas.ExtractImageSkiaRep()), mask_image);
+ gfx::ImageSkia(hover_canvas.ExtractImageRep()), mask_image);
canvas->DrawImageInt(result, (view_->width() - mask_image.width()) / 2,
(view_->height() - mask_image.height()) / 2);
}
diff --git a/ui/views/controls/menu/native_menu_win.cc b/ui/views/controls/menu/native_menu_win.cc
index c04a2bd..44df996 100644
--- a/ui/views/controls/menu/native_menu_win.cc
+++ b/ui/views/controls/menu/native_menu_win.cc
@@ -281,6 +281,7 @@ class NativeMenuWin::MenuHostWindow {
(height - kItemTopMargin - kItemBottomMargin -
config.check_height) / 2;
gfx::Canvas canvas(gfx::Size(config.check_width, config.check_height),
+ ui::SCALE_FACTOR_100P,
false);
NativeTheme::ExtraParams extra;
extra.menu_check.is_radio = false;
diff --git a/ui/views/controls/table/table_view_win.cc b/ui/views/controls/table/table_view_win.cc
index e9b8765..1538dd8 100644
--- a/ui/views/controls/table/table_view_win.cc
+++ b/ui/views/controls/table/table_view_win.cc
@@ -809,10 +809,11 @@ HWND TableView::CreateNativeControl(HWND parent_container) {
// We create 2 phony images because we are going to switch images at every
// refresh in order to force a refresh of the icon area (somehow the clip
// rect does not include the icon).
- gfx::Canvas canvas(gfx::Size(kImageSize, kImageSize), false);
+ gfx::Canvas canvas(gfx::Size(kImageSize, kImageSize), ui::SCALE_FACTOR_100P,
+ false);
{
- base::win::ScopedHICON empty_icon(
- IconUtil::CreateHICONFromSkBitmap(canvas.ExtractBitmap()));
+ base::win::ScopedHICON empty_icon(IconUtil::CreateHICONFromSkBitmap(
+ canvas.ExtractImageRep().sk_bitmap()));
ImageList_AddIcon(image_list, empty_icon);
ImageList_AddIcon(image_list, empty_icon);
}
@@ -1154,7 +1155,7 @@ void TableView::PaintAltText() {
HDC dc = GetDC(GetNativeControlHWND());
gfx::Font font = GetAltTextFont();
gfx::Rect bounds = GetAltTextBounds();
- gfx::Canvas canvas(bounds.size(), false);
+ gfx::Canvas canvas(bounds.size(), ui::SCALE_FACTOR_100P, false);
// Pad by 1 for halo.
canvas.DrawStringWithHalo(alt_text_, font, SK_ColorDKGRAY, SK_ColorWHITE, 1,
1, bounds.width() - 2, bounds.height() - 2,
@@ -1240,6 +1241,7 @@ LRESULT TableView::OnCustomDraw(NMLVCUSTOMDRAW* draw_info) {
if (IntersectRect(&intersection, &icon_rect, &client_rect)) {
gfx::Canvas canvas(gfx::Size(icon_rect.right - icon_rect.left,
icon_rect.bottom - icon_rect.top),
+ ui::SCALE_FACTOR_100P,
false);
// It seems the state in nmcd.uItemState is not correct.
diff --git a/ui/views/controls/tree/tree_view_win.cc b/ui/views/controls/tree/tree_view_win.cc
index 5a81519..8fa702a 100644
--- a/ui/views/controls/tree/tree_view_win.cc
+++ b/ui/views/controls/tree/tree_view_win.cc
@@ -691,13 +691,15 @@ HIMAGELIST TreeView::CreateImageList() {
// IDR_FOLDER_CLOSED if they aren't already.
if (model_images[i].width() != width ||
model_images[i].height() != height) {
- gfx::Canvas canvas(gfx::Size(width, height), false);
+ gfx::Canvas canvas(gfx::Size(width, height), ui::SCALE_FACTOR_100P,
+ false);
// Draw our icons into this canvas.
int height_offset = (height - model_images[i].height()) / 2;
int width_offset = (width - model_images[i].width()) / 2;
canvas.DrawImageInt(model_images[i], width_offset, height_offset);
- model_icon = IconUtil::CreateHICONFromSkBitmap(canvas.ExtractBitmap());
+ model_icon = IconUtil::CreateHICONFromSkBitmap(
+ canvas.ExtractImageRep().sk_bitmap());
} else {
model_icon = IconUtil::CreateHICONFromSkBitmap(model_images[i]);
}
diff --git a/ui/views/widget/native_widget_win.cc b/ui/views/widget/native_widget_win.cc
index b04bc7f..6b832f4 100644
--- a/ui/views/widget/native_widget_win.cc
+++ b/ui/views/widget/native_widget_win.cc
@@ -2511,7 +2511,8 @@ void NativeWidgetWin::ClientAreaSizeChanged() {
std::max(0, static_cast<int>(r.bottom - r.top)));
delegate_->OnNativeWidgetSizeChanged(s);
if (use_layered_buffer_)
- layered_window_contents_.reset(new gfx::Canvas(s, false));
+ layered_window_contents_.reset(
+ new gfx::Canvas(s, ui::SCALE_FACTOR_100P, false));
}
void NativeWidgetWin::UpdateDWMFrame() {