Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 "ui/gfx/canvas.h" | 5 #include "ui/gfx/canvas.h" |
| 6 | 6 |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 #include <limits> | 8 #include <limits> |
| 9 | 9 |
| 10 #include "base/i18n/rtl.h" | 10 #include "base/i18n/rtl.h" |
| 11 #include "base/logging.h" | 11 #include "base/logging.h" |
| 12 #include "third_party/skia/include/core/SkBitmap.h" | 12 #include "third_party/skia/include/core/SkBitmap.h" |
| 13 #include "third_party/skia/include/effects/SkGradientShader.h" | 13 #include "third_party/skia/include/effects/SkGradientShader.h" |
| 14 #include "ui/gfx/font_list.h" | 14 #include "ui/gfx/font_list.h" |
| 15 #include "ui/gfx/geometry/rect.h" | 15 #include "ui/gfx/geometry/rect.h" |
| 16 #include "ui/gfx/geometry/rect_conversions.h" | 16 #include "ui/gfx/geometry/rect_conversions.h" |
| 17 #include "ui/gfx/geometry/safe_integer_conversions.h" | 17 #include "ui/gfx/geometry/safe_integer_conversions.h" |
| 18 #include "ui/gfx/geometry/size_conversions.h" | 18 #include "ui/gfx/geometry/size_conversions.h" |
| 19 #include "ui/gfx/scoped_canvas.h" | 19 #include "ui/gfx/scoped_canvas.h" |
| 20 #include "ui/gfx/skia_util.h" | 20 #include "ui/gfx/skia_util.h" |
| 21 #include "ui/gfx/transform.h" | 21 #include "ui/gfx/transform.h" |
| 22 | 22 |
| 23 #if defined(OS_WIN) | 23 #if defined(OS_WIN) |
| 24 #include "ui/gfx/canvas_skia_paint.h" | 24 #include "ui/gfx/canvas_skia_paint.h" |
|
danakj
2015/05/11 23:42:53
Oops, included a rebase here, not part of my chang
| |
| 25 #endif | 25 #endif |
| 26 | 26 |
| 27 namespace gfx { | 27 namespace gfx { |
| 28 | 28 |
| 29 Canvas::Canvas(const Size& size, float image_scale, bool is_opaque) | 29 Canvas::Canvas(const Size& size, float image_scale, bool is_opaque) |
| 30 : image_scale_(image_scale), | 30 : image_scale_(image_scale), |
| 31 canvas_(NULL) { | 31 canvas_(NULL) { |
| 32 Size pixel_size = ToCeiledSize(ScaleSize(size, image_scale)); | 32 Size pixel_size = ToCeiledSize(ScaleSize(size, image_scale)); |
| 33 owned_canvas_ = skia::AdoptRef(skia::CreatePlatformCanvas(pixel_size.width(), | 33 owned_canvas_ = skia::AdoptRef(skia::CreatePlatformCanvas(pixel_size.width(), |
| 34 pixel_size.height(), | 34 pixel_size.height(), |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 56 canvas_->scale(scale_scalar, scale_scalar); | 56 canvas_->scale(scale_scalar, scale_scalar); |
| 57 DrawImageInt(ImageSkia(image_rep), 0, 0); | 57 DrawImageInt(ImageSkia(image_rep), 0, 0); |
| 58 } | 58 } |
| 59 | 59 |
| 60 Canvas::Canvas() | 60 Canvas::Canvas() |
| 61 : image_scale_(1.0), | 61 : image_scale_(1.0), |
| 62 owned_canvas_(skia::AdoptRef(skia::CreatePlatformCanvas(0, 0, false))), | 62 owned_canvas_(skia::AdoptRef(skia::CreatePlatformCanvas(0, 0, false))), |
| 63 canvas_(owned_canvas_.get()) { | 63 canvas_(owned_canvas_.get()) { |
| 64 } | 64 } |
| 65 | 65 |
| 66 Canvas::Canvas(SkCanvas* canvas, float image_scale) | |
| 67 : image_scale_(image_scale), owned_canvas_(), canvas_(canvas) { | |
| 68 DCHECK(canvas); | |
| 69 } | |
| 70 | |
| 66 Canvas::~Canvas() { | 71 Canvas::~Canvas() { |
| 67 } | 72 } |
| 68 | 73 |
| 69 // static | |
| 70 Canvas* Canvas::CreateCanvasWithoutScaling(SkCanvas* canvas, | |
| 71 float image_scale) { | |
| 72 return new Canvas(canvas, image_scale); | |
| 73 } | |
| 74 | |
| 75 void Canvas::RecreateBackingCanvas(const Size& size, | 74 void Canvas::RecreateBackingCanvas(const Size& size, |
| 76 float image_scale, | 75 float image_scale, |
| 77 bool is_opaque) { | 76 bool is_opaque) { |
| 78 image_scale_ = image_scale; | 77 image_scale_ = image_scale; |
| 79 Size pixel_size = ToFlooredSize(ScaleSize(size, image_scale)); | 78 Size pixel_size = ToFlooredSize(ScaleSize(size, image_scale)); |
| 80 owned_canvas_ = skia::AdoptRef(skia::CreatePlatformCanvas(pixel_size.width(), | 79 owned_canvas_ = skia::AdoptRef(skia::CreatePlatformCanvas(pixel_size.width(), |
| 81 pixel_size.height(), | 80 pixel_size.height(), |
| 82 is_opaque)); | 81 is_opaque)); |
| 83 canvas_ = owned_canvas_.get(); | 82 canvas_ = owned_canvas_.get(); |
| 84 SkScalar scale_scalar = SkFloatToScalar(image_scale); | 83 SkScalar scale_scalar = SkFloatToScalar(image_scale); |
| (...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 541 } | 540 } |
| 542 | 541 |
| 543 void Canvas::EndPlatformPaint() { | 542 void Canvas::EndPlatformPaint() { |
| 544 skia::EndPlatformPaint(canvas_); | 543 skia::EndPlatformPaint(canvas_); |
| 545 } | 544 } |
| 546 | 545 |
| 547 void Canvas::Transform(const gfx::Transform& transform) { | 546 void Canvas::Transform(const gfx::Transform& transform) { |
| 548 canvas_->concat(transform.matrix()); | 547 canvas_->concat(transform.matrix()); |
| 549 } | 548 } |
| 550 | 549 |
| 551 Canvas::Canvas(SkCanvas* canvas, float image_scale) | |
| 552 : image_scale_(image_scale), | |
| 553 owned_canvas_(), | |
| 554 canvas_(canvas) { | |
| 555 DCHECK(canvas); | |
| 556 } | |
| 557 | |
| 558 bool Canvas::IntersectsClipRectInt(int x, int y, int w, int h) { | 550 bool Canvas::IntersectsClipRectInt(int x, int y, int w, int h) { |
| 559 SkRect clip; | 551 SkRect clip; |
| 560 return canvas_->getClipBounds(&clip) && | 552 return canvas_->getClipBounds(&clip) && |
| 561 clip.intersect(SkIntToScalar(x), SkIntToScalar(y), SkIntToScalar(x + w), | 553 clip.intersect(SkIntToScalar(x), SkIntToScalar(y), SkIntToScalar(x + w), |
| 562 SkIntToScalar(y + h)); | 554 SkIntToScalar(y + h)); |
| 563 } | 555 } |
| 564 | 556 |
| 565 bool Canvas::IntersectsClipRect(const Rect& rect) { | 557 bool Canvas::IntersectsClipRect(const Rect& rect) { |
| 566 return IntersectsClipRectInt(rect.x(), rect.y(), | 558 return IntersectsClipRectInt(rect.x(), rect.y(), |
| 567 rect.width(), rect.height()); | 559 rect.width(), rect.height()); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 633 // by the paint). | 625 // by the paint). |
| 634 SkPaint p(paint); | 626 SkPaint p(paint); |
| 635 p.setFilterQuality(filter ? kLow_SkFilterQuality : kNone_SkFilterQuality); | 627 p.setFilterQuality(filter ? kLow_SkFilterQuality : kNone_SkFilterQuality); |
| 636 p.setShader(shader.get()); | 628 p.setShader(shader.get()); |
| 637 | 629 |
| 638 // The rect will be filled by the bitmap. | 630 // The rect will be filled by the bitmap. |
| 639 canvas_->drawRect(dest_rect, p); | 631 canvas_->drawRect(dest_rect, p); |
| 640 } | 632 } |
| 641 | 633 |
| 642 } // namespace gfx | 634 } // namespace gfx |
| OLD | NEW |