10 SkISize canvas_size = target_canvas->getBaseLayerSize();
12 std::make_unique<SkNWayCanvas>(canvas_size.width(), canvas_size.height());
13 did_draw_canvas_ = std::make_unique<DidDrawCanvas>(canvas_size.width(),
14 canvas_size.height());
15 n_way_canvas_->addCanvas(target_canvas);
16 n_way_canvas_->addCanvas(did_draw_canvas_.get());
25 return n_way_canvas_.get();
29 : SkCanvasVirtualEnforcer<SkNoDrawCanvas>(
width,
height) {}
33void DidDrawCanvas::MarkDrawIfNonTransparentPaint(
const SkPaint& paint) {
34 bool isTransparent = paint.getAlpha() == 0;
35 did_draw_ |= !isTransparent;
39 return did_draw_canvas_->DidDrawIntoCanvas();
46void DidDrawCanvas::willSave() {}
48SkCanvas::SaveLayerStrategy DidDrawCanvas::getSaveLayerStrategy(
49 const SaveLayerRec& rec) {
50 return kNoLayer_SaveLayerStrategy;
53bool DidDrawCanvas::onDoSaveBehind(
const SkRect* bounds) {
57void DidDrawCanvas::willRestore() {}
59void DidDrawCanvas::didConcat44(
const SkM44&) {}
61void DidDrawCanvas::didScale(SkScalar, SkScalar) {}
63void DidDrawCanvas::didTranslate(SkScalar, SkScalar) {}
65void DidDrawCanvas::onClipRect(
const SkRect& rect,
67 ClipEdgeStyle edgeStyle) {}
69void DidDrawCanvas::onClipRRect(
const SkRRect& rrect,
71 ClipEdgeStyle edgeStyle) {}
73void DidDrawCanvas::onClipPath(
const SkPath&
path,
75 ClipEdgeStyle edgeStyle) {}
77void DidDrawCanvas::onClipRegion(
const SkRegion& deviceRgn, SkClipOp op) {}
79void DidDrawCanvas::onDrawPaint(
const SkPaint& paint) {
80 MarkDrawIfNonTransparentPaint(paint);
83void DidDrawCanvas::onDrawBehind(
const SkPaint& paint) {
84 MarkDrawIfNonTransparentPaint(paint);
87void DidDrawCanvas::onDrawPoints(PointMode mode,
90 const SkPaint& paint) {
91 MarkDrawIfNonTransparentPaint(paint);
94void DidDrawCanvas::onDrawRect(
const SkRect& rect,
const SkPaint& paint) {
95 MarkDrawIfNonTransparentPaint(paint);
98void DidDrawCanvas::onDrawRegion(
const SkRegion& region,
const SkPaint& paint) {
99 MarkDrawIfNonTransparentPaint(paint);
102void DidDrawCanvas::onDrawOval(
const SkRect& rect,
const SkPaint& paint) {
103 MarkDrawIfNonTransparentPaint(paint);
106void DidDrawCanvas::onDrawArc(
const SkRect& rect,
110 const SkPaint& paint) {
111 MarkDrawIfNonTransparentPaint(paint);
114void DidDrawCanvas::onDrawRRect(
const SkRRect& rrect,
const SkPaint& paint) {
115 MarkDrawIfNonTransparentPaint(paint);
118void DidDrawCanvas::onDrawDRRect(
const SkRRect& outer,
119 const SkRRect& inner,
120 const SkPaint& paint) {
121 MarkDrawIfNonTransparentPaint(paint);
124void DidDrawCanvas::onDrawPath(
const SkPath&
path,
const SkPaint& paint) {
125 MarkDrawIfNonTransparentPaint(paint);
128#ifdef SK_SUPPORT_LEGACY_ONDRAWIMAGERECT
129void DidDrawCanvas::onDrawImage(
const SkImage*
image,
132 const SkPaint* paint) {
136void DidDrawCanvas::onDrawImageRect(
const SkImage*
image,
139 const SkPaint* paint,
140 SrcRectConstraint constraint) {
144void DidDrawCanvas::onDrawImageLattice(
const SkImage*
image,
145 const Lattice& lattice,
147 const SkPaint* paint) {
151void DidDrawCanvas::onDrawAtlas(
const SkImage*
image,
152 const SkRSXform xform[],
154 const SkColor colors[],
158 const SkPaint* paint) {
162void DidDrawCanvas::onDrawEdgeAAImageSet(
const ImageSetEntry set[],
164 const SkPoint dstClips[],
165 const SkMatrix preViewMatrices[],
166 const SkPaint* paint,
167 SrcRectConstraint constraint) {
172void DidDrawCanvas::onDrawImage2(
const SkImage*
image,
175 const SkSamplingOptions&,
176 const SkPaint* paint) {
180void DidDrawCanvas::onDrawImageRect2(
const SkImage*
image,
183 const SkSamplingOptions&,
184 const SkPaint* paint,
185 SrcRectConstraint constraint) {
189void DidDrawCanvas::onDrawImageLattice2(
const SkImage*
image,
190 const Lattice& lattice,
193 const SkPaint* paint) {
197void DidDrawCanvas::onDrawTextBlob(
const SkTextBlob* blob,
200 const SkPaint& paint) {
201 MarkDrawIfNonTransparentPaint(paint);
204void DidDrawCanvas::onDrawPicture(
const SkPicture* picture,
205 const SkMatrix* matrix,
206 const SkPaint* paint) {
210void DidDrawCanvas::onDrawDrawable(SkDrawable* drawable,
211 const SkMatrix* matrix) {
215void DidDrawCanvas::onDrawVerticesObject(
const SkVertices* vertices,
217 const SkPaint& paint) {
218 MarkDrawIfNonTransparentPaint(paint);
221void DidDrawCanvas::onDrawPatch(
const SkPoint cubics[12],
222 const SkColor colors[4],
223 const SkPoint texCoords[4],
225 const SkPaint& paint) {
226 MarkDrawIfNonTransparentPaint(paint);
229void DidDrawCanvas::onDrawAtlas2(
const SkImage*
image,
230 const SkRSXform xform[],
232 const SkColor colors[],
235 const SkSamplingOptions&,
237 const SkPaint* paint) {
241void DidDrawCanvas::onDrawShadowRec(
const SkPath&
path,
242 const SkDrawShadowRec& rec) {
246void DidDrawCanvas::onDrawAnnotation(
const SkRect& rect,
252void DidDrawCanvas::onDrawEdgeAAQuad(
const SkRect& rect,
253 const SkPoint clip[4],
254 SkCanvas::QuadAAFlags aa,
255 const SkColor4f& color,
260void DidDrawCanvas::onDrawEdgeAAImageSet2(
const ImageSetEntry set[],
262 const SkPoint dstClips[],
263 const SkMatrix preViewMatrices[],
264 const SkSamplingOptions&,
265 const SkPaint* paint,
266 SrcRectConstraint constraint) {
SkCanvas * GetRawSpyingCanvas()
The underlying Skia canvas that implements the spying (mainly for testing)
CanvasSpy(SkCanvas *target_canvas)
bool DidDrawIntoCanvas()
Returns true if any non transparent content has been drawn into the spying canvas....
DlCanvas * GetSpyingCanvas()
The returned canvas delegate all operations to the target canvas while spying on them.
DidDrawCanvas(int width, int height)
~DidDrawCanvas() override
Developer-facing API for rendering anything within the engine.
void set_canvas(SkCanvas *canvas)
FlutterVulkanImage * image
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot The VM snapshot data that will be memory mapped as read only SnapshotAssetPath must be present isolate snapshot The isolate snapshot data that will be memory mapped as read only SnapshotAssetPath must be present cache dir path
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot data