Flutter Engine
The Flutter Engine
mock_canvas.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/testing/mock_canvas.h"
6
7#include "flutter/fml/logging.h"
8#include "flutter/testing/display_list_testing.h"
13
14namespace flutter {
15namespace testing {
16
17constexpr SkISize kSize = SkISize::Make(64, 64);
18
20
22 : base_layer_size_({width, height}), current_layer_(0) {
23 state_stack_.emplace_back(DlRect::MakeXYWH(0, 0, width, height), DlMatrix());
24}
25
27 EXPECT_EQ(current_layer_, 0);
28}
29
31 return base_layer_size_;
32}
33
36 return SkImageInfo::MakeUnknown(size.width(), size.height());
37}
38
40 draw_calls_.emplace_back(
41 DrawCall{current_layer_, SaveData{current_layer_ + 1}});
42 state_stack_.emplace_back(state_stack_.back());
43 current_layer_++; // Must go here; func params order of eval is undefined
44}
45
47 const DlPaint* paint,
48 const DlImageFilter* backdrop) {
49 // saveLayer calls this prior to running, so we use it to track saveLayer
50 // calls
51 draw_calls_.emplace_back(DrawCall{
52 current_layer_,
54 backdrop ? backdrop->shared() : nullptr,
55 current_layer_ + 1}});
56 state_stack_.emplace_back(state_stack_.back());
57 current_layer_++; // Must go here; func params order of eval is undefined
58}
59
61 FML_DCHECK(current_layer_ > 0);
62
63 draw_calls_.emplace_back(
64 DrawCall{current_layer_, RestoreData{current_layer_ - 1}});
65 state_stack_.pop_back();
66 current_layer_--; // Must go here; func params order of eval is undefined
67}
68
69// clang-format off
70
71// 2x3 2D affine subset of a 4x4 transform in row major order
73 SkScalar myx, SkScalar myy, SkScalar myt) {
74 Transform(SkMatrix::MakeAll(mxx, mxy, mxt, myx, myy, myt, 0, 0, 1));
75}
76
77// full 4x4 transform in row major order
79 SkScalar mxx, SkScalar mxy, SkScalar mxz, SkScalar mxt,
80 SkScalar myx, SkScalar myy, SkScalar myz, SkScalar myt,
81 SkScalar mzx, SkScalar mzy, SkScalar mzz, SkScalar mzt,
82 SkScalar mwx, SkScalar mwy, SkScalar mwz, SkScalar mwt) {
83 Transform(SkM44(mxx, mxy, mxz, mxt,
84 myx, myy, myz, myt,
85 mzx, mzy, mzz, mzt,
86 mwx, mwy, mwz, mwt));
87}
88
89// clang-format on
90
92 draw_calls_.emplace_back(
93 DrawCall{current_layer_, ConcatMatrixData{SkM44(*matrix)}});
94 state_stack_.back().transform(*matrix);
95}
96
98 draw_calls_.emplace_back(DrawCall{current_layer_, ConcatMatrixData{*matrix}});
99 state_stack_.back().transform(*matrix);
100}
101
103 draw_calls_.emplace_back(
104 DrawCall{current_layer_, SetMatrixData{SkM44(*matrix)}});
105 state_stack_.back().setTransform(*matrix);
106}
107
109 draw_calls_.emplace_back(DrawCall{current_layer_, SetMatrixData{*matrix}});
110 state_stack_.back().setTransform(*matrix);
111}
112
114 draw_calls_.emplace_back(DrawCall{current_layer_, SetMatrixData{SkM44()}});
115 state_stack_.back().setIdentity();
116}
117
119 this->Transform(SkM44::Translate(x, y));
120}
121
123 this->Transform(SkM44::Scale(x, y));
124}
125
127 this->Transform(SkMatrix::RotateDeg(degrees));
128}
129
131 this->Transform(SkMatrix::Skew(sx, sy));
132}
133
135 return state_stack_.back().matrix_4x4();
136}
137
139 return state_stack_.back().matrix_3x3();
140}
141
143 SkScalar x,
144 SkScalar y,
145 const DlPaint& paint) {
146 // This duplicates existing logic in SkCanvas::onDrawPicture
147 // that should probably be split out so it doesn't need to be here as well.
148 // SkRect storage;
149 // if (paint.canComputeFastBounds()) {
150 // storage = text->bounds().makeOffset(x, y);
151 // SkRect tmp;
152 // if (this->quickReject(paint.computeFastBounds(storage, &tmp))) {
153 // return;
154 // }
155 // }
156
157 draw_calls_.emplace_back(DrawCall{
158 current_layer_, DrawTextData{text ? text->serialize(SkSerialProcs{})
160 paint, SkPoint::Make(x, y)}});
161}
162
164 const std::shared_ptr<impeller::TextFrame>& text_frame,
165 SkScalar x,
166 SkScalar y,
167 const DlPaint& paint) {
168 FML_DCHECK(false);
169}
170
172 draw_calls_.emplace_back(DrawCall{current_layer_, DrawRectData{rect, paint}});
173}
174
176 draw_calls_.emplace_back(DrawCall{current_layer_, DrawPathData{path, paint}});
177}
178
180 const DlColor color,
181 const SkScalar elevation,
182 bool transparent_occluder,
183 SkScalar dpr) {
184 draw_calls_.emplace_back(DrawCall{
185 current_layer_,
186 DrawShadowData{path, color, elevation, transparent_occluder, dpr}});
187}
188
190 SkPoint point,
192 const DlPaint* paint) {
193 if (paint) {
194 draw_calls_.emplace_back(
195 DrawCall{current_layer_,
196 DrawImageData{image, point.fX, point.fY, options, *paint}});
197 } else {
198 draw_calls_.emplace_back(
199 DrawCall{current_layer_,
200 DrawImageDataNoPaint{image, point.fX, point.fY, options}});
201 }
202}
203
205 SkScalar opacity) {
206 draw_calls_.emplace_back(
207 DrawCall{current_layer_, DrawDisplayListData{display_list, opacity}});
208}
209
210void MockCanvas::ClipRect(const SkRect& rect, ClipOp op, bool is_aa) {
212 draw_calls_.emplace_back(
213 DrawCall{current_layer_, ClipRectData{rect, op, style}});
214 state_stack_.back().clipRect(rect, op, is_aa);
215}
216
217void MockCanvas::ClipRRect(const SkRRect& rrect, ClipOp op, bool is_aa) {
219 draw_calls_.emplace_back(
220 DrawCall{current_layer_, ClipRRectData{rrect, op, style}});
221 state_stack_.back().clipRRect(rrect, op, is_aa);
222}
223
224void MockCanvas::ClipPath(const SkPath& path, ClipOp op, bool is_aa) {
226 draw_calls_.emplace_back(
227 DrawCall{current_layer_, ClipPathData{path, op, style}});
228 state_stack_.back().clipPath(path, op, is_aa);
229}
230
232 return state_stack_.back().device_cull_rect();
233}
234
236 return state_stack_.back().local_cull_rect();
237}
238
240 return state_stack_.back().content_culled(bounds);
241}
242
243void MockCanvas::DrawDRRect(const SkRRect&, const SkRRect&, const DlPaint&) {
244 FML_DCHECK(false);
245}
246
248 draw_calls_.emplace_back(DrawCall{current_layer_, DrawPaintData{paint}});
249}
250
252 DrawPaint(DlPaint(color).setBlendMode(mode));
253}
254
256 const SkPoint& p1,
257 const DlPaint& paint) {
258 FML_DCHECK(false);
259}
260
262 const DlPoint& p1,
263 DlScalar on_length,
264 DlScalar off_length,
265 const DlPaint& paint) {
266 FML_DCHECK(false);
267}
268
270 uint32_t,
271 const SkPoint[],
272 const DlPaint&) {
273 FML_DCHECK(false);
274}
275
276void MockCanvas::DrawOval(const SkRect&, const DlPaint&) {
277 FML_DCHECK(false);
278}
279
281 SkScalar radius,
282 const DlPaint& paint) {
283 FML_DCHECK(false);
284}
285
287 SkScalar,
288 SkScalar,
289 bool,
290 const DlPaint&) {
291 FML_DCHECK(false);
292}
293
295 FML_DCHECK(false);
296}
297
299 const SkRect&,
300 const SkRect&,
301 const DlImageSampling,
302 const DlPaint*,
303 SrcRectConstraint constraint) {
304 FML_DCHECK(false);
305}
306
308 const SkIRect& center,
309 const SkRect& dst,
310 DlFilterMode filter,
311 const DlPaint* paint) {
312 FML_DCHECK(false);
313}
314
316 FML_DCHECK(false);
317}
318
320 const SkRSXform[],
321 const SkRect[],
322 const DlColor[],
323 int,
325 const DlImageSampling,
326 const SkRect*,
327 const DlPaint*) {
328 FML_DCHECK(false);
329}
330
332 FML_DCHECK(false);
333}
334
335// --------------------------------------------------------
336// A few ostream operators duplicated from assertions_skia.cc
337// In the short term, there are issues trying to include that file
338// here because it appears in a skia-targeted testing source set
339// and in the long term, DlCanvas, and therefore this file will
340// eventually be cleaned of these SkObject dependencies and these
341// ostream operators will be converted to their DL equivalents.
342static std::ostream& operator<<(std::ostream& os, const SkPoint& r) {
343 return os << "XY: " << r.fX << ", " << r.fY;
344}
345
346static std::ostream& operator<<(std::ostream& os, const SkRect& r) {
347 return os << "LTRB: " << r.fLeft << ", " << r.fTop << ", " << r.fRight << ", "
348 << r.fBottom;
349}
350
351static std::ostream& operator<<(std::ostream& os, const SkRRect& r) {
352 return os << "LTRB: " << r.rect().fLeft << ", " << r.rect().fTop << ", "
353 << r.rect().fRight << ", " << r.rect().fBottom;
354}
355
356static std::ostream& operator<<(std::ostream& os, const SkPath& r) {
357 return os << "Valid: " << r.isValid()
358 << ", FillType: " << static_cast<int>(r.getFillType())
359 << ", Bounds: " << r.getBounds();
360}
361// --------------------------------------------------------
362
363static std::ostream& operator<<(std::ostream& os, const SkM44& m) {
364 os << m.rc(0, 0) << ", " << m.rc(0, 1) << ", " << m.rc(0, 2) << ", "
365 << m.rc(0, 3) << std::endl;
366 os << m.rc(1, 0) << ", " << m.rc(1, 1) << ", " << m.rc(1, 2) << ", "
367 << m.rc(1, 3) << std::endl;
368 os << m.rc(2, 0) << ", " << m.rc(2, 1) << ", " << m.rc(2, 2) << ", "
369 << m.rc(2, 3) << std::endl;
370 os << m.rc(3, 0) << ", " << m.rc(3, 1) << ", " << m.rc(3, 2) << ", "
371 << m.rc(3, 3);
372 return os;
373}
374
376 return a.save_to_layer == b.save_to_layer;
377}
378
379std::ostream& operator<<(std::ostream& os, const MockCanvas::SaveData& data) {
380 return os << data.save_to_layer;
381}
382
385 return a.save_bounds == b.save_bounds && a.restore_paint == b.restore_paint &&
386 Equals(a.backdrop_filter, b.backdrop_filter) &&
387 a.save_to_layer == b.save_to_layer;
388}
389
390std::ostream& operator<<(std::ostream& os,
392 return os << data.save_bounds << " " << data.restore_paint << " "
393 << data.backdrop_filter << " " << data.save_to_layer;
394}
395
397 const MockCanvas::RestoreData& b) {
398 return a.restore_to_layer == b.restore_to_layer;
399}
400
401std::ostream& operator<<(std::ostream& os,
403 return os << data.restore_to_layer;
404}
405
408 return a.matrix == b.matrix;
409}
410
411std::ostream& operator<<(std::ostream& os,
413 return os << data.matrix;
414}
415
418 return a.matrix == b.matrix;
419}
420
421std::ostream& operator<<(std::ostream& os,
423 return os << data.matrix;
424}
425
428 return a.rect == b.rect && a.paint == b.paint;
429}
430
431std::ostream& operator<<(std::ostream& os,
433 return os << data.rect << " " << data.paint;
434}
435
438 return a.path == b.path && a.paint == b.paint;
439}
440
441std::ostream& operator<<(std::ostream& os,
443 return os << data.path << " " << data.paint;
444}
445
448 return a.serialized_text->equals(b.serialized_text.get()) &&
449 a.paint == b.paint && a.offset == b.offset;
450}
451
452std::ostream& operator<<(std::ostream& os,
454 return os << data.serialized_text << " " << data.paint << " " << data.offset;
455}
456
459 return a.image == b.image && a.x == b.x && a.y == b.y &&
460 a.options == b.options && a.paint == b.paint;
461}
462
463std::ostream& operator<<(std::ostream& os,
465 return os << data.image << " " << data.x << " " << data.y << " "
466 << data.options << " " << data.paint;
467}
468
471 return a.image == b.image && a.x == b.x && a.y == b.y &&
472 a.options == b.options;
473}
474
475std::ostream& operator<<(std::ostream& os,
477 return os << data.image << " " << data.x << " " << data.y << " "
478 << data.options;
479}
480
483 return a.display_list->Equals(b.display_list) && a.opacity == b.opacity;
484}
485
486std::ostream& operator<<(std::ostream& os,
488 auto dl = data.display_list;
489 return os << "[" << dl->unique_id() << " " << dl->op_count() << " "
490 << dl->bytes() << "] " << data.opacity;
491}
492
495 return a.path == b.path && a.color == b.color && a.elevation == b.elevation &&
496 a.transparent_occluder == b.transparent_occluder && a.dpr == b.dpr;
497}
498
499std::ostream& operator<<(std::ostream& os,
501 return os << data.path << " " << data.color << " " << data.elevation << " "
502 << data.transparent_occluder << " " << data.dpr;
503}
504
507 return a.rect == b.rect && a.clip_op == b.clip_op && a.style == b.style;
508}
509
510static std::ostream& operator<<(std::ostream& os,
511 const MockCanvas::ClipEdgeStyle& style) {
512 return os << (style == MockCanvas::kSoftClipEdgeStyle ? "kSoftEdges"
513 : "kHardEdges");
514}
515
516std::ostream& operator<<(std::ostream& os,
518 return os << data.rect << " " << data.clip_op << " " << data.style;
519}
520
523 return a.rrect == b.rrect && a.clip_op == b.clip_op && a.style == b.style;
524}
525
526std::ostream& operator<<(std::ostream& os,
528 return os << data.rrect << " " << data.clip_op << " " << data.style;
529}
530
533 return a.path == b.path && a.clip_op == b.clip_op && a.style == b.style;
534}
535
536std::ostream& operator<<(std::ostream& os,
538 return os << data.path << " " << data.clip_op << " " << data.style;
539}
540
541std::ostream& operator<<(std::ostream& os,
543 std::visit([&os](auto& d) { os << d; }, data);
544 return os;
545}
546
548 return a.layer == b.layer && a.data == b.data;
549}
550
551std::ostream& operator<<(std::ostream& os, const MockCanvas::DrawCall& draw) {
552 return os << "[Layer: " << draw.layer << ", Data: " << draw.data << "]";
553}
554
557 return a.paint == b.paint;
558}
559
560std::ostream& operator<<(std::ostream& os,
562 return os << data.paint;
563}
564
565} // namespace testing
566} // namespace flutter
const char * options
static void draw(SkCanvas *canvas, SkRect &target, int x, int y)
Definition: aaclip.cpp:27
static sk_sp< SkData > MakeUninitialized(size_t length)
Definition: SkData.cpp:116
Definition: SkM44.h:150
static SkM44 Translate(SkScalar x, SkScalar y, SkScalar z=0)
Definition: SkM44.h:225
static SkM44 Scale(SkScalar x, SkScalar y, SkScalar z=1)
Definition: SkM44.h:232
static SkMatrix RotateDeg(SkScalar deg)
Definition: SkMatrix.h:104
static SkMatrix MakeAll(SkScalar scaleX, SkScalar skewX, SkScalar transX, SkScalar skewY, SkScalar scaleY, SkScalar transY, SkScalar pers0, SkScalar pers1, SkScalar pers2)
Definition: SkMatrix.h:179
static SkMatrix Skew(SkScalar kx, SkScalar ky)
Definition: SkMatrix.h:124
Definition: SkPath.h:59
SkPathFillType getFillType() const
Definition: SkPath.h:230
const SkRect & getBounds() const
Definition: SkPath.cpp:430
bool isValid() const
Definition: SkPath.cpp:438
const SkRect & rect() const
Definition: SkRRect.h:264
Holds all of the data (both required and optional) for a DisplayList drawVertices call.
Definition: dl_vertices.h:71
SkM44 GetTransformFullPerspective() const override
Definition: mock_canvas.cc:134
void TransformFullPerspective(SkScalar mxx, SkScalar mxy, SkScalar mxz, SkScalar mxt, SkScalar myx, SkScalar myy, SkScalar myz, SkScalar myt, SkScalar mzx, SkScalar mzy, SkScalar mzz, SkScalar mzt, SkScalar mwx, SkScalar mwy, SkScalar mwz, SkScalar mwt) override
Definition: mock_canvas.cc:78
void Translate(SkScalar tx, SkScalar ty) override
Definition: mock_canvas.cc:118
void DrawShadow(const SkPath &path, const DlColor color, const SkScalar elevation, bool transparent_occluder, SkScalar dpr) override
Definition: mock_canvas.cc:179
void SetTransform(const SkMatrix *matrix) override
Definition: mock_canvas.cc:102
void DrawCircle(const SkPoint &center, SkScalar radius, const DlPaint &paint) override
Definition: mock_canvas.cc:280
SkMatrix GetTransform() const override
Definition: mock_canvas.cc:138
void Transform2DAffine(SkScalar mxx, SkScalar mxy, SkScalar mxt, SkScalar myx, SkScalar myy, SkScalar myt) override
Definition: mock_canvas.cc:72
void DrawTextBlob(const sk_sp< SkTextBlob > &blob, SkScalar x, SkScalar y, const DlPaint &paint) override
Definition: mock_canvas.cc:142
SkRect GetLocalClipBounds() const override
Definition: mock_canvas.cc:235
SkRect GetDestinationClipBounds() const override
Definition: mock_canvas.cc:231
SkISize GetBaseLayerSize() const override
Definition: mock_canvas.cc:30
void DrawImageNine(const sk_sp< DlImage > &image, const SkIRect &center, const SkRect &dst, DlFilterMode filter, const DlPaint *paint=nullptr) override
Definition: mock_canvas.cc:307
SkImageInfo GetImageInfo() const override
Definition: mock_canvas.cc:34
void ClipRRect(const SkRRect &rrect, ClipOp clip_op, bool is_aa) override
Definition: mock_canvas.cc:217
void Transform(const SkMatrix *matrix) override
Definition: mock_canvas.cc:91
void DrawPaint(const DlPaint &paint) override
Definition: mock_canvas.cc:247
void DrawLine(const SkPoint &p0, const SkPoint &p1, const DlPaint &paint) override
Definition: mock_canvas.cc:255
void DrawImage(const sk_sp< DlImage > &image, const SkPoint point, DlImageSampling sampling, const DlPaint *paint=nullptr) override
Definition: mock_canvas.cc:189
void Scale(SkScalar sx, SkScalar sy) override
Definition: mock_canvas.cc:122
void Rotate(SkScalar degrees) override
Definition: mock_canvas.cc:126
void ClipPath(const SkPath &path, ClipOp clip_op, bool is_aa) override
Definition: mock_canvas.cc:224
void ClipRect(const SkRect &rect, ClipOp clip_op, bool is_aa) override
Definition: mock_canvas.cc:210
void DrawImageRect(const sk_sp< DlImage > &image, const SkRect &src, const SkRect &dst, DlImageSampling sampling, const DlPaint *paint=nullptr, SrcRectConstraint constraint=SrcRectConstraint::kFast) override
Definition: mock_canvas.cc:298
void DrawColor(DlColor color, DlBlendMode mode) override
Definition: mock_canvas.cc:251
void TransformReset() override
Definition: mock_canvas.cc:113
void DrawVertices(const DlVertices *vertices, DlBlendMode mode, const DlPaint &paint) override
Definition: mock_canvas.cc:315
std::variant< SaveData, SaveLayerData, RestoreData, ConcatMatrixData, SetMatrixData, DrawRectData, DrawPathData, DrawTextData, DrawImageDataNoPaint, DrawImageData, DrawDisplayListData, DrawShadowData, ClipRectData, ClipRRectData, ClipPathData, DrawPaintData > DrawCallData
Definition: mock_canvas.h:150
void DrawRect(const SkRect &rect, const DlPaint &paint) override
Definition: mock_canvas.cc:171
void DrawPath(const SkPath &path, const DlPaint &paint) override
Definition: mock_canvas.cc:175
void DrawRRect(const SkRRect &rrect, const DlPaint &paint) override
Definition: mock_canvas.cc:294
void DrawPoints(PointMode mode, uint32_t count, const SkPoint pts[], const DlPaint &paint) override
Definition: mock_canvas.cc:269
void DrawDisplayList(const sk_sp< DisplayList > display_list, SkScalar opacity) override
Definition: mock_canvas.cc:204
void DrawAtlas(const sk_sp< DlImage > &atlas, const SkRSXform xform[], const SkRect tex[], const DlColor colors[], int count, DlBlendMode mode, DlImageSampling sampling, const SkRect *cullRect, const DlPaint *paint=nullptr) override
Definition: mock_canvas.cc:319
void DrawTextFrame(const std::shared_ptr< impeller::TextFrame > &text_frame, SkScalar x, SkScalar y, const DlPaint &paint) override
Definition: mock_canvas.cc:163
void SaveLayer(const SkRect *bounds, const DlPaint *paint=nullptr, const DlImageFilter *backdrop=nullptr) override
Definition: mock_canvas.cc:46
void Skew(SkScalar sx, SkScalar sy) override
Definition: mock_canvas.cc:130
void DrawDRRect(const SkRRect &outer, const SkRRect &inner, const DlPaint &paint) override
Definition: mock_canvas.cc:243
bool QuickReject(const SkRect &bounds) const override
Definition: mock_canvas.cc:239
void DrawOval(const SkRect &bounds, const DlPaint &paint) override
Definition: mock_canvas.cc:276
void DrawDashedLine(const DlPoint &p0, const DlPoint &p1, DlScalar on_length, DlScalar off_length, const DlPaint &paint) override
Definition: mock_canvas.cc:261
void DrawArc(const SkRect &bounds, SkScalar start, SkScalar sweep, bool useCenter, const DlPaint &paint) override
Definition: mock_canvas.cc:286
const Paint & paint
Definition: color_source.cc:38
DlColor color
VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE auto & d
Definition: main.cc:19
float SkScalar
Definition: extension.cpp:12
static bool b
struct MyStruct a[10]
#define FML_DCHECK(condition)
Definition: logging.h:103
std::u16string text
double y
double x
unsigned useCenter Optional< SkMatrix > matrix
Definition: SkRecords.h:258
Optional< SkRect > bounds
Definition: SkRecords.h:189
sk_sp< const SkImage > image
Definition: SkRecords.h:269
sk_sp< const SkImageFilter > backdrop
Definition: SkRecords.h:191
SkRRect rrect
Definition: SkRecords.h:232
sk_sp< SkBlender > blender SkRect rect
Definition: SkRecords.h:350
constexpr SkISize kSize
Definition: mock_canvas.cc:17
static std::ostream & operator<<(std::ostream &os, const SkPoint &r)
Definition: mock_canvas.cc:342
bool operator==(const CGRect &lhs, const CGRect &rhs)
impeller::Scalar DlScalar
bool Equals(const T *a, const T *b)
Definition: dl_comparable.h:19
impeller::Matrix DlMatrix
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
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 keep the shell running after the Dart script has completed enable serial On low power devices with low core running concurrent GC tasks on threads can cause them to contend with the UI thread which could potentially lead to jank This option turns off all concurrent GC activities domain network JSON encoded network policy per domain This overrides the DisallowInsecureConnections switch Embedder can specify whether to allow or disallow insecure connections at a domain level old gen heap size
Definition: switches.h:259
dst
Definition: cp.py:12
flutter::DlPaint DlPaint
int32_t height
int32_t width
Definition: SkRect.h:32
Definition: SkSize.h:16
static constexpr SkISize Make(int32_t w, int32_t h)
Definition: SkSize.h:20
static SkImageInfo MakeUnknown()
Definition: SkImageInfo.h:357
float fX
x-axis value
Definition: SkPoint_impl.h:164
static constexpr SkPoint Make(float x, float y)
Definition: SkPoint_impl.h:173
float fY
y-axis value
Definition: SkPoint_impl.h:165
SkScalar fBottom
larger y-axis bounds
Definition: extension.cpp:17
SkScalar fLeft
smaller x-axis bounds
Definition: extension.cpp:14
SkScalar fRight
larger x-axis bounds
Definition: extension.cpp:16
SkScalar fTop
smaller y-axis bounds
Definition: extension.cpp:15
static constexpr TRect MakeXYWH(Type x, Type y, Type width, Type height)
Definition: rect.h:136