aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/gradients.cpp
diff options
context:
space:
mode:
authorGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-06-27 18:11:17 +0000
committerGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-06-27 18:11:17 +0000
commitac864a945cb7e1be93717f209bf7eff2c4b6b2b5 (patch)
tree3521950799bf08acbb8b17a188a806af43a37d37 /gm/gradients.cpp
parent314e9b3ba0b950b99e4d11e3302933014c35c3ed (diff)
add test for degenerate 2point gradients (needs pdf and gpu fixes)
git-svn-id: http://skia.googlecode.com/svn/trunk@1727 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'gm/gradients.cpp')
-rw-r--r--gm/gradients.cpp57
1 files changed, 56 insertions, 1 deletions
diff --git a/gm/gradients.cpp b/gm/gradients.cpp
index 26eee9d6c4..1cab7bca73 100644
--- a/gm/gradients.cpp
+++ b/gm/gradients.cpp
@@ -80,7 +80,7 @@ protected:
return SkString("gradients");
}
- SkISize onISize() { return make_isize(640, 510); }
+ virtual SkISize onISize() { return make_isize(640, 510); }
void drawBG(SkCanvas* canvas) {
canvas->drawColor(0xFFDDDDDD);
@@ -117,10 +117,65 @@ private:
typedef GM INHERITED;
};
+/*
+ Inspired by this <canvas> javascript, where we need to detect that we are not
+ solving a quadratic equation, but must instead solve a linear (since our X^2
+ coefficient is 0)
+
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+
+ var g = ctx.createRadialGradient(-80, 25, 70, 0, 25, 150);
+ g.addColorStop(0, '#f00');
+ g.addColorStop(0.01, '#0f0');
+ g.addColorStop(0.99, '#0f0');
+ g.addColorStop(1, '#f00');
+ ctx.fillStyle = g;
+ ctx.fillRect(0, 0, 100, 50);
+ */
+class GradientsDegenrate2PointGM : public GM {
+public:
+ GradientsDegenrate2PointGM() {}
+
+protected:
+ SkString onShortName() {
+ return SkString("gradients_degenerate_2pt");
+ }
+
+ virtual SkISize onISize() { return make_isize(320, 320); }
+
+ void drawBG(SkCanvas* canvas) {
+ canvas->drawColor(SK_ColorBLUE);
+ }
+
+ virtual void onDraw(SkCanvas* canvas) {
+ this->drawBG(canvas);
+
+ SkColor colors[] = { SK_ColorRED, SK_ColorGREEN, SK_ColorGREEN, SK_ColorRED };
+ SkScalar pos[] = { 0, SkFloatToScalar(0.01f), SkFloatToScalar(0.99f), SK_Scalar1 };
+ SkPoint c0 = { -80, 25 };
+ SkScalar r0 = 70;
+ SkPoint c1 = { 0, 25 };
+ SkScalar r1 = 150;
+ SkShader* s = SkGradientShader::CreateTwoPointRadial(c0, r0, c1, r1, colors,
+ pos, SK_ARRAY_COUNT(pos),
+ SkShader::kClamp_TileMode);
+ SkPaint paint;
+ paint.setShader(s)->unref();
+ canvas->drawPaint(paint);
+ }
+
+private:
+ typedef GM INHERITED;
+};
+
///////////////////////////////////////////////////////////////////////////////
static GM* MyFactory(void*) { return new GradientsGM; }
static GMRegistry reg(MyFactory);
+static GM* MyFactory2(void*) { return new GradientsDegenrate2PointGM; }
+static GMRegistry reg2(MyFactory2);
+
}