diff options
-rw-r--r-- | gm/pictureshader.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/gm/pictureshader.cpp b/gm/pictureshader.cpp index eccf6a6287..630ecd8f0c 100644 --- a/gm/pictureshader.cpp +++ b/gm/pictureshader.cpp @@ -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); +} |