diff options
Diffstat (limited to 'samplecode')
-rw-r--r-- | samplecode/SampleFilterFuzz.cpp | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/samplecode/SampleFilterFuzz.cpp b/samplecode/SampleFilterFuzz.cpp index f77f3b814d..4ef7d4033a 100644 --- a/samplecode/SampleFilterFuzz.cpp +++ b/samplecode/SampleFilterFuzz.cpp @@ -184,6 +184,30 @@ static const SkBitmap& make_bitmap() { return bitmap[R(2)]; } +#ifdef SK_ALLOW_PICTUREIMAGEFILTER_SERIALIZATION +static void drawSomething(SkCanvas* canvas) { + SkPaint paint; + + canvas->save(); + canvas->scale(0.5f, 0.5f); + canvas->drawBitmap(make_bitmap(), 0, 0, NULL); + canvas->restore(); + + const char beforeStr[] = "before circle"; + const char afterStr[] = "after circle"; + + paint.setAntiAlias(true); + + paint.setColor(SK_ColorRED); + canvas->drawData(beforeStr, sizeof(beforeStr)); + canvas->drawCircle(SkIntToScalar(kBitmapSize/2), SkIntToScalar(kBitmapSize/2), SkIntToScalar(kBitmapSize/3), paint); + canvas->drawData(afterStr, sizeof(afterStr)); + paint.setColor(SK_ColorBLACK); + paint.setTextSize(SkIntToScalar(kBitmapSize/3)); + canvas->drawText("Picture", 7, SkIntToScalar(kBitmapSize/2), SkIntToScalar(kBitmapSize/4), paint); +} +#endif + static SkImageFilter* make_image_filter(bool canBeNull = true) { SkImageFilter* filter = 0; @@ -294,7 +318,16 @@ static SkImageFilter* make_image_filter(bool canBeNull = true) { filter = new SkTileImageFilter(make_rect(), make_rect(), make_image_filter(false)); break; case PICTURE: - filter = new SkPictureImageFilter(NULL, make_rect()); + { + SkPicture* pict = NULL; +#ifdef SK_ALLOW_PICTUREIMAGEFILTER_SERIALIZATION + pict = new SkPicture; + SkAutoUnref aur(pict); + drawSomething(pict->beginRecording(kBitmapSize, kBitmapSize)); + pict->endRecording(); +#endif + filter = new SkPictureImageFilter(pict, make_rect()); + } break; default: break; |