Index: sky/engine/core/painting/CanvasGradient.cpp |
diff --git a/sky/engine/core/painting/CanvasGradient.cpp b/sky/engine/core/painting/CanvasGradient.cpp |
index 5e356ef03b0820c8b9dd2e0f4508698e824622ed..b1d8cf1f7447177ae99ec6a3a5d253a3b4e1c66d 100644 |
--- a/sky/engine/core/painting/CanvasGradient.cpp |
+++ b/sky/engine/core/painting/CanvasGradient.cpp |
@@ -5,31 +5,42 @@ |
#include "sky/engine/config.h" |
#include "sky/engine/core/painting/CanvasGradient.h" |
-#include "base/logging.h" |
-#include "sky/engine/core/painting/Picture.h" |
- |
namespace blink { |
-PassRefPtr<CanvasGradient> CanvasGradient::create( |
- int type, |
- const Vector<Point>& end_points, |
- const Vector<SkColor>& colors, |
- const Vector<float>& color_stops) { |
- ASSERT(type == 0); // Only 1 supported type so far. |
+PassRefPtr<CanvasGradient> CanvasGradient::create() { |
+ return adoptRef(new CanvasGradient()); |
+} |
+ |
+void CanvasGradient::initLinear(const Vector<Point>& end_points, |
+ const Vector<SkColor>& colors, |
+ const Vector<float>& color_stops) { |
ASSERT(end_points.size() == 2); |
ASSERT(colors.size() == color_stops.size() || color_stops.data() == nullptr); |
SkPoint sk_end_points[2]; |
for (int i = 0; i < 2; ++i) |
sk_end_points[i] = end_points[i].sk_point; |
+ // TODO(mpcomplete): allow setting the TileMode. |
SkShader* shader = SkGradientShader::CreateLinear( |
sk_end_points, colors.data(), color_stops.data(), colors.size(), |
SkShader::kClamp_TileMode); |
- return adoptRef(new CanvasGradient(adoptRef(shader))); |
+ set_shader(adoptRef(shader)); |
+} |
+ |
+void CanvasGradient::initRadial(const Point& center, |
+ double radius, |
+ const Vector<SkColor>& colors, |
+ const Vector<float>& color_stops) { |
+ ASSERT(colors.size() == color_stops.size() || color_stops.data() == nullptr); |
+ |
+ SkShader* shader = SkGradientShader::CreateRadial( |
+ center.sk_point, radius, colors.data(), color_stops.data(), colors.size(), |
+ SkShader::kClamp_TileMode); |
+ set_shader(adoptRef(shader)); |
} |
-CanvasGradient::CanvasGradient(PassRefPtr<SkShader> shader) |
- : Shader(shader) |
+CanvasGradient::CanvasGradient() |
+ : Shader(nullptr) |
{ |
} |
@@ -37,4 +48,4 @@ CanvasGradient::~CanvasGradient() |
{ |
} |
-} // namespace blink |
+} // namespace blink |