Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
canvas_spy.cc
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "flutter/shell/platform/fuchsia/flutter/canvas_spy.h"
6
7namespace flutter {
8
10 SkISize canvas_size = target_canvas->getBaseLayerSize();
11 n_way_canvas_ =
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());
17 adapter_.set_canvas(n_way_canvas_.get());
18}
19
21 return &adapter_;
22}
23
25 return n_way_canvas_.get();
26};
27
30
32
33void DidDrawCanvas::MarkDrawIfNonTransparentPaint(const SkPaint& paint) {
34 bool isTransparent = paint.getAlpha() == 0;
35 did_draw_ |= !isTransparent;
36}
37
39 return did_draw_canvas_->DidDrawIntoCanvas();
40}
41
43 return did_draw_;
44}
45
47
52
54 return false;
55}
56
58
60
62
64
66 SkClipOp op,
67 ClipEdgeStyle edgeStyle) {}
68
70 SkClipOp op,
71 ClipEdgeStyle edgeStyle) {}
72
74 SkClipOp op,
75 ClipEdgeStyle edgeStyle) {}
76
77void DidDrawCanvas::onClipRegion(const SkRegion& deviceRgn, SkClipOp op) {}
78
80 MarkDrawIfNonTransparentPaint(paint);
81}
82
84 MarkDrawIfNonTransparentPaint(paint);
85}
86
88 size_t count,
89 const SkPoint pts[],
90 const SkPaint& paint) {
91 MarkDrawIfNonTransparentPaint(paint);
92}
93
94void DidDrawCanvas::onDrawRect(const SkRect& rect, const SkPaint& paint) {
95 MarkDrawIfNonTransparentPaint(paint);
96}
97
99 MarkDrawIfNonTransparentPaint(paint);
100}
101
103 MarkDrawIfNonTransparentPaint(paint);
104}
105
107 SkScalar startAngle,
108 SkScalar sweepAngle,
109 bool useCenter,
110 const SkPaint& paint) {
111 MarkDrawIfNonTransparentPaint(paint);
112}
113
115 MarkDrawIfNonTransparentPaint(paint);
116}
117
119 const SkRRect& inner,
120 const SkPaint& paint) {
121 MarkDrawIfNonTransparentPaint(paint);
122}
123
125 MarkDrawIfNonTransparentPaint(paint);
126}
127
128#ifdef SK_SUPPORT_LEGACY_ONDRAWIMAGERECT
129void DidDrawCanvas::onDrawImage(const SkImage* image,
131 SkScalar top,
132 const SkPaint* paint) {
133 did_draw_ = true;
134}
135
136void DidDrawCanvas::onDrawImageRect(const SkImage* image,
137 const SkRect* src,
138 const SkRect& dst,
139 const SkPaint* paint,
140 SrcRectConstraint constraint) {
141 did_draw_ = true;
142}
143
144void DidDrawCanvas::onDrawImageLattice(const SkImage* image,
145 const Lattice& lattice,
146 const SkRect& dst,
147 const SkPaint* paint) {
148 did_draw_ = true;
149}
150
151void DidDrawCanvas::onDrawAtlas(const SkImage* image,
152 const SkRSXform xform[],
153 const SkRect tex[],
154 const SkColor colors[],
155 int count,
156 SkBlendMode bmode,
157 const SkRect* cull,
158 const SkPaint* paint) {
159 did_draw_ = true;
160}
161
162void DidDrawCanvas::onDrawEdgeAAImageSet(const ImageSetEntry set[],
163 int count,
164 const SkPoint dstClips[],
165 const SkMatrix preViewMatrices[],
166 const SkPaint* paint,
167 SrcRectConstraint constraint) {
168 did_draw_ = true;
169}
170#endif
171
174 SkScalar top,
175 const SkSamplingOptions&,
176 const SkPaint* paint) {
177 did_draw_ = true;
178}
179
181 const SkRect& src,
182 const SkRect& dst,
183 const SkSamplingOptions&,
184 const SkPaint* paint,
185 SrcRectConstraint constraint) {
186 did_draw_ = true;
187}
188
190 const Lattice& lattice,
191 const SkRect& dst,
193 const SkPaint* paint) {
194 did_draw_ = true;
195}
196
198 SkScalar x,
199 SkScalar y,
200 const SkPaint& paint) {
201 MarkDrawIfNonTransparentPaint(paint);
202}
203
205 const SkMatrix* matrix,
206 const SkPaint* paint) {
207 did_draw_ = true;
208}
209
211 const SkMatrix* matrix) {
212 did_draw_ = true;
213}
214
216 SkBlendMode bmode,
217 const SkPaint& paint) {
218 MarkDrawIfNonTransparentPaint(paint);
219}
220
222 const SkColor colors[4],
223 const SkPoint texCoords[4],
224 SkBlendMode bmode,
225 const SkPaint& paint) {
226 MarkDrawIfNonTransparentPaint(paint);
227}
228
230 const SkRSXform xform[],
231 const SkRect tex[],
232 const SkColor colors[],
233 int count,
234 SkBlendMode bmode,
235 const SkSamplingOptions&,
236 const SkRect* cull,
237 const SkPaint* paint) {
238 did_draw_ = true;
239}
240
242 const SkDrawShadowRec& rec) {
243 did_draw_ = true;
244}
245
247 const char key[],
248 SkData* data) {
249 did_draw_ = true;
250}
251
253 const SkPoint clip[4],
255 const SkColor4f& color,
257 did_draw_ = true;
258}
259
261 int count,
262 const SkPoint dstClips[],
263 const SkMatrix preViewMatrices[],
264 const SkSamplingOptions&,
265 const SkPaint* paint,
266 SrcRectConstraint constraint) {
267 did_draw_ = true;
268}
269
270} // namespace flutter
int count
SkColor4f color
SkBlendMode
Definition SkBlendMode.h:38
SkClipOp
Definition SkClipOp.h:13
uint32_t SkColor
Definition SkColor.h:37
static SkPath clip(const SkPath &path, const SkHalfPlane &plane)
Definition SkPath.cpp:3824
static bool left(const SkPoint &p0, const SkPoint &p1)
SkFilterMode
virtual SkISize getBaseLayerSize() const
Definition SkCanvas.cpp:373
SrcRectConstraint
Definition SkCanvas.h:1541
SaveLayerStrategy
Definition SkCanvas.h:2263
@ kNoLayer_SaveLayerStrategy
Definition SkCanvas.h:2265
Definition SkM44.h:150
SkCanvas * GetRawSpyingCanvas()
The underlying Skia canvas that implements the spying (mainly for testing)
Definition canvas_spy.cc:24
CanvasSpy(SkCanvas *target_canvas)
Definition canvas_spy.cc:9
bool DidDrawIntoCanvas()
Returns true if any non transparent content has been drawn into the spying canvas....
Definition canvas_spy.cc:38
DlCanvas * GetSpyingCanvas()
The returned canvas delegate all operations to the target canvas while spying on them.
Definition canvas_spy.cc:20
void onDrawBehind(const SkPaint &) override
Definition canvas_spy.cc:83
void onDrawDRRect(const SkRRect &, const SkRRect &, const SkPaint &) override
void onClipRect(const SkRect &, SkClipOp, ClipEdgeStyle) override
Definition canvas_spy.cc:65
void onClipRRect(const SkRRect &, SkClipOp, ClipEdgeStyle) override
Definition canvas_spy.cc:69
void onClipPath(const SkPath &, SkClipOp, ClipEdgeStyle) override
Definition canvas_spy.cc:73
void onDrawPath(const SkPath &, const SkPaint &) override
virtual void onDrawTextBlob(const SkTextBlob *blob, SkScalar x, SkScalar y, const SkPaint &paint) override
void onDrawAnnotation(const SkRect &, const char[], SkData *) override
void willRestore() override
Definition canvas_spy.cc:57
void onDrawImageLattice2(const SkImage *, const Lattice &, const SkRect &, SkFilterMode, const SkPaint *) override
void onDrawDrawable(SkDrawable *, const SkMatrix *) override
DidDrawCanvas(int width, int height)
Definition canvas_spy.cc:28
void onDrawImage2(const SkImage *, SkScalar left, SkScalar top, const SkSamplingOptions &, const SkPaint *) override
void onDrawOval(const SkRect &, const SkPaint &) override
void didConcat44(const SkM44 &) override
Definition canvas_spy.cc:59
~DidDrawCanvas() override
Definition canvas_spy.cc:31
void onClipRegion(const SkRegion &, SkClipOp) override
Definition canvas_spy.cc:77
bool onDoSaveBehind(const SkRect *) override
Definition canvas_spy.cc:53
void onDrawAtlas2(const SkImage *, const SkRSXform[], const SkRect[], const SkColor[], int, SkBlendMode, const SkSamplingOptions &, const SkRect *, const SkPaint *) override
SaveLayerStrategy getSaveLayerStrategy(const SaveLayerRec &) override
Definition canvas_spy.cc:48
void onDrawImageRect2(const SkImage *, const SkRect &src, const SkRect &dst, const SkSamplingOptions &, const SkPaint *, SrcRectConstraint) override
void onDrawRegion(const SkRegion &, const SkPaint &) override
Definition canvas_spy.cc:98
void onDrawShadowRec(const SkPath &, const SkDrawShadowRec &) override
virtual void onDrawPatch(const SkPoint cubics[12], const SkColor colors[4], const SkPoint texCoords[4], SkBlendMode, const SkPaint &paint) override
void didTranslate(SkScalar, SkScalar) override
Definition canvas_spy.cc:63
void onDrawPaint(const SkPaint &) override
Definition canvas_spy.cc:79
void onDrawRRect(const SkRRect &, const SkPaint &) override
void didScale(SkScalar, SkScalar) override
Definition canvas_spy.cc:61
void onDrawArc(const SkRect &, SkScalar, SkScalar, bool, const SkPaint &) override
void onDrawEdgeAAQuad(const SkRect &, const SkPoint[4], SkCanvas::QuadAAFlags, const SkColor4f &, SkBlendMode) override
void onDrawEdgeAAImageSet2(const ImageSetEntry[], int count, const SkPoint[], const SkMatrix[], const SkSamplingOptions &, const SkPaint *, SrcRectConstraint) override
void onDrawVerticesObject(const SkVertices *, SkBlendMode, const SkPaint &) override
void onDrawPoints(PointMode, size_t count, const SkPoint pts[], const SkPaint &) override
Definition canvas_spy.cc:87
void willSave() override
Definition canvas_spy.cc:46
void onDrawPicture(const SkPicture *, const SkMatrix *, const SkPaint *) override
void onDrawRect(const SkRect &, const SkPaint &) override
Definition canvas_spy.cc:94
Developer-facing API for rendering anything within the engine.
Definition dl_canvas.h:37
void set_canvas(SkCanvas *canvas)
const Paint & paint
sk_sp< SkImage > image
Definition examples.cpp:29
float SkScalar
Definition extension.cpp:12
double y
double x
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
Definition switches.h:57
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot data
Definition switches.h:41
it will be possible to load the file into Perfetto s trace viewer disable asset Prevents usage of any non test fonts unless they were explicitly Loaded via prefetched default font Indicates whether the embedding started a prefetch of the default font manager before creating the engine run In non interactive mode
Definition switches.h:228
int32_t height
int32_t width
constexpr int32_t width() const
Definition SkSize.h:36
constexpr int32_t height() const
Definition SkSize.h:37