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" |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
108 // to call extractSubset or the copy constructor, since we want an actual copy | 108 // to call extractSubset or the copy constructor, since we want an actual copy |
109 // of the bitmap. | 109 // of the bitmap. |
110 const SkISize size = canvas_->getBaseLayerSize(); | 110 const SkISize size = canvas_->getBaseLayerSize(); |
111 SkBitmap result; | 111 SkBitmap result; |
112 result.allocN32Pixels(size.width(), size.height()); | 112 result.allocN32Pixels(size.width(), size.height()); |
113 | 113 |
114 canvas_->readPixels(&result, 0, 0); | 114 canvas_->readPixels(&result, 0, 0); |
115 return ImageSkiaRep(result, image_scale_); | 115 return ImageSkiaRep(result, image_scale_); |
116 } | 116 } |
117 | 117 |
118 void Canvas::DrawDashedRect(const Rect& rect, SkColor color) { | |
119 DrawDashedRect(RectF(rect), color); | |
120 } | |
121 | |
122 void Canvas::DrawDashedRect(const RectF& rect, SkColor color) { | 118 void Canvas::DrawDashedRect(const RectF& rect, SkColor color) { |
123 if (rect.IsEmpty()) | 119 if (rect.IsEmpty()) |
124 return; | 120 return; |
125 // Create a 2D bitmap containing alternating on/off pixels - we do this | 121 // Create a 2D bitmap containing alternating on/off pixels - we do this |
126 // so that you never get two pixels of the same color around the edges | 122 // so that you never get two pixels of the same color around the edges |
127 // of the focus rect (this may mean that opposing edges of the rect may | 123 // of the focus rect (this may mean that opposing edges of the rect may |
128 // have a dot pattern out of phase to each other). | 124 // have a dot pattern out of phase to each other). |
129 static SkColor last_color; | 125 static SkColor last_color; |
130 static SkBitmap* dots = NULL; | 126 static SkBitmap* dots = NULL; |
131 if (!dots || last_color != color) { | 127 if (!dots || last_color != color) { |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
235 } | 231 } |
236 | 232 |
237 void Canvas::FillRect(const Rect& rect, SkColor color, SkBlendMode mode) { | 233 void Canvas::FillRect(const Rect& rect, SkColor color, SkBlendMode mode) { |
238 cc::PaintFlags flags; | 234 cc::PaintFlags flags; |
239 flags.setColor(color); | 235 flags.setColor(color); |
240 flags.setStyle(cc::PaintFlags::kFill_Style); | 236 flags.setStyle(cc::PaintFlags::kFill_Style); |
241 flags.setBlendMode(mode); | 237 flags.setBlendMode(mode); |
242 DrawRect(rect, flags); | 238 DrawRect(rect, flags); |
243 } | 239 } |
244 | 240 |
245 void Canvas::DrawRect(const Rect& rect, SkColor color) { | |
246 DrawRect(RectF(rect), color); | |
247 } | |
248 | |
249 void Canvas::DrawRect(const RectF& rect, SkColor color) { | 241 void Canvas::DrawRect(const RectF& rect, SkColor color) { |
250 DrawRect(rect, color, SkBlendMode::kSrcOver); | 242 DrawRect(rect, color, SkBlendMode::kSrcOver); |
251 } | 243 } |
252 | 244 |
253 void Canvas::DrawRect(const Rect& rect, SkColor color, SkBlendMode mode) { | |
254 DrawRect(RectF(rect), color, mode); | |
255 } | |
256 | |
257 void Canvas::DrawRect(const RectF& rect, SkColor color, SkBlendMode mode) { | 245 void Canvas::DrawRect(const RectF& rect, SkColor color, SkBlendMode mode) { |
258 cc::PaintFlags flags; | 246 cc::PaintFlags flags; |
259 flags.setColor(color); | 247 flags.setColor(color); |
260 flags.setStyle(cc::PaintFlags::kStroke_Style); | 248 flags.setStyle(cc::PaintFlags::kStroke_Style); |
261 // Set a stroke width of 0, which will put us down the stroke rect path. If | 249 // Set a stroke width of 0, which will put us down the stroke rect path. If |
262 // we set a stroke width of 1, for example, this will internally create a | 250 // we set a stroke width of 1, for example, this will internally create a |
263 // path and fill it, which causes problems near the edge of the canvas. | 251 // path and fill it, which causes problems near the edge of the canvas. |
264 flags.setStrokeWidth(SkIntToScalar(0)); | 252 flags.setStrokeWidth(SkIntToScalar(0)); |
265 flags.setBlendMode(mode); | 253 flags.setBlendMode(mode); |
266 | 254 |
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
622 bitmap_.emplace(); | 610 bitmap_.emplace(); |
623 bitmap_->allocPixels(info); | 611 bitmap_->allocPixels(info); |
624 // Ensure that the bitmap is zeroed, since the code expects that. | 612 // Ensure that the bitmap is zeroed, since the code expects that. |
625 memset(bitmap_->getPixels(), 0, bitmap_->getSafeSize()); | 613 memset(bitmap_->getPixels(), 0, bitmap_->getSafeSize()); |
626 | 614 |
627 owned_canvas_ = cc::SkiaPaintCanvas(bitmap_.value()); | 615 owned_canvas_ = cc::SkiaPaintCanvas(bitmap_.value()); |
628 return &owned_canvas_.value(); | 616 return &owned_canvas_.value(); |
629 } | 617 } |
630 | 618 |
631 } // namespace gfx | 619 } // namespace gfx |
OLD | NEW |