1 // Copyright 2019 Google LLC.
2 // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
3 #include "tools/fiddle/examples.h"
4 REG_FIDDLE(Picture_MakePlaceholder, 256, 256, false, 0) {
5 class MyCanvas : public SkCanvas {
6 public:
MyCanvas(SkCanvas * c)7 MyCanvas(SkCanvas* c) : canvas(c) {}
onDrawPicture(const SkPicture * picture,const SkMatrix *,const SkPaint *)8 void onDrawPicture(const SkPicture* picture, const SkMatrix* ,
9 const SkPaint* ) override {
10 const SkRect rect = picture->cullRect();
11 SkPaint redPaint;
12 redPaint.setColor(SK_ColorRED);
13 canvas->drawRect(rect, redPaint);
14 }
15 SkCanvas* canvas;
16 };
17
draw(SkCanvas * canvas)18 void draw(SkCanvas* canvas) {
19 SkPictureRecorder recorder;
20 SkCanvas* pictureCanvas = recorder.beginRecording({0, 0, 256, 256});
21 sk_sp<SkPicture> placeholder = SkPicture::MakePlaceholder({10, 40, 80, 110});
22 pictureCanvas->drawPicture(placeholder);
23 sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();
24 MyCanvas myCanvas(canvas);
25 myCanvas.drawPicture(picture);
26 }
27 } // END FIDDLE
28