| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2006 The Android Open Source Project | 2 * Copyright 2006 The Android Open Source Project |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #ifndef SkGradientShader_DEFINED | 8 #ifndef SkGradientShader_DEFINED |
| 9 #define SkGradientShader_DEFINED | 9 #define SkGradientShader_DEFINED |
| 10 | 10 |
| 11 #include "SkShader.h" | 11 #include "SkShader.h" |
| 12 | 12 |
| 13 /** \class SkGradientShader | 13 /** \class SkGradientShader |
| 14 | 14 |
| 15 SkGradientShader hosts factories for creating subclasses of SkShader that | 15 SkGradientShader hosts factories for creating subclasses of SkShader that |
| 16 render linear and radial gradients. | 16 render linear and radial gradients. |
| 17 */ | 17 */ |
| 18 class SK_API SkGradientShader { | 18 class SK_API SkGradientShader { |
| 19 public: | 19 public: |
| 20 enum Flags { | 20 enum Flags { |
| 21 /** By default gradients will interpolate their colors in unpremul space | 21 /** By default gradients will interpolate their colors in unpremul space |
| 22 * and then premultiply each of the results. By setting this flag, the | 22 * and then premultiply each of the results. By setting this flag, the |
| 23 * gradients will premultiply their colors first, and then interpolate | 23 * gradients will premultiply their colors first, and then interpolate |
| 24 * between them. | 24 * between them. |
| 25 */ | 25 */ |
| 26 kInterpolateColorsInPremul_Flag = 1 << 0, | 26 kInterpolateColorsInPremul_Flag = 1 << 0, |
| 27 }; | 27 }; |
| 28 | 28 |
| 29 /** Returns a shader that generates a linear gradient between the two | 29 /** Returns a shader that generates a linear gradient between the two specif
ied points. |
| 30 specified points. | |
| 31 <p /> | 30 <p /> |
| 32 CreateLinear returns a shader with a reference count of 1. | 31 @param pts The start and end points for the gradient. |
| 33 The caller should decrement the shader's reference count when done with
the shader. | |
| 34 It is an error for count to be < 2. | |
| 35 @param pts The start and end points for the gradient. | |
| 36 @param colors The array[count] of colors, to be distributed between th
e two points | 32 @param colors The array[count] of colors, to be distributed between th
e two points |
| 37 @param pos May be NULL. array[count] of SkScalars, or NULL, of the
relative position of | 33 @param pos May be NULL. array[count] of SkScalars, or NULL, of the
relative position of |
| 38 each corresponding color in the colors array. If this is
NULL, | 34 each corresponding color in the colors array. If this is
NULL, |
| 39 the the colors are distributed evenly between the start
and end point. | 35 the the colors are distributed evenly between the start
and end point. |
| 40 If this is not null, the values must begin with 0, end w
ith 1.0, and | 36 If this is not null, the values must begin with 0, end w
ith 1.0, and |
| 41 intermediate values must be strictly increasing. | 37 intermediate values must be strictly increasing. |
| 42 @param count Must be >=2. The number of colors (and pos if not NULL)
entries. | 38 @param count Must be >=2. The number of colors (and pos if not NULL)
entries. |
| 43 @param mode The tiling mode | 39 @param mode The tiling mode |
| 44 */ | 40 */ |
| 45 static sk_sp<SkShader> MakeLinear(const SkPoint pts[2], | 41 static sk_sp<SkShader> MakeLinear(const SkPoint pts[2], |
| 46 const SkColor colors[], const SkScalar pos
[], int count, | 42 const SkColor colors[], const SkScalar pos
[], int count, |
| 47 SkShader::TileMode mode, | 43 SkShader::TileMode mode, |
| 48 uint32_t flags, const SkMatrix* localMatri
x); | 44 uint32_t flags, const SkMatrix* localMatri
x); |
| 49 static sk_sp<SkShader> MakeLinear(const SkPoint pts[2], | 45 static sk_sp<SkShader> MakeLinear(const SkPoint pts[2], |
| 50 const SkColor colors[], const SkScalar pos
[], int count, | 46 const SkColor colors[], const SkScalar pos
[], int count, |
| 51 SkShader::TileMode mode) { | 47 SkShader::TileMode mode) { |
| 52 return MakeLinear(pts, colors, pos, count, mode, 0, NULL); | 48 return MakeLinear(pts, colors, pos, count, mode, 0, NULL); |
| 53 } | 49 } |
| 54 | 50 |
| 55 /** Returns a shader that generates a radial gradient given the center and r
adius. | 51 /** Returns a shader that generates a radial gradient given the center and r
adius. |
| 56 <p /> | 52 <p /> |
| 57 CreateRadial returns a shader with a reference count of 1. | |
| 58 The caller should decrement the shader's reference count when done with
the shader. | |
| 59 It is an error for colorCount to be < 2, or for radius to be <= 0. | |
| 60 @param center The center of the circle for this gradient | 53 @param center The center of the circle for this gradient |
| 61 @param radius Must be positive. The radius of the circle for this grad
ient | 54 @param radius Must be positive. The radius of the circle for this grad
ient |
| 62 @param colors The array[count] of colors, to be distributed between th
e center and edge of the circle | 55 @param colors The array[count] of colors, to be distributed between th
e center and edge of the circle |
| 63 @param pos May be NULL. The array[count] of SkScalars, or NULL, of
the relative position of | 56 @param pos May be NULL. The array[count] of SkScalars, or NULL, of
the relative position of |
| 64 each corresponding color in the colors array. If this is
NULL, | 57 each corresponding color in the colors array. If this is
NULL, |
| 65 the the colors are distributed evenly between the center
and edge of the circle. | 58 the the colors are distributed evenly between the center
and edge of the circle. |
| 66 If this is not null, the values must begin with 0, end w
ith 1.0, and | 59 If this is not null, the values must begin with 0, end w
ith 1.0, and |
| 67 intermediate values must be strictly increasing. | 60 intermediate values must be strictly increasing. |
| 68 @param count Must be >= 2. The number of colors (and pos if not NULL)
entries | 61 @param count Must be >= 2. The number of colors (and pos if not NULL)
entries |
| 69 @param mode The tiling mode | 62 @param mode The tiling mode |
| (...skipping 22 matching lines...) Expand all Loading... |
| 92 static sk_sp<SkShader> MakeTwoPointConical(const SkPoint& start, SkScalar st
artRadius, | 85 static sk_sp<SkShader> MakeTwoPointConical(const SkPoint& start, SkScalar st
artRadius, |
| 93 const SkPoint& end, SkScalar endR
adius, | 86 const SkPoint& end, SkScalar endR
adius, |
| 94 const SkColor colors[], const SkS
calar pos[], | 87 const SkColor colors[], const SkS
calar pos[], |
| 95 int count, SkShader::TileMode mod
e) { | 88 int count, SkShader::TileMode mod
e) { |
| 96 return MakeTwoPointConical(start, startRadius, end, endRadius, colors, p
os, count, mode, | 89 return MakeTwoPointConical(start, startRadius, end, endRadius, colors, p
os, count, mode, |
| 97 0, NULL); | 90 0, NULL); |
| 98 } | 91 } |
| 99 | 92 |
| 100 /** Returns a shader that generates a sweep gradient given a center. | 93 /** Returns a shader that generates a sweep gradient given a center. |
| 101 <p /> | 94 <p /> |
| 102 CreateSweep returns a shader with a reference count of 1. | |
| 103 The caller should decrement the shader's reference count when done with
the shader. | |
| 104 It is an error for colorCount to be < 2. | |
| 105 @param cx The X coordinate of the center of the sweep | 95 @param cx The X coordinate of the center of the sweep |
| 106 @param cx The Y coordinate of the center of the sweep | 96 @param cx The Y coordinate of the center of the sweep |
| 107 @param colors The array[count] of colors, to be distributed around the
center. | 97 @param colors The array[count] of colors, to be distributed around the
center. |
| 108 @param pos May be NULL. The array[count] of SkScalars, or NULL, of
the relative position of | 98 @param pos May be NULL. The array[count] of SkScalars, or NULL, of
the relative position of |
| 109 each corresponding color in the colors array. If this is
NULL, | 99 each corresponding color in the colors array. If this is
NULL, |
| 110 the the colors are distributed evenly between the center
and edge of the circle. | 100 the the colors are distributed evenly between the center
and edge of the circle. |
| 111 If this is not null, the values must begin with 0, end w
ith 1.0, and | 101 If this is not null, the values must begin with 0, end w
ith 1.0, and |
| 112 intermediate values must be strictly increasing. | 102 intermediate values must be strictly increasing. |
| 113 @param count Must be >= 2. The number of colors (and pos if not NULL)
entries | 103 @param count Must be >= 2. The number of colors (and pos if not NULL)
entries |
| 114 */ | 104 */ |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 171 const SkColor colors[], const SkScalar pos[], i
nt count) { | 161 const SkColor colors[], const SkScalar pos[], i
nt count) { |
| 172 return CreateSweep(cx, cy, colors, pos, count, 0, NULL); | 162 return CreateSweep(cx, cy, colors, pos, count, 0, NULL); |
| 173 } | 163 } |
| 174 #endif | 164 #endif |
| 175 | 165 |
| 176 | 166 |
| 177 SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP() | 167 SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP() |
| 178 }; | 168 }; |
| 179 | 169 |
| 180 #endif | 170 #endif |
| OLD | NEW |