Index: cc/paint/paint_shader.cc |
diff --git a/cc/paint/paint_shader.cc b/cc/paint/paint_shader.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4f81e2ac7d04ab313756c8420f07b3dddd30573d |
--- /dev/null |
+++ b/cc/paint/paint_shader.cc |
@@ -0,0 +1,112 @@ |
+// Copyright 2017 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "cc/paint/paint_shader.h" |
+#include "cc/paint/paint_record.h" |
+ |
+#include "third_party/skia/include/effects/SkGradientShader.h" |
+ |
+namespace cc { |
+ |
+PaintShader::PaintShader(SkColor color) : PaintShader(nullptr, color) {} |
+PaintShader::PaintShader(const SkPoint points[], |
+ const SkColor colors[], |
+ const SkScalar pos[], |
+ int count, |
+ SkShader::TileMode mode, |
+ uint32_t flags, |
+ const SkMatrix* local_matrix, |
+ SkColor fallback_color) |
+ : PaintShader(SkGradientShader::MakeLinear(points, |
+ colors, |
+ pos, |
+ count, |
+ mode, |
+ flags, |
+ local_matrix), |
+ fallback_color) {} |
+PaintShader::PaintShader(const SkPoint& center, |
+ SkScalar radius, |
+ const SkColor colors[], |
+ const SkScalar pos[], |
+ int color_count, |
+ SkShader::TileMode mode, |
+ uint32_t flags, |
+ const SkMatrix* local_matrix, |
+ SkColor fallback_color) |
+ : PaintShader(SkGradientShader::MakeRadial(center, |
+ radius, |
+ colors, |
+ pos, |
+ color_count, |
+ mode, |
+ flags, |
+ local_matrix), |
+ fallback_color) {} |
+PaintShader::PaintShader(const SkPoint& start, |
+ SkScalar start_radius, |
+ const SkPoint& end, |
+ SkScalar end_radius, |
+ const SkColor colors[], |
+ const SkScalar pos[], |
+ int color_count, |
+ SkShader::TileMode mode, |
+ uint32_t flags, |
+ const SkMatrix* local_matrix, |
+ SkColor fallback_color) |
+ : PaintShader(SkGradientShader::MakeTwoPointConical(start, |
+ start_radius, |
+ end, |
+ end_radius, |
+ colors, |
+ pos, |
+ color_count, |
+ mode, |
+ flags, |
+ local_matrix), |
+ fallback_color) {} |
+PaintShader::PaintShader(SkScalar cx, |
+ SkScalar cy, |
+ const SkColor colors[], |
+ const SkScalar pos[], |
+ int color_count, |
+ uint32_t flags, |
+ const SkMatrix* local_matrix, |
+ SkColor fallback_color) |
+ : PaintShader(SkGradientShader::MakeSweep(cx, |
+ cy, |
+ colors, |
+ pos, |
+ color_count, |
+ flags, |
+ local_matrix), |
+ fallback_color) {} |
+PaintShader::PaintShader(sk_sp<const SkImage> image, |
+ SkShader::TileMode tx, |
+ SkShader::TileMode ty, |
+ const SkMatrix* local_matrix) |
+ : PaintShader(image->makeShader(tx, ty, local_matrix), |
+ SK_ColorTRANSPARENT) {} |
+PaintShader::PaintShader(sk_sp<PaintRecord> record, |
+ const SkRect& tile, |
+ SkShader::TileMode tx, |
+ SkShader::TileMode ty, |
+ const SkMatrix* local_matrix) |
+ : PaintShader( |
+ SkShader::MakePictureShader(ToSkPicture(std::move(record), tile), |
+ tx, |
+ ty, |
+ local_matrix, |
+ nullptr), |
+ SK_ColorTRANSPARENT) {} |
+PaintShader::PaintShader(sk_sp<SkShader> shader, SkColor fallback_color) |
+ : sk_shader_(shader ? std::move(shader) |
+ : SkShader::MakeColorShader(fallback_color)) { |
+ DCHECK(sk_shader_); |
+} |
+PaintShader::PaintShader(const PaintShader& other) = default; |
+PaintShader::PaintShader(PaintShader&& other) = default; |
+PaintShader::~PaintShader() = default; |
+ |
+} // namespace cc |