GM for http://skbug.com/3398
authorhalcanary <halcanary@google.com>
Thu, 5 Feb 2015 18:26:27 +0000 (10:26 -0800)
committerCommit bot <commit-bot@chromium.org>
Thu, 5 Feb 2015 18:26:27 +0000 (10:26 -0800)
BUG=skia:3398

Review URL: https://codereview.chromium.org/896093005

gm/pictureshader.cpp

index eccf6a6..630ecd8 100644 (file)
@@ -180,3 +180,38 @@ private:
 };
 
 DEF_GM( return SkNEW_ARGS(PictureShaderGM, (50, 100)); )
+
+DEF_SIMPLE_GM(tiled_picture_shader, canvas, 400, 400) {
+    // https://code.google.com/p/skia/issues/detail?id=3398
+    SkRect tile = SkRect::MakeWH(100, 100);
+
+    SkPictureRecorder recorder;
+    SkCanvas* c = recorder.beginRecording(tile);
+
+    SkRect r = tile;
+    r.inset(4, 4);
+    SkPaint p;
+    p.setColor(0xFF303F9F);  // dark blue
+    c->drawRect(r, p);
+    p.setColor(0xFFC5CAE9);  // light blue
+    p.setStrokeWidth(10);
+    c->drawLine(20, 20, 80, 80, p);
+
+    SkAutoTUnref<SkPicture> picture(recorder.endRecording());
+    SkAutoTUnref<SkShader> shader(SkShader::CreatePictureShader(
+             picture.get(),
+             SkShader::kRepeat_TileMode,
+             SkShader::kRepeat_TileMode,
+             NULL,
+             NULL));
+
+    p.setColor(0xFF8BC34A);  // green
+    canvas->drawPaint(p);
+
+    canvas->clipRect(SkRect::MakeXYWH(0, 0, 400, 350));
+    p.setColor(0xFFB6B6B6);  // gray
+    canvas->drawPaint(p);
+    p.setShader(shader.get());
+
+    canvas->drawPaint(p);
+}