Index: ui/gfx/canvas.cc |
diff --git a/ui/gfx/canvas.cc b/ui/gfx/canvas.cc |
index 4b4a0f47e3bdc7a3b8a49b00cc85facf19bebb89..437c8f5e0723c51c90a04f9a5e64dad92104d475 100644 |
--- a/ui/gfx/canvas.cc |
+++ b/ui/gfx/canvas.cc |
@@ -10,6 +10,7 @@ |
#include "base/logging.h" |
#include "third_party/skia/include/core/SkBitmap.h" |
#include "third_party/skia/include/effects/SkGradientShader.h" |
+#include "ui/base/win/dpi.h" |
#include "ui/gfx/canvas.h" |
#include "ui/gfx/font.h" |
#include "ui/gfx/rect.h" |
@@ -57,8 +58,19 @@ Canvas::Canvas(const gfx::ImageSkiaRep& image_rep, bool is_opaque) |
DrawImageInt(gfx::ImageSkia(image_rep), 0, 0); |
} |
+ui::ScaleFactor GetScaleFactor() { |
+#if defined(ENABLE_HIDPI) |
+ float scale = ui::GetDPIScale(); |
+ if (scale > 1.6) |
+ return ui::SCALE_FACTOR_180P; |
+ else if (scale > 1.2) |
+ return ui::SCALE_FACTOR_140P; |
+#endif |
+ return ui::SCALE_FACTOR_100P; |
+} |
+ |
Canvas::Canvas() |
- : scale_factor_(ui::SCALE_FACTOR_100P), |
+ : scale_factor_(GetScaleFactor()), |
owned_canvas_(skia::AdoptRef(skia::CreatePlatformCanvas(0, 0, false))), |
canvas_(owned_canvas_.get()) { |
} |
@@ -83,6 +95,7 @@ void Canvas::RecreateBackingCanvas(const gfx::Size& size, |
is_opaque)); |
canvas_ = owned_canvas_.get(); |
SkScalar scale = SkFloatToScalar(ui::GetScaleFactorScale(scale_factor_)); |
+ scale = 1; |
canvas_->scale(scale, scale); |
} |
@@ -194,9 +207,17 @@ void Canvas::Translate(const gfx::Vector2d& offset) { |
canvas_->translate(SkIntToScalar(offset.x()), SkIntToScalar(offset.y())); |
} |
+#include "/gtools.h" |
+#if defined(ENABLE_HIDPI) |
+void Canvas::Scale(double x_scale, double y_scale) { |
+ canvas_->scale(x_scale, y_scale); |
+// Debug(L"Scaling %p to %f", this, x_scale); |
+} |
+#else |
void Canvas::Scale(int x_scale, int y_scale) { |
canvas_->scale(SkIntToScalar(x_scale), SkIntToScalar(y_scale)); |
} |
+#endif |
void Canvas::DrawColor(SkColor color) { |
DrawColor(color, SkXfermode::kSrcOver_Mode); |
@@ -306,11 +327,11 @@ void Canvas::DrawImageInt(const gfx::ImageSkia& image, |
float bitmap_scale = image_rep.GetScale(); |
canvas_->save(); |
- canvas_->scale(SkFloatToScalar(1.0f / bitmap_scale), |
- SkFloatToScalar(1.0f / bitmap_scale)); |
+// canvas_->scale(SkFloatToScalar(1.0f / bitmap_scale), |
+// SkFloatToScalar(1.0f / bitmap_scale)); |
canvas_->drawBitmap(bitmap, |
- SkFloatToScalar(x * bitmap_scale), |
- SkFloatToScalar(y * bitmap_scale), |
+ SkFloatToScalar(x),// * bitmap_scale), |
+ SkFloatToScalar(y),// * bitmap_scale), |
&paint); |
canvas_->restore(); |
} |