summaryrefslogtreecommitdiffstats
path: root/gfx/canvas_skia.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/canvas_skia.cc')
-rw-r--r--gfx/canvas_skia.cc34
1 files changed, 34 insertions, 0 deletions
diff --git a/gfx/canvas_skia.cc b/gfx/canvas_skia.cc
index fbdc0a9..f2c344c 100644
--- a/gfx/canvas_skia.cc
+++ b/gfx/canvas_skia.cc
@@ -18,6 +18,12 @@
namespace {
+SkPoint PointToSkPoint(const gfx::Point point) {
+ SkPoint sk_point;
+ sk_point.set(SkIntToScalar(point.x()), SkIntToScalar(point.y()));
+ return sk_point;
+}
+
SkShader::TileMode TileModeToSkShaderTileMode(gfx::Canvas::TileMode tile_mode) {
switch (tile_mode) {
case gfx::Canvas::TileMode_Clamp:
@@ -364,6 +370,34 @@ Brush* CanvasSkia::CreateLinearGradientBrush(
return new SkiaShader(shader);
}
+Brush* CanvasSkia::CreateRadialGradientBrush(
+ const gfx::Point& center_point,
+ float radius,
+ const SkColor colors[],
+ const float positions[],
+ size_t position_count,
+ TileMode tile_mode) {
+ SkShader* shader = SkGradientShader::CreateRadial(
+ PointToSkPoint(center_point),
+ radius,
+ colors,
+ positions,
+ position_count,
+ TileModeToSkShaderTileMode(tile_mode));
+ return new SkiaShader(shader);
+}
+
+Brush* CanvasSkia::CreateBitmapBrush(
+ const SkBitmap& bitmap,
+ TileMode tile_mode_x,
+ TileMode tile_mode_y) {
+ SkShader* shader = SkShader::CreateBitmapShader(
+ bitmap,
+ TileModeToSkShaderTileMode(tile_mode_x),
+ TileModeToSkShaderTileMode(tile_mode_y));
+ return new SkiaShader(shader);
+}
+
CanvasSkia* CanvasSkia::AsCanvasSkia() {
return this;
}