Index: ui/gfx/canvas.cc |
diff --git a/ui/gfx/canvas.cc b/ui/gfx/canvas.cc |
index 64bec26748b20b2011de4b3e8f09be542f03e570..8d43cb638af2753744459c2cdb66f7bedb3bed07 100644 |
--- a/ui/gfx/canvas.cc |
+++ b/ui/gfx/canvas.cc |
@@ -9,10 +9,11 @@ |
#include "base/i18n/rtl.h" |
#include "base/logging.h" |
+#include "cc/paint/paint_flags.h" |
+#include "cc/paint/paint_shader.h" |
#include "third_party/skia/include/core/SkBitmap.h" |
#include "third_party/skia/include/core/SkPath.h" |
#include "third_party/skia/include/core/SkRefCnt.h" |
-#include "third_party/skia/include/core/SkSurface.h" |
#include "third_party/skia/include/effects/SkGradientShader.h" |
#include "ui/gfx/font_list.h" |
#include "ui/gfx/geometry/insets_f.h" |
@@ -30,14 +31,14 @@ namespace gfx { |
namespace { |
-sk_sp<SkSurface> CreateSurface(const Size& size, bool is_opaque) { |
+sk_sp<cc::PaintSurface> CreateSurface(const Size& size, bool is_opaque) { |
// SkSurface cannot be zero-sized, but clients of Canvas sometimes request |
// that (and then later resize). |
int width = std::max(size.width(), 1); |
int height = std::max(size.height(), 1); |
SkAlphaType alpha = is_opaque ? kOpaque_SkAlphaType : kPremul_SkAlphaType; |
SkImageInfo info = SkImageInfo::MakeN32(width, height, alpha); |
- return SkSurface::MakeRaster(info); |
+ return cc::PaintSurface::MakeRaster(info); |
} |
} // namespace |
@@ -64,7 +65,7 @@ Canvas::Canvas() |
surface_(CreateSurface({0, 0}, false)), |
canvas_(surface_->getCanvas()) {} |
-Canvas::Canvas(SkCanvas* canvas, float image_scale) |
+Canvas::Canvas(cc::PaintCanvas* canvas, float image_scale) |
: image_scale_(image_scale), canvas_(canvas) { |
DCHECK(canvas_); |
} |
@@ -166,9 +167,9 @@ void Canvas::DrawDashedRect(const RectF& rect, SkColor color) { |
} |
// Make a shader for the bitmap with an origin of the box we'll draw. |
- SkPaint paint; |
- paint.setShader(SkShader::MakeBitmapShader(*dots, SkShader::kRepeat_TileMode, |
- SkShader::kRepeat_TileMode)); |
+ cc::PaintFlags paint; |
+ paint.setShader(cc::WrapSkShader(SkShader::MakeBitmapShader( |
+ *dots, SkShader::kRepeat_TileMode, SkShader::kRepeat_TileMode))); |
DrawRect(RectF(rect.x(), rect.y(), rect.width(), 1), paint); |
DrawRect(RectF(rect.x(), rect.y() + rect.height() - 1, rect.width(), 1), |
@@ -248,9 +249,9 @@ void Canvas::FillRect(const Rect& rect, SkColor color) { |
} |
void Canvas::FillRect(const Rect& rect, SkColor color, SkBlendMode mode) { |
- SkPaint paint; |
+ cc::PaintFlags paint; |
paint.setColor(color); |
- paint.setStyle(SkPaint::kFill_Style); |
+ paint.setStyle(cc::PaintFlags::kFill_Style); |
paint.setBlendMode(mode); |
DrawRect(rect, paint); |
} |
@@ -268,9 +269,9 @@ void Canvas::DrawRect(const Rect& rect, SkColor color, SkBlendMode mode) { |
} |
void Canvas::DrawRect(const RectF& rect, SkColor color, SkBlendMode mode) { |
- SkPaint paint; |
+ cc::PaintFlags paint; |
paint.setColor(color); |
- paint.setStyle(SkPaint::kStroke_Style); |
+ paint.setStyle(cc::PaintFlags::kStroke_Style); |
// Set a stroke width of 0, which will put us down the stroke rect path. If |
// we set a stroke width of 1, for example, this will internally create a |
// path and fill it, which causes problems near the edge of the canvas. |
@@ -280,19 +281,19 @@ void Canvas::DrawRect(const RectF& rect, SkColor color, SkBlendMode mode) { |
DrawRect(rect, paint); |
} |
-void Canvas::DrawRect(const Rect& rect, const SkPaint& paint) { |
+void Canvas::DrawRect(const Rect& rect, const cc::PaintFlags& paint) { |
DrawRect(RectF(rect), paint); |
} |
-void Canvas::DrawRect(const RectF& rect, const SkPaint& paint) { |
+void Canvas::DrawRect(const RectF& rect, const cc::PaintFlags& paint) { |
canvas_->drawRect(RectFToSkRect(rect), paint); |
} |
-void Canvas::DrawPoint(const Point& p1, const SkPaint& paint) { |
+void Canvas::DrawPoint(const Point& p1, const cc::PaintFlags& paint) { |
DrawPoint(PointF(p1), paint); |
} |
-void Canvas::DrawPoint(const PointF& p1, const SkPaint& paint) { |
+void Canvas::DrawPoint(const PointF& p1, const cc::PaintFlags& paint) { |
canvas_->drawPoint(SkFloatToScalar(p1.x()), SkFloatToScalar(p1.y()), paint); |
} |
@@ -301,32 +302,34 @@ void Canvas::DrawLine(const Point& p1, const Point& p2, SkColor color) { |
} |
void Canvas::DrawLine(const PointF& p1, const PointF& p2, SkColor color) { |
- SkPaint paint; |
+ cc::PaintFlags paint; |
paint.setColor(color); |
paint.setStrokeWidth(SkIntToScalar(1)); |
DrawLine(p1, p2, paint); |
} |
-void Canvas::DrawLine(const Point& p1, const Point& p2, const SkPaint& paint) { |
+void Canvas::DrawLine(const Point& p1, |
+ const Point& p2, |
+ const cc::PaintFlags& paint) { |
DrawLine(PointF(p1), PointF(p2), paint); |
} |
void Canvas::DrawLine(const PointF& p1, |
const PointF& p2, |
- const SkPaint& paint) { |
+ const cc::PaintFlags& paint) { |
canvas_->drawLine(SkFloatToScalar(p1.x()), SkFloatToScalar(p1.y()), |
SkFloatToScalar(p2.x()), SkFloatToScalar(p2.y()), paint); |
} |
void Canvas::DrawCircle(const Point& center_point, |
int radius, |
- const SkPaint& paint) { |
+ const cc::PaintFlags& paint) { |
DrawCircle(PointF(center_point), radius, paint); |
} |
void Canvas::DrawCircle(const PointF& center_point, |
float radius, |
- const SkPaint& paint) { |
+ const cc::PaintFlags& paint) { |
canvas_->drawCircle(SkFloatToScalar(center_point.x()), |
SkFloatToScalar(center_point.y()), |
SkFloatToScalar(radius), paint); |
@@ -334,18 +337,18 @@ void Canvas::DrawCircle(const PointF& center_point, |
void Canvas::DrawRoundRect(const Rect& rect, |
int radius, |
- const SkPaint& paint) { |
+ const cc::PaintFlags& paint) { |
DrawRoundRect(RectF(rect), radius, paint); |
} |
void Canvas::DrawRoundRect(const RectF& rect, |
float radius, |
- const SkPaint& paint) { |
+ const cc::PaintFlags& paint) { |
canvas_->drawRoundRect(RectFToSkRect(rect), SkFloatToScalar(radius), |
SkFloatToScalar(radius), paint); |
} |
-void Canvas::DrawPath(const SkPath& path, const SkPaint& paint) { |
+void Canvas::DrawPath(const SkPath& path, const cc::PaintFlags& paint) { |
canvas_->drawPath(path, paint); |
} |
@@ -360,22 +363,22 @@ void Canvas::DrawFocusRect(const RectF& rect) { |
void Canvas::DrawSolidFocusRect(const RectF& rect, |
SkColor color, |
float thickness) { |
- SkPaint paint; |
+ cc::PaintFlags paint; |
paint.setColor(color); |
paint.setStrokeWidth(SkFloatToScalar(thickness)); |
- paint.setStyle(SkPaint::kStroke_Style); |
+ paint.setStyle(cc::PaintFlags::kStroke_Style); |
gfx::RectF draw_rect = rect; |
draw_rect.Inset(gfx::InsetsF(thickness / 2)); |
DrawRect(draw_rect, paint); |
} |
void Canvas::DrawImageInt(const ImageSkia& image, int x, int y) { |
- SkPaint paint; |
+ cc::PaintFlags paint; |
DrawImageInt(image, x, y, paint); |
} |
void Canvas::DrawImageInt(const ImageSkia& image, int x, int y, uint8_t a) { |
- SkPaint paint; |
+ cc::PaintFlags paint; |
paint.setAlpha(a); |
DrawImageInt(image, x, y, paint); |
} |
@@ -383,7 +386,7 @@ void Canvas::DrawImageInt(const ImageSkia& image, int x, int y, uint8_t a) { |
void Canvas::DrawImageInt(const ImageSkia& image, |
int x, |
int y, |
- const SkPaint& paint) { |
+ const cc::PaintFlags& paint) { |
const ImageSkiaRep& image_rep = image.GetRepresentation(image_scale_); |
if (image_rep.is_null()) |
return; |
@@ -409,7 +412,7 @@ void Canvas::DrawImageInt(const ImageSkia& image, |
int dest_w, |
int dest_h, |
bool filter) { |
- SkPaint p; |
+ cc::PaintFlags p; |
DrawImageInt(image, src_x, src_y, src_w, src_h, dest_x, dest_y, |
dest_w, dest_h, filter, p); |
} |
@@ -424,7 +427,7 @@ void Canvas::DrawImageInt(const ImageSkia& image, |
int dest_w, |
int dest_h, |
bool filter, |
- const SkPaint& paint) { |
+ const cc::PaintFlags& paint) { |
const ImageSkiaRep& image_rep = image.GetRepresentation(image_scale_); |
if (image_rep.is_null()) |
return; |
@@ -439,7 +442,7 @@ void Canvas::DrawImageIntInPixel(const ImageSkiaRep& image_rep, |
int dest_w, |
int dest_h, |
bool filter, |
- const SkPaint& paint) { |
+ const cc::PaintFlags& paint) { |
int src_x = 0; |
int src_y = 0; |
int src_w = image_rep.pixel_width(); |
@@ -455,17 +458,16 @@ void Canvas::DrawImageInPath(const ImageSkia& image, |
int x, |
int y, |
const SkPath& path, |
- const SkPaint& paint) { |
+ const cc::PaintFlags& paint) { |
const ImageSkiaRep& image_rep = image.GetRepresentation(image_scale_); |
if (image_rep.is_null()) |
return; |
SkMatrix matrix; |
matrix.setTranslate(SkIntToScalar(x), SkIntToScalar(y)); |
- SkPaint p(paint); |
- p.setShader(CreateImageRepShader(image_rep, |
- SkShader::kRepeat_TileMode, |
- matrix)); |
+ cc::PaintFlags p(paint); |
+ p.setShader( |
+ CreateImageRepShader(image_rep, SkShader::kRepeat_TileMode, matrix)); |
canvas_->drawPath(path, p); |
} |
@@ -511,20 +513,20 @@ void Canvas::TileImageInt(const ImageSkia& image, |
if (!IntersectsClipRect(dest_rect)) |
return; |
- SkPaint paint; |
- if (InitSkPaintForTiling(image, src_x, src_y, tile_scale_x, tile_scale_y, |
- dest_x, dest_y, &paint)) |
+ cc::PaintFlags paint; |
+ if (InitPaintFlagsForTiling(image, src_x, src_y, tile_scale_x, tile_scale_y, |
+ dest_x, dest_y, &paint)) |
canvas_->drawRect(dest_rect, paint); |
} |
-bool Canvas::InitSkPaintForTiling(const ImageSkia& image, |
- int src_x, |
- int src_y, |
- float tile_scale_x, |
- float tile_scale_y, |
- int dest_x, |
- int dest_y, |
- SkPaint* paint) { |
+bool Canvas::InitPaintFlagsForTiling(const ImageSkia& image, |
+ int src_x, |
+ int src_y, |
+ float tile_scale_x, |
+ float tile_scale_y, |
+ int dest_x, |
+ int dest_y, |
+ cc::PaintFlags* paint) { |
const ImageSkiaRep& image_rep = image.GetRepresentation(image_scale_); |
if (image_rep.is_null()) |
return false; |
@@ -560,7 +562,7 @@ void Canvas::DrawImageIntHelper(const ImageSkiaRep& image_rep, |
int dest_w, |
int dest_h, |
bool filter, |
- const SkPaint& paint, |
+ const cc::PaintFlags& paint, |
bool remove_image_scale) { |
DLOG_ASSERT(src_x + src_w < std::numeric_limits<int16_t>::max() && |
src_y + src_h < std::numeric_limits<int16_t>::max()); |
@@ -589,7 +591,7 @@ void Canvas::DrawImageIntHelper(const ImageSkiaRep& image_rep, |
shader_scale.preTranslate(SkIntToScalar(-src_x), SkIntToScalar(-src_y)); |
shader_scale.postTranslate(SkIntToScalar(dest_x), SkIntToScalar(dest_y)); |
- SkPaint p(paint); |
+ cc::PaintFlags p(paint); |
p.setFilterQuality(filter ? kLow_SkFilterQuality : kNone_SkFilterQuality); |
p.setShader(CreateImageRepShaderForScale( |
image_rep, SkShader::kRepeat_TileMode, shader_scale, |