Options
These globals are now defined:
double duration; // The requested duration of the animation. double frame; // A value in [0, 1] of where we are in the animation.
This global is now defined:
GrBackendRenderTarget backEndRenderTarget;
GrBackendTexture backEndTextureRenderTarget;
Optional source image
These globals are now defined:
SkBitmap source; sk_sp<SkImage> image; GrBackendTexture backEndTexture; // GPU Only.
Note:
Adding comments with SK_FOLD_START and SK_FOLD_END creates foldable code
blocks.
These blocks will be folded by default and are useful for highlighting specific lines of code.
You can also use the keyboard shortcuts Ctrl+S and Ctrl+E in the code editor to set them.
These blocks will be folded by default and are useful for highlighting specific lines of code.
You can also use the keyboard shortcuts Ctrl+S and Ctrl+E in the code editor to set them.
xxxxxxxxxx
74
void draw(SkCanvas* canvas) {
// This fiddle draws 4 instances of a LinearGradient, demonstrating
// how the local matrix affects the gradient as well as the flag
// which controls unpremul vs premul color interpolation.
SkPaint strokePaint;
strokePaint.setStyle(SkPaint::kStroke_Style);
strokePaint.setColor(SK_ColorBLACK);
SkPaint p;
p.setStyle(SkPaint::kFill_Style);
SkColor transparentGreen = SkColorSetARGB(0, 0, 255, 255);
SkColor colors[] = { transparentGreen, SK_ColorBLUE, SK_ColorRED };
SkScalar positions[] = { 0.0, 0.65, 1.0 };
SkPoint pts[] = { {0, 0}, {50, 100} };
auto lgs = SkGradientShader::MakeLinear(
pts,
colors, positions, 3, // num colors
SkTileMode::kMirror,
0, // flags - interpolate colors in unpremul
nullptr);
p.setShader(lgs);
auto r = SkRect::MakeLTRB(0, 0, 100, 100);
canvas->drawRect(r, p);
canvas->drawRect(r, strokePaint);
pts[0] = {100, 0};
pts[1] = {150, 100};
auto lgsPremul = SkGradientShader::MakeLinear(
pts,
colors, positions, 3, // num colors
SkTileMode::kMirror,
SkGradientShader::Flags::kInterpolateColorsInPremul_Flag,
nullptr);
p.setShader(lgsPremul);
r = SkRect::MakeLTRB(100, 0, 200, 100);
canvas->drawRect(r, p);
canvas->drawRect(r, strokePaint);
pts[0] = {0, 100};
pts[1] = {50, 200};
SkMatrix m;
m.setRotate(45, 0, 100);
auto lgs45 = SkGradientShader::MakeLinear(
pts,
colors, positions, 3, // num colors
SkTileMode::kMirror,
0, // flags - interpolate colors in unpremul
&m);
p.setShader(lgs45);
r = SkRect::MakeLTRB(0, 100, 100, 200);
canvas->drawRect(r, p);
canvas->drawRect(r, strokePaint);
pts[0] = {100, 100};
pts[1] = {150, 200};
m.setRotate(45, 100, 100);
auto lgs45AndPremul = SkGradientShader::MakeLinear(
pts,
colors, positions, 3, // num colors
SkTileMode::kMirror,
SkGradientShader::Flags::kInterpolateColorsInPremul_Flag,
&m);
p.setShader(lgs45AndPremul);
r = SkRect::MakeLTRB(100, 100, 200, 200);
canvas->drawRect(r, p);
canvas->drawRect(r, strokePaint);
}