27 <<
"not identical to ..." << std::endl
36 <<
"DisplayLists are both the same:" << std::endl
73 os << std::setprecision(std::numeric_limits<long double>::digits10 + 1);
74 os <<
"DisplayList {" << std::endl;
76 os <<
"}" << std::endl;
110#define DLT_OSTREAM_CASE(enum_name, value_name) \
111 case enum_name::k##value_name: return os << #enum_name "::k" #value_name
116#define DLT_OP_TYPE_CASE(V) DLT_OSTREAM_CASE(DisplayListOpType, V);
120#undef DLT_OP_TYPE_CASE
123 return os <<
"DisplayListOpType::???";
140 return os <<
"DisplayListOpCategory::???";
151#undef DLT_OSTREAM_CASE
154 return os <<
"SaveLayerOptions("
165static std::ostream&
operator<<(std::ostream& os,
const SkRect& rect) {
166 return os <<
"SkRect("
167 <<
"left: " << rect.fLeft <<
", "
168 <<
"top: " << rect.fTop <<
", "
169 <<
"right: " << rect.fRight <<
", "
170 <<
"bottom: " << rect.fBottom
175 return os <<
"DlPath("
176 <<
"bounds: " << path.GetBounds()
183 dispatcher.
out(path);
195 switch (constraint) {
197 return os <<
"SrcRectConstraint::kFast";
199 return os <<
"SrcRectConstraint::kStrict";
205 case DlStrokeCap::kButt:
return os <<
"Cap::kButt";
206 case DlStrokeCap::kRound:
return os <<
"Cap::kRound";
207 case DlStrokeCap::kSquare:
return os <<
"Cap::kSquare";
213 case DlStrokeJoin::kMiter:
return os <<
"Join::kMiter";
214 case DlStrokeJoin::kRound:
return os <<
"Join::kRound";
215 case DlStrokeJoin::kBevel:
return os <<
"Join::kBevel";
221 case DlDrawStyle::kFill:
return os <<
"Style::kFill";
222 case DlDrawStyle::kStroke:
return os <<
"Style::kStroke";
223 case DlDrawStyle::kStrokeAndFill:
return os <<
"Style::kStrokeAnFill";
229 case DlBlurStyle::kNormal:
return os <<
"BlurStyle::kNormal";
230 case DlBlurStyle::kSolid:
return os <<
"BlurStyle::kSolid";
231 case DlBlurStyle::kOuter:
return os <<
"BlurStyle::kOuter";
232 case DlBlurStyle::kInner:
return os <<
"BlurStyle::kInner";
246 case DlFilterMode::kNearest:
return os <<
"FilterMode::kNearest";
247 case DlFilterMode::kLinear:
return os <<
"FilterMode::kLinear";
249 default:
return os <<
"FilterMode::????";
254 const char* color_space;
257 color_space =
"srgb";
260 color_space =
"srgb_xr";
266 return os <<
"DlColor(" <<
276 case DlImageSampling::kNearestNeighbor: {
277 return os <<
"NearestSampling";
279 case DlImageSampling::kLinear: {
280 return os <<
"LinearSampling";
282 case DlImageSampling::kMipmapLinear: {
283 return os <<
"MipmapSampling";
285 case DlImageSampling::kCubic: {
286 return os <<
"CubicSampling";
292 auto blob =
text->GetTextBlob();
293 if (blob !=
nullptr) {
294 return os <<
"&SkTextBlob(ID: " << blob->uniqueID() <<
", " << blob->bounds() <<
")";
296 auto frame =
text->GetTextFrame();
297 if (frame !=
nullptr) {
298 auto bounds = frame->GetBounds();
299 return os <<
"&TextFrame("
300 << bounds.GetLeft() <<
", " << bounds.GetTop() <<
" => "
301 << bounds.GetRight() <<
", " << bounds.GetBottom() <<
")";
303 return os <<
"no text";
308 case DlVertexMode::kTriangles:
return os <<
"VertexMode::kTriangles";
309 case DlVertexMode::kTriangleStrip:
return os <<
"VertexMode::kTriangleStrip";
310 case DlVertexMode::kTriangleFan:
return os <<
"VertexMode::kTriangleFan";
312 default:
return os <<
"VertexMode::????";
318 case DlTileMode::kClamp:
return os <<
"TileMode::kClamp";
319 case DlTileMode::kRepeat:
return os <<
"TileMode::kRepeat";
320 case DlTileMode::kMirror:
return os <<
"TileMode::kMirror";
321 case DlTileMode::kDecal:
return os <<
"TileMode::kDecal";
323 default:
return os <<
"TileMode::????";
328 if (
image ==
nullptr) {
329 return os <<
"null image";
331 os <<
"&DlImage(" <<
image->width() <<
" x " <<
image->height() <<
", ";
332 if (
image->skia_image()) {
333 os <<
"skia(" <<
image->skia_image().get() <<
"), ";
335 if (
image->impeller_texture()) {
336 os <<
"impeller(" <<
image->impeller_texture().get() <<
"), ";
338 return os <<
"isTextureBacked: " <<
image->isTextureBacked() <<
")";
357std::ostream& DisplayListStreamDispatcher::startl() {
358 for (
int i = 0;
i < cur_indent_;
i++) {
365std::ostream& DisplayListStreamDispatcher::out_array(std::string
name,
368 if (array ==
nullptr || count < 0) {
369 return os_ <<
"no " <<
name;
371 os_ <<
name <<
"[" << count <<
"] = [" << std::endl;
374 for (
int i = 0;
i < count;
i++) {
375 startl() << array[
i] <<
"," << std::endl;
384 startl() <<
"setAntiAlias(" << aa <<
");" << std::endl;
387 startl() <<
"setStyle(" << style <<
");" << std::endl;
390 startl() <<
"setColor(" << color <<
");" << std::endl;
393 startl() <<
"setStrokeWidth(" <<
width <<
");" << std::endl;
396 startl() <<
"setStrokeMiter(" << limit <<
");" << std::endl;
399 startl() <<
"setStrokeCap(" << cap <<
");" << std::endl;
402 startl() <<
"setStrokeJoin(" << join <<
");" << std::endl;
405 if (source ==
nullptr) {
406 startl() <<
"setColorSource(no ColorSource);" << std::endl;
409 startl() <<
"setColorSource(";
410 switch (source->
type()) {
414 os_ <<
"DlImageColorSource(image: " << image_src->
image()
425 os_ <<
"DlLinearGradientSource("
427 <<
", end: " << linear_src->
end_point() <<
", ";
428 out_array(
"colors", linear_src->
stop_count(), linear_src->
colors()) <<
", ";
429 out_array(
"stops", linear_src->
stop_count(), linear_src->
stops()) <<
", "
436 os_ <<
"DlRadialGradientSource("
437 <<
"center: " << radial_src->
center()
438 <<
", radius: " << radial_src->
radius() <<
", ";
439 out_array(
"colors", radial_src->
stop_count(), radial_src->
colors()) <<
", ";
440 out_array(
"stops", radial_src->
stop_count(), radial_src->
stops()) <<
", "
447 os_ <<
"DlConicalGradientColorSource("
450 <<
", end center: " << conical_src->
end_center()
451 <<
", end radius: " << conical_src->
end_radius() <<
", ";
452 out_array(
"colors", conical_src->
stop_count(), conical_src->
colors()) <<
", ";
453 out_array(
"stops", conical_src->
stop_count(), conical_src->
stops()) <<
", "
460 os_ <<
"DlSweepGradientColorSource("
461 <<
"center: " << sweep_src->
center()
462 <<
", start: " << sweep_src->
start() <<
", "
463 <<
", end: " << sweep_src->
end() <<
", ";
465 out_array(
"stops", sweep_src->
stop_count(), sweep_src->
stops()) <<
", "
470 os_ <<
"?DlUnknownColorSource?()";
473 os_ <<
");" << std::endl;
476 switch (filter.
type()) {
480 os_ <<
"DlBlendColorFilter(" << blend->
color() <<
", "
481 <<
static_cast<int>(blend->
mode()) <<
")";
489 os_ <<
"DlMatrixColorFilter(matrix[20] = [" << std::endl;
491 for (
int i = 0;
i < 20;
i += 5) {
492 startl() << values[
i] <<
", "
493 << values[
i+1] <<
", "
494 << values[
i+2] <<
", "
495 << values[
i+3] <<
", "
496 << values[
i+4] <<
","
504 os_ <<
"DlSrgbToLinearGammaColorFilter()";
508 os_ <<
"DlLinearToSrgbGammaColorFilter()";
512 os_ <<
"?DlUnknownColorFilter?()";
517 if (filter ==
nullptr) {
518 os_ <<
"no ColorFilter";
525 startl() <<
"setColorFilter(";
527 os_ <<
");" << std::endl;
530 startl() <<
"setInvertColors(" << invert <<
");" << std::endl;
533 startl() <<
"setBlendMode(" <<
mode <<
");" << std::endl;
536 if (filter ==
nullptr) {
537 startl() <<
"setMaskFilter(no MaskFilter);" << std::endl;
540 startl() <<
"setMaskFilter(";
541 switch (filter->
type()) {
545 os_ <<
"DlMaskFilter(" << blur->
style() <<
", " << blur->
sigma() <<
")";
549 os_ <<
"?DlUnknownMaskFilter?()";
552 os_ <<
");" << std::endl;
555 switch (filter.
type()) {
559 os_ <<
"DlBlurImageFilter(" << blur->
sigma_x() <<
", "
567 os_ <<
"DlDilateImageFilter(" << dilate->
radius_x() <<
", " << dilate->
radius_y() <<
")";
573 os_ <<
"DlErodeImageFilter(" << erode->
radius_x() <<
", " << erode->
radius_y() <<
")";
579 os_ <<
"DlMatrixImageFilter(" << matrix->
matrix() <<
", " << matrix->
sampling() <<
")";
585 os_ <<
"DlComposeImageFilter(" << std::endl;
587 startl() <<
"outer: ";
590 os_ <<
"," << std::endl;
592 startl() <<
"inner: ";
604 os_ <<
"DlColorFilterImageFilter(";
612 os_ <<
"DlLocalMatrixImageFilter(" << local_matrix->
matrix();
613 os_ <<
"," << std::endl;
615 startl() <<
"filter: ";
625 os_ <<
"DlRuntimeEffectImageFilter(";
626 os_ << runtime_effect->
samplers().size() <<
" samplers, ";
627 os_ << runtime_effect->
uniform_data()->size() <<
" uniform bytes)";
633 if (filter ==
nullptr) {
634 os_ <<
"no ImageFilter";
642DisplayListStreamDispatcher::DlPathStreamer::~DlPathStreamer() {
643 if (done_with_info_) {
644 dispatcher_.outdent(2);
645 dispatcher_.startl() <<
"}" << std::endl;
648void DisplayListStreamDispatcher::DlPathStreamer::MoveTo(
const DlPoint& p2,
649 bool will_be_closed) {
650 if (!done_with_info_) {
651 done_with_info_ =
true;
652 dispatcher_.startl() <<
"{" << std::endl;
653 dispatcher_.indent(2);
655 dispatcher_.startl() <<
"MoveTo(" << p2 <<
", " << will_be_closed <<
"),"
658void DisplayListStreamDispatcher::DlPathStreamer::LineTo(
const DlPoint& p2) {
660 dispatcher_.startl() <<
"LineTo(" << p2 <<
")," << std::endl;
662void DisplayListStreamDispatcher::DlPathStreamer::QuadTo(
const DlPoint& cp,
665 dispatcher_.startl() <<
"QuadTo(" << cp <<
", " << p2 <<
")," << std::endl;
667bool DisplayListStreamDispatcher::DlPathStreamer::ConicTo(
const DlPoint& cp,
671 dispatcher_.startl() <<
"ConicTo(" << cp <<
", " << p2 <<
", " << weight
672 <<
")," << std::endl;
675void DisplayListStreamDispatcher::DlPathStreamer::CubicTo(
const DlPoint& cp1,
679 dispatcher_.startl() <<
"CubicTo(" << cp1 <<
", " << cp2 <<
", " << p2 <<
", "
680 << p2 <<
")," << std::endl;
682void DisplayListStreamDispatcher::DlPathStreamer::Close() {
684 dispatcher_.startl() <<
"Close()," << std::endl;
687 os_ <<
"DlPath(" <<
path.path.GetFillType() <<
", ";
688 if (
path.path.IsConvex()) {
691 os_ <<
path.path.GetBounds() <<
"," << std::endl;
695 path.path.Dispatch(streamer);
701 startl() <<
"setImageFilter(";
705 os_ <<
");" << std::endl;
708 startl() <<
"save();" << std::endl;
709 startl() <<
"{" << std::endl;
715 std::optional<int64_t> backdrop_id) {
716 startl() <<
"saveLayer(" << bounds <<
", " << options;
718 os_ <<
"," << std::endl;
720 if (backdrop_id.has_value()) {
721 startl() <<
"backdrop: " << backdrop_id.value() <<
", ";
723 startl() <<
"backdrop: (no id), ";
728 os_ <<
", no backdrop";
730 os_ <<
");" << std::endl;
731 startl() <<
"{" << std::endl;
736 startl() <<
"}" << std::endl;
737 startl() <<
"restore();" << std::endl;
741 startl() <<
"translate(" << tx <<
", " << ty <<
");" << std::endl;
744 startl() <<
"scale(" << sx <<
", " << sy <<
");" << std::endl;
747 startl() <<
"rotate(" << degrees <<
");" << std::endl;
750 startl() <<
"skew(" << sx <<
", " << sy <<
");" << std::endl;
755 startl() <<
"transform2DAffine(" << std::endl;
759 <<
"[" << mxx <<
", " << mxy <<
", " << mxt <<
"], "
762 <<
"[" << myx <<
", " << myy <<
", " << myt <<
"], "
766 startl() <<
");" << std::endl;
773 startl() <<
"transformFullPerspective(" << std::endl;
777 <<
"[" << mxx <<
", " << mxy <<
", " << mxz <<
", " << mxt <<
"], "
780 <<
"[" << myx <<
", " << myy <<
", " << myz <<
", " << myt <<
"], "
783 <<
"[" << mzx <<
", " << mzy <<
", " << mzz <<
", " << mzt <<
"], "
786 <<
"[" << mwx <<
", " << mwy <<
", " << mwz <<
", " << mwt <<
"]"
790 startl() <<
");" << std::endl;
793 startl() <<
"transformReset();" << std::endl;
798 startl() <<
"clipRect("
802 <<
");" << std::endl;
806 startl() <<
"clipOval("
810 <<
");" << std::endl;
815 startl() <<
"clipRRect("
819 <<
");" << std::endl;
824 startl() <<
"clipRoundSuperellipse("
828 <<
");" << std::endl;
832 startl() <<
"clipPath("
836 <<
");" << std::endl;
840 startl() <<
"drawColor("
843 <<
");" << std::endl;
846 startl() <<
"drawPaint();" << std::endl;
850 startl() <<
"drawLine(" << p0 <<
", " << p1 <<
");" << std::endl;
856 startl() <<
"drawDashedLine("
861 <<
");" << std::endl;
864 startl() <<
"drawRect(" << rect <<
");" << std::endl;
867 startl() <<
"drawOval(" << bounds <<
");" << std::endl;
871 startl() <<
"drawCircle(" << center <<
", " << radius <<
");" << std::endl;
874 startl() <<
"drawRRect(" << rrect <<
");" << std::endl;
878 startl() <<
"drawDRRect(outer: " << outer <<
", " << std::endl;
879 startl() <<
" inner: " << inner <<
");" << std::endl;
882 startl() <<
"drawRSuperellipse(" << rse <<
");" << std::endl;
885 startl() <<
"drawPath(" <<
path <<
");" << std::endl;
891 startl() <<
"drawArc("
892 << oval_bounds <<
", "
893 << start_degrees <<
", "
894 << sweep_degrees <<
", "
896 <<
");" << std::endl;
901 startl() <<
"drawPoints(" <<
mode <<
", ";
902 out_array(
"points", count,
points)
903 <<
");" << std::endl;
907 startl() <<
"drawVertices("
909 << vertices->mode() <<
", ";
910 out_array(
"vertices", vertices->vertex_count(), vertices->vertex_data()) <<
", ";
911 out_array(
"texture_coords", vertices->vertex_count(), vertices->texture_coordinate_data()) <<
", ";
912 out_array(
"colors", vertices->vertex_count(), vertices->colors()) <<
", ";
913 out_array(
"indices", vertices->index_count(), vertices->indices())
914 <<
"), " <<
mode <<
");" << std::endl;
919 bool render_with_attributes) {
920 startl() <<
"drawImage(" <<
image.get() <<
"," << std::endl;
921 startl() <<
" " << point <<
", "
923 <<
"with attributes: " << render_with_attributes
924 <<
");" << std::endl;
930 bool render_with_attributes,
932 startl() <<
"drawImageRect(" <<
image.get() <<
"," << std::endl;
933 startl() <<
" src: " << src <<
"," << std::endl;
934 startl() <<
" dst: " << dst <<
"," << std::endl;
935 startl() <<
" " << sampling <<
", "
936 <<
"with attributes: " << render_with_attributes <<
", "
938 <<
");" << std::endl;
944 bool render_with_attributes) {
945 startl() <<
"drawImageNine(" <<
image.get() <<
"," << std::endl;
946 startl() <<
" center: " << center <<
"," << std::endl;
947 startl() <<
" dst: " << dst <<
"," << std::endl;
948 startl() <<
" " << filter <<
", "
949 <<
"with attributes: " << render_with_attributes
950 <<
");" << std::endl;
960 bool render_with_attributes) {
961 startl() <<
"drawAtlas(" << atlas.get() <<
", ";
962 out_array(
"xforms", count, xform) <<
", ";
963 out_array(
"tex_coords", count, tex) <<
", ";
964 out_array(
"colors", count, colors) <<
", "
965 <<
mode <<
", " << sampling <<
", cull: " << cull_rect <<
", "
966 <<
"with attributes: " << render_with_attributes
967 <<
");" << std::endl;
970 const sk_sp<DisplayList> display_list,
DlScalar opacity) {
971 startl() <<
"drawDisplayList("
972 <<
"ID: " << display_list->unique_id() <<
", "
973 <<
"bounds: " << display_list->GetBounds() <<
", "
974 <<
"opacity: " << opacity
975 <<
");" << std::endl;
980 startl() <<
"drawText("
981 <<
text.get() <<
", "
982 <<
x <<
", " <<
y <<
");" << std::endl;
988 bool transparent_occluder,
990 startl() <<
"drawShadow("
994 << transparent_occluder <<
", "
996 <<
");" << std::endl;
bool Equals(const DisplayList *other) const
void Dispatch(DlOpReceiver &ctx) const
virtual T type() const =0
DlTileMode tile_mode() const
DlBlurStyle style() const
Developer-facing API for rendering anything within the engine.
virtual const DlBlendColorFilter * asBlend() const
virtual const DlMatrixColorFilter * asMatrix() const
const std::shared_ptr< const DlColorFilter > color_filter() const
virtual const DlRadialGradientColorSource * asRadialGradient() const
virtual const DlLinearGradientColorSource * asLinearGradient() const
virtual const DlImageColorSource * asImage() const
virtual const DlSweepGradientColorSource * asSweepGradient() const
virtual const DlConicalGradientColorSource * asConicalGradient() const
std::shared_ptr< DlImageFilter > inner() const
std::shared_ptr< DlImageFilter > outer() const
DlScalar start_radius() const
DlPoint start_center() const
DlScalar end_radius() const
DlPoint end_center() const
DlScalar radius_x() const
DlScalar radius_y() const
DlScalar radius_y() const
DlScalar radius_x() const
DlTileMode tile_mode() const
const DlColor * colors() const
const float * stops() const
DlImageSampling sampling() const
DlTileMode vertical_tile_mode() const
DlTileMode horizontal_tile_mode() const
sk_sp< const DlImage > image() const
virtual const DlLocalMatrixImageFilter * asLocalMatrix() const
virtual const DlColorFilterImageFilter * asColorFilter() const
virtual const DlRuntimeEffectImageFilter * asRuntimeEffectFilter() const
virtual const DlMatrixImageFilter * asMatrix() const
virtual const DlComposeImageFilter * asCompose() const
virtual const DlBlurImageFilter * asBlur() const
virtual const DlDilateImageFilter * asDilate() const
virtual const DlErodeImageFilter * asErode() const
Represents an image whose allocation is (usually) resident on device memory.
const DlPoint & end_point() const
const DlPoint & start_point() const
const DlMatrix & matrix() const
const std::shared_ptr< DlImageFilter > image_filter() const
virtual const DlBlurMaskFilter * asBlur() const
void get_matrix(float matrix[20]) const
const DlMatrix * matrix_ptr() const
DlImageSampling sampling() const
const DlMatrix & matrix() const
DlStrokeCap getStrokeCap() const
DlBlendMode getBlendMode() const
float getStrokeMiter() const
DlStrokeJoin getStrokeJoin() const
const std::shared_ptr< const DlMaskFilter > & getMaskFilter() const
DlDrawStyle getDrawStyle() const
const std::shared_ptr< const DlColorSource > & getColorSource() const
const std::shared_ptr< DlImageFilter > & getImageFilter() const
float getStrokeWidth() const
const std::shared_ptr< const DlColorFilter > & getColorFilter() const
bool isInvertColors() const
const std::shared_ptr< std::vector< uint8_t > > & uniform_data() const
const std::vector< std::shared_ptr< DlColorSource > > & samplers() const
bool renders_with_attributes() const
bool content_is_unbounded() const
bool contains_backdrop_filter() const
bool can_distribute_opacity() const
void setInvertColors(bool invert) override
void drawVertices(const std::shared_ptr< DlVertices > &vertices, DlBlendMode mode) override
void drawShadow(const DlPath &path, const DlColor color, const DlScalar elevation, bool transparent_occluder, DlScalar dpr) override
void drawImageNine(const sk_sp< DlImage > image, const DlIRect ¢er, const DlRect &dst, DlFilterMode filter, bool render_with_attributes) override
void clipRect(const DlRect &rect, DlClipOp clip_op, bool is_aa) override
void drawCircle(const DlPoint ¢er, DlScalar radius) override
void setImageFilter(const DlImageFilter *filter) override
void setStrokeCap(DlStrokeCap cap) override
void drawArc(const DlRect &oval_bounds, DlScalar start_degrees, DlScalar sweep_degrees, bool use_center) override
void rotate(DlScalar degrees) override
void transform2DAffine(DlScalar mxx, DlScalar mxy, DlScalar mxt, DlScalar myx, DlScalar myy, DlScalar myt) override
void drawText(const std::shared_ptr< DlText > &text, DlScalar x, DlScalar y) override
void drawDisplayList(const sk_sp< DisplayList > display_list, DlScalar opacity) override
void out(const DlColorFilter &filter)
void setAntiAlias(bool aa) override
void drawPoints(DlPointMode mode, uint32_t count, const DlPoint points[]) override
void drawImageRect(const sk_sp< DlImage > image, const DlRect &src, const DlRect &dst, DlImageSampling sampling, bool render_with_attributes, DlSrcRectConstraint constraint) override
void drawImage(const sk_sp< DlImage > image, const DlPoint &point, DlImageSampling sampling, bool render_with_attributes) override
void setMaskFilter(const DlMaskFilter *filter) override
void clipPath(const DlPath &path, DlClipOp clip_op, bool is_aa) override
void clipRoundSuperellipse(const DlRoundSuperellipse &rse, DlClipOp clip_op, bool is_aa) override
void clipRoundRect(const DlRoundRect &rrect, DlClipOp clip_op, bool is_aa) override
void drawAtlas(const sk_sp< DlImage > atlas, const DlRSTransform xform[], const DlRect tex[], const DlColor colors[], int count, DlBlendMode mode, DlImageSampling sampling, const DlRect *cull_rect, bool render_with_attributes) override
void drawDashedLine(const DlPoint &p0, const DlPoint &p1, DlScalar on_length, DlScalar off_length) override
void drawRoundRect(const DlRoundRect &rrect) override
void clipOval(const DlRect &bounds, DlClipOp clip_op, bool is_aa) override
void setStrokeJoin(DlStrokeJoin join) override
void setStrokeWidth(DlScalar width) override
void setStrokeMiter(DlScalar limit) override
void transformFullPerspective(DlScalar mxx, DlScalar mxy, DlScalar mxz, DlScalar mxt, DlScalar myx, DlScalar myy, DlScalar myz, DlScalar myt, DlScalar mzx, DlScalar mzy, DlScalar mzz, DlScalar mzt, DlScalar mwx, DlScalar mwy, DlScalar mwz, DlScalar mwt) override
void setColorFilter(const DlColorFilter *filter) override
void drawPath(const DlPath &path) override
friend class DlPathStreamer
void drawDiffRoundRect(const DlRoundRect &outer, const DlRoundRect &inner) override
void drawOval(const DlRect &bounds) override
void setBlendMode(DlBlendMode mode) override
void setDrawStyle(DlDrawStyle style) override
void drawRect(const DlRect &rect) override
void saveLayer(const DlRect &bounds, const SaveLayerOptions options, const DlImageFilter *backdrop, std::optional< int64_t > backdrop_id) override
void transformReset() override
void drawPaint() override
void skew(DlScalar sx, DlScalar sy) override
void drawRoundSuperellipse(const DlRoundSuperellipse &rse) override
void drawLine(const DlPoint &p0, const DlPoint &p1) override
void drawColor(DlColor color, DlBlendMode mode) override
void setColor(DlColor color) override
void translate(DlScalar tx, DlScalar ty) override
void scale(DlScalar sx, DlScalar sy) override
void setColorSource(const DlColorSource *source) override
#define FOR_EACH_DISPLAY_LIST_OP(V)
#define DLT_OSTREAM_CASE(enum_name, value_name)
#define DLT_OP_TYPE_CASE(V)
FlutterVulkanImage * image
#define FML_LOG(severity)
#define FML_DCHECK(condition)
bool DisplayListsNE_Verbose(const DisplayList *a, const DisplayList *b)
bool DisplayListsEQ_Verbose(const DisplayList *a, const DisplayList *b)
impeller::Scalar DlScalar
@ kLines
draw each separate pair of points as a line segment
@ kPolygon
draw each pair of overlapping points as a line segment
@ kPoints
draw each point separately
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
DlVertexMode
Defines the way in which the vertices of a DlVertices object are separated into triangles into which ...
it will be possible to load the file into Perfetto s trace viewer use test Running tests that layout and measure text will not yield consistent results across various platforms Enabling this option will make font resolution default to the Ahem test font on all 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
impeller::FillType DlPathFillType
impeller::BlendMode DlBlendMode
flutter::testing::DisplayListStreamDispatcher DisplayListStreamDispatcher
std::ostream & operator<<(std::ostream &out, const impeller::Arc &a)
constexpr DlColorSpace getColorSpace() const
constexpr DlScalar getRedF() const
constexpr DlScalar getAlphaF() const
constexpr DlScalar getBlueF() const
constexpr DlScalar getGreenF() const
std::vector< Point > points