};
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);
+}