Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
flutter::DisplayListBuilder Class Referencefinal

#include <dl_builder.h>

Inheritance diagram for flutter::DisplayListBuilder:
flutter::DlCanvas flutter::DlOpReceiver flutter::DisplayListOpFlags

Public Member Functions

 DisplayListBuilder (bool prepare_rtree)
 
 DisplayListBuilder (const DlRect &cull_rect=kMaxCullRect, bool prepare_rtree=false)
 
 DisplayListBuilder (DlScalar width, DlScalar height)
 
 ~DisplayListBuilder ()
 
DlISize GetBaseLayerDimensions () const override
 
SkImageInfo GetImageInfo () const override
 
void Save () override
 
void SaveLayer (const std::optional< DlRect > &bounds, const DlPaint *paint=nullptr, const DlImageFilter *backdrop=nullptr, std::optional< int64_t > backdrop_id=std::nullopt) override
 
void Restore () override
 
int GetSaveCount () const override
 
void RestoreToCount (int restore_count) override
 
void Translate (DlScalar tx, DlScalar ty) override
 
void Scale (DlScalar sx, DlScalar sy) override
 
void Rotate (DlScalar degrees) override
 
void Skew (DlScalar sx, DlScalar sy) override
 
void Transform2DAffine (DlScalar mxx, DlScalar mxy, DlScalar mxt, DlScalar myx, DlScalar myy, DlScalar myt) 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 TransformReset () override
 
void Transform (const DlMatrix &matrix) override
 
void SetTransform (const DlMatrix &matrix) override
 
DlMatrix GetMatrix () const override
 
void ClipRect (const DlRect &rect, DlClipOp clip_op=DlClipOp::kIntersect, bool is_aa=false) override
 
void ClipOval (const DlRect &bounds, DlClipOp clip_op=DlClipOp::kIntersect, bool is_aa=false) override
 
void ClipRoundRect (const DlRoundRect &rrect, DlClipOp clip_op=DlClipOp::kIntersect, bool is_aa=false) override
 
void ClipRoundSuperellipse (const DlRoundSuperellipse &rse, DlClipOp clip_op=DlClipOp::kIntersect, bool is_aa=false) override
 
void ClipPath (const DlPath &path, DlClipOp clip_op=DlClipOp::kIntersect, bool is_aa=false) override
 
DlRect GetDestinationClipCoverage () const override
 
DlRect GetLocalClipCoverage () const override
 
bool QuickReject (const DlRect &bounds) const override
 
void DrawPaint (const DlPaint &paint) override
 
void DrawColor (DlColor color, DlBlendMode mode) override
 
void DrawLine (const DlPoint &p0, const DlPoint &p1, const DlPaint &paint) override
 
void DrawDashedLine (const DlPoint &p0, const DlPoint &p1, DlScalar on_length, DlScalar off_length, const DlPaint &paint) override
 
void DrawRect (const DlRect &rect, const DlPaint &paint) override
 
void DrawOval (const DlRect &bounds, const DlPaint &paint) override
 
void DrawCircle (const DlPoint &center, DlScalar radius, const DlPaint &paint) override
 
void DrawRoundRect (const DlRoundRect &rrect, const DlPaint &paint) override
 
void DrawDiffRoundRect (const DlRoundRect &outer, const DlRoundRect &inner, const DlPaint &paint) override
 
void DrawRoundSuperellipse (const DlRoundSuperellipse &rse, const DlPaint &paint) override
 
void DrawPath (const DlPath &path, const DlPaint &paint) override
 
void DrawArc (const DlRect &bounds, DlScalar start, DlScalar sweep, bool useCenter, const DlPaint &paint) override
 
void DrawPoints (DlPointMode mode, uint32_t count, const DlPoint pts[], const DlPaint &paint) override
 
void DrawVertices (const std::shared_ptr< DlVertices > &vertices, DlBlendMode mode, const DlPaint &paint) override
 
void DrawImage (const sk_sp< DlImage > &image, const DlPoint &point, DlImageSampling sampling, const DlPaint *paint=nullptr) override
 
void DrawImageRect (const sk_sp< DlImage > &image, const DlRect &src, const DlRect &dst, DlImageSampling sampling, const DlPaint *paint=nullptr, DlSrcRectConstraint constraint=DlSrcRectConstraint::kFast) override
 
void DrawImageNine (const sk_sp< DlImage > &image, const DlIRect &center, const DlRect &dst, DlFilterMode filter, const DlPaint *paint=nullptr) 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 *cullRect, const DlPaint *paint=nullptr) override
 
void DrawDisplayList (const sk_sp< DisplayList > display_list, DlScalar opacity=SK_Scalar1) override
 
void DrawText (const std::shared_ptr< DlText > &text, DlScalar x, DlScalar y, const DlPaint &paint) override
 
void DrawShadow (const DlPath &path, const DlColor color, const DlScalar elevation, bool transparent_occluder, DlScalar dpr) override
 Draws the shadow of the given |path| rendered in the provided |color| (which is only consulted for its opacity) as would be produced by a directional light source uniformly shining in the device space direction {0, -1, 1} against a backdrop which is |elevation * dpr| device coordinates below the |path| in the Z direction.
 
void Flush () override
 
sk_sp< DisplayListBuild ()
 
virtual void DrawImageRect (const sk_sp< DlImage > &image, const DlRect &src, const DlRect &dst, DlImageSampling sampling, const DlPaint *paint=nullptr, DlSrcRectConstraint constraint=DlSrcRectConstraint::kFast)=0
 
virtual void DrawImageRect (const sk_sp< DlImage > &image, const DlIRect &src, const DlRect &dst, DlImageSampling sampling, const DlPaint *paint=nullptr, DlSrcRectConstraint constraint=DlSrcRectConstraint::kFast)
 
void DrawImageRect (const sk_sp< DlImage > &image, const DlRect &dst, DlImageSampling sampling, const DlPaint *paint=nullptr, DlSrcRectConstraint constraint=DlSrcRectConstraint::kFast)
 
- Public Member Functions inherited from flutter::DlCanvas
virtual ~DlCanvas ()=default
 
void Clear (DlColor color)
 
void DrawImageRect (const sk_sp< DlImage > &image, const DlRect &dst, DlImageSampling sampling, const DlPaint *paint=nullptr, DlSrcRectConstraint constraint=DlSrcRectConstraint::kFast)
 

Static Public Attributes

static constexpr DlRect kMaxCullRect
 
- Static Public Attributes inherited from flutter::DlCanvas
static constexpr DlScalar kShadowLightHeight = 600
 
static constexpr DlScalar kShadowLightRadius = 800
 

Friends

DlOpReceiverDisplayListBuilderBenchmarkAccessor (DisplayListBuilder &builder)
 
DlOpReceiverDisplayListBuilderTestingAccessor (DisplayListBuilder &builder)
 
DlPaint DisplayListBuilderTestingAttributes (DisplayListBuilder &builder)
 
int DisplayListBuilderTestingLastOpIndex (DisplayListBuilder &builder)
 

Additional Inherited Members

- Static Public Member Functions inherited from flutter::DlCanvas
static DlRect ComputeShadowBounds (const DlPath &path, float elevation, DlScalar dpr, const DlMatrix &ctm)
 Compute the local coverage for a |DrawShadow| operation using the given parameters (excluding the color and the transparent occluder parameters which do not affect the bounds).
 

Detailed Description

Definition at line 27 of file dl_builder.h.

Constructor & Destructor Documentation

◆ DisplayListBuilder() [1/3]

flutter::DisplayListBuilder::DisplayListBuilder ( bool  prepare_rtree)
inlineexplicit

Definition at line 35 of file dl_builder.h.

36 : DisplayListBuilder(kMaxCullRect, prepare_rtree) {}
static constexpr DlRect kMaxCullRect
Definition dl_builder.h:32
DisplayListBuilder(bool prepare_rtree)
Definition dl_builder.h:35

◆ DisplayListBuilder() [2/3]

flutter::DisplayListBuilder::DisplayListBuilder ( const DlRect cull_rect = kMaxCullRect,
bool  prepare_rtree = false 
)
explicit

Definition at line 129 of file dl_builder.cc.

131 : original_cull_rect_(ProtectEmpty(cull_rect)) {
132 Init(prepare_rtree);
133}
static const DlRect & ProtectEmpty(const DlRect &rect)

◆ DisplayListBuilder() [3/3]

flutter::DisplayListBuilder::DisplayListBuilder ( DlScalar  width,
DlScalar  height 
)
inline

Definition at line 41 of file dl_builder.h.

int32_t height
int32_t width
static constexpr TRect MakeWH(Type width, Type height)
Definition rect.h:140

◆ ~DisplayListBuilder()

flutter::DisplayListBuilder::~DisplayListBuilder ( )

Definition at line 146 of file dl_builder.cc.

146 {
147 DisplayList::DisposeOps(storage_, offsets_);
148}

Member Function Documentation

◆ Build()

sk_sp< DisplayList > flutter::DisplayListBuilder::Build ( )

Definition at line 66 of file dl_builder.cc.

66 {
67 while (save_stack_.size() > 1) {
68 restore();
69 }
70
71 int count = render_op_count_;
72 size_t nested_bytes = nested_bytes_;
73 int nested_count = nested_op_count_;
74 uint32_t total_depth = depth_;
75 bool opacity_compatible = current_layer().is_group_opacity_compatible();
76 bool is_safe = is_ui_thread_safe_;
77 bool affects_transparency = current_layer().affects_transparent_layer;
78 bool root_has_backdrop_filter = current_layer().contains_backdrop_filter;
79 bool root_is_unbounded = current_layer().is_unbounded;
80 DlBlendMode max_root_blend_mode = current_layer().max_blend_mode;
81
82 sk_sp<DlRTree> rtree;
83 DlRect bounds;
84 if (rtree_data_.has_value()) {
85 auto& rects = rtree_data_->rects;
86 auto& indices = rtree_data_->indices;
87 rtree = sk_make_sp<DlRTree>(rects.data(), rects.size(), indices.data(),
88 [](int id) { return id >= 0; });
89 // RTree bounds may be tighter due to applying filter bounds
90 // adjustments to each op as we restore layers rather than to
91 // the entire layer bounds.
92 bounds = rtree->bounds();
93 rtree_data_.reset();
94 } else {
95 bounds = current_layer().global_space_accumulator.GetBounds();
96 }
97
98 render_op_count_ = op_index_ = 0;
99 nested_bytes_ = nested_op_count_ = 0;
100 depth_ = 0;
101 is_ui_thread_safe_ = true;
102 current_opacity_compatibility_ = true;
103 render_op_depth_cost_ = 1u;
104 current_ = DlPaint();
105
106 save_stack_.pop_back();
107 Init(rtree != nullptr);
108
109 storage_.trim();
110 DisplayListStorage storage;
111 std::vector<size_t> offsets;
112 std::swap(offsets, offsets_);
113 std::swap(storage, storage_);
114
115 return sk_sp<DisplayList>(new DisplayList(
116 std::move(storage), std::move(offsets), count, nested_bytes, nested_count,
117 total_depth, bounds, opacity_compatible, is_safe, affects_transparency,
118 max_root_blend_mode, root_has_backdrop_filter, root_is_unbounded,
119 std::move(rtree)));
120}
impeller::Rect DlRect
impeller::BlendMode DlBlendMode
flutter::DisplayList DisplayList
flutter::DlPaint DlPaint

References flutter::DisplayListStorage::trim().

Referenced by flutter::testing::MockRasterCache::AddMockPicture(), flutter::BM_DisplayListDispatchByIndexDefault(), flutter::BM_DisplayListDispatchByIteratorDefault(), flutter::BM_DisplayListDispatchByVectorCull(), flutter::BM_DisplayListDispatchByVectorDefault(), flutter::BM_DisplayListDispatchCull(), flutter::BM_DisplayListDispatchDefault(), flutter::testing::BM_DrawArc(), flutter::testing::BM_DrawCircle(), flutter::testing::BM_DrawDRRect(), flutter::testing::BM_DrawImage(), flutter::testing::BM_DrawImageNine(), flutter::testing::BM_DrawImageRect(), flutter::testing::BM_DrawLine(), flutter::testing::BM_DrawOval(), flutter::testing::BM_DrawPath(), flutter::testing::BM_DrawPoints(), flutter::testing::BM_DrawRect(), flutter::testing::BM_DrawRRect(), flutter::testing::BM_DrawShadow(), flutter::testing::BM_DrawTextBlob(), flutter::testing::BM_DrawVertices(), flutter::testing::BM_SaveLayer(), impeller::interop::DisplayListBuilder::Build(), flutter::testing::DisplayListTestBase< BaseT >::Build(), flutter::testing::DisplayListTestBase< BaseT >::Build(), impeller::testing::CanRenderConicalGradientWithDithering(), impeller::testing::CanRenderLinearGradientWithDithering(), impeller::testing::CanRenderRadialGradientWithDithering(), impeller::testing::CanRenderSweepGradientWithDithering(), flutter::testing::DiffContextTest::CreateDisplayList(), flutter::testing::LayerTreeTest::display_list(), flutter::testing::LayerTestBase< BaseT >::display_list(), impeller::testing::DoGradientOvalStrokeMaskBlur(), flutter::LayerTree::Flatten(), flutter::testing::RenderEnvironment::getImpellerResult(), flutter::testing::GetSampleDisplayList(), flutter::testing::GetSampleDisplayList(), flutter::testing::GetSampleNestedDisplayList(), flutter::testing::DlJobRenderer::MakeDisplayList(), flutter::testing::MakeSizedDisplayList(), flutter::testing::makeTestDisplayList(), flutter::testing::MakeTestDisplayList(), impeller::testing::MaskBlurVariantTest(), impeller::DlPlayground::OpenPlaygroundHere(), flutter::testing::LayerTestBase< BaseT >::reset_display_list(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::DisplayListNopTest::test_attributes_image(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), impeller::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::DisplayListNopTest::test_mode_color_via_filter(), flutter::testing::DisplayListNopTest::test_mode_color_via_rendering(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), and flutter::testing::DisplayListTestBase< BaseT >::verify_inverted_bounds().

◆ ClipOval()

void flutter::DisplayListBuilder::ClipOval ( const DlRect bounds,
DlClipOp  clip_op = DlClipOp::kIntersect,
bool  is_aa = false 
)
overridevirtual

Implements flutter::DlCanvas.

Definition at line 961 of file dl_builder.cc.

963 {
964 if (!bounds.IsFinite()) {
965 return;
966 }
967 if (current_info().is_nop) {
968 return;
969 }
970 if (current_info().has_valid_clip && clip_op == DlClipOp::kIntersect &&
971 layer_local_state().oval_covers_cull(bounds)) {
972 return;
973 }
974 global_state().clipOval(bounds, clip_op, is_aa);
975 layer_local_state().clipOval(bounds, clip_op, is_aa);
976 if (global_state().is_cull_rect_empty() ||
977 layer_local_state().is_cull_rect_empty()) {
978 current_info().is_nop = true;
979 return;
980 }
981 current_info().has_valid_clip = true;
982 checkForDeferredSave();
983 switch (clip_op) {
985 Push<ClipIntersectOvalOp>(0, bounds, is_aa);
986 break;
988 Push<ClipDifferenceOvalOp>(0, bounds, is_aa);
989 break;
990 }
991}
void clipOval(const DlRect &bounds, DlClipOp op, bool is_aa)

References flutter::DisplayListMatrixClipState::clipOval(), impeller::TRect< T >::IsFinite(), flutter::kDifference, and flutter::kIntersect.

Referenced by impeller::interop::DisplayListBuilder::ClipOval(), ClipPath(), ClipRoundRect(), ClipRoundSuperellipse(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), impeller::testing::TEST_P(), and impeller::testing::TEST_P().

◆ ClipPath()

void flutter::DisplayListBuilder::ClipPath ( const DlPath path,
DlClipOp  clip_op = DlClipOp::kIntersect,
bool  is_aa = false 
)
overridevirtual

Implements flutter::DlCanvas.

Definition at line 1064 of file dl_builder.cc.

1066 {
1067 if (current_info().is_nop) {
1068 return;
1069 }
1070 {
1071 DlRect rect;
1072 if (path.IsRect(&rect)) {
1073 ClipRect(rect, clip_op, is_aa);
1074 return;
1075 }
1076 if (path.IsOval(&rect)) {
1077 ClipOval(rect, clip_op, is_aa);
1078 return;
1079 }
1080 DlRoundRect rrect;
1081 if (path.IsRoundRect(&rrect)) {
1082 ClipRoundRect(rrect, clip_op, is_aa);
1083 return;
1084 }
1085 }
1086 global_state().clipPath(path, clip_op, is_aa);
1087 layer_local_state().clipPath(path, clip_op, is_aa);
1088 if (global_state().is_cull_rect_empty() ||
1089 layer_local_state().is_cull_rect_empty()) {
1090 current_info().is_nop = true;
1091 return;
1092 }
1093 current_info().has_valid_clip = true;
1094 checkForDeferredSave();
1095 switch (clip_op) {
1097 Push<ClipIntersectPathOp>(0, path, is_aa);
1098 break;
1100 Push<ClipDifferencePathOp>(0, path, is_aa);
1101 break;
1102 }
1103}
void ClipRect(const DlRect &rect, DlClipOp clip_op=DlClipOp::kIntersect, bool is_aa=false) override
void ClipRoundRect(const DlRoundRect &rrect, DlClipOp clip_op=DlClipOp::kIntersect, bool is_aa=false) override
void ClipOval(const DlRect &bounds, DlClipOp clip_op=DlClipOp::kIntersect, bool is_aa=false) override
void clipPath(const DlPath &path, DlClipOp op, bool is_aa)
impeller::RoundRect DlRoundRect
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 switch_defs.h:52

References ClipOval(), flutter::DisplayListMatrixClipState::clipPath(), ClipRect(), ClipRoundRect(), flutter::kDifference, flutter::kIntersect, and flutter::path.

Referenced by impeller::interop::DisplayListBuilder::ClipPath(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), and impeller::testing::TEST_P().

◆ ClipRect()

void flutter::DisplayListBuilder::ClipRect ( const DlRect rect,
DlClipOp  clip_op = DlClipOp::kIntersect,
bool  is_aa = false 
)
overridevirtual

Implements flutter::DlCanvas.

Definition at line 930 of file dl_builder.cc.

932 {
933 if (!rect.IsFinite()) {
934 return;
935 }
936 if (current_info().is_nop) {
937 return;
938 }
939 if (current_info().has_valid_clip && clip_op == DlClipOp::kIntersect &&
940 layer_local_state().rect_covers_cull(rect)) {
941 return;
942 }
943 global_state().clipRect(rect, clip_op, is_aa);
944 layer_local_state().clipRect(rect, clip_op, is_aa);
945 if (global_state().is_cull_rect_empty() ||
946 layer_local_state().is_cull_rect_empty()) {
947 current_info().is_nop = true;
948 return;
949 }
950 current_info().has_valid_clip = true;
951 checkForDeferredSave();
952 switch (clip_op) {
954 Push<ClipIntersectRectOp>(0, rect, is_aa);
955 break;
957 Push<ClipDifferenceRectOp>(0, rect, is_aa);
958 break;
959 }
960}
void clipRect(const DlRect &rect, DlClipOp op, bool is_aa)

References flutter::DisplayListMatrixClipState::clipRect(), impeller::TRect< T >::IsFinite(), flutter::kDifference, and flutter::kIntersect.

Referenced by flutter::BM_DisplayListBuilderWithClipRect(), ClipPath(), impeller::interop::DisplayListBuilder::ClipRect(), ClipRoundRect(), ClipRoundSuperellipse(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), and impeller::testing::TEST_P().

◆ ClipRoundRect()

void flutter::DisplayListBuilder::ClipRoundRect ( const DlRoundRect rrect,
DlClipOp  clip_op = DlClipOp::kIntersect,
bool  is_aa = false 
)
overridevirtual

Implements flutter::DlCanvas.

Definition at line 992 of file dl_builder.cc.

994 {
995 if (rrect.IsRect()) {
996 ClipRect(rrect.GetBounds(), clip_op, is_aa);
997 return;
998 }
999 if (rrect.IsOval()) {
1000 ClipOval(rrect.GetBounds(), clip_op, is_aa);
1001 return;
1002 }
1003 if (current_info().is_nop) {
1004 return;
1005 }
1006 if (current_info().has_valid_clip && clip_op == DlClipOp::kIntersect &&
1007 layer_local_state().rrect_covers_cull(rrect)) {
1008 return;
1009 }
1010 global_state().clipRRect(rrect, clip_op, is_aa);
1011 layer_local_state().clipRRect(rrect, clip_op, is_aa);
1012 if (global_state().is_cull_rect_empty() ||
1013 layer_local_state().is_cull_rect_empty()) {
1014 current_info().is_nop = true;
1015 return;
1016 }
1017 current_info().has_valid_clip = true;
1018 checkForDeferredSave();
1019 switch (clip_op) {
1021 Push<ClipIntersectRoundRectOp>(0, rrect, is_aa);
1022 break;
1024 Push<ClipDifferenceRoundRectOp>(0, rrect, is_aa);
1025 break;
1026 }
1027}
void clipRRect(const DlRoundRect &rrect, DlClipOp op, bool is_aa)

References ClipOval(), ClipRect(), flutter::DisplayListMatrixClipState::clipRRect(), impeller::RoundRect::GetBounds(), impeller::RoundRect::IsOval(), impeller::RoundRect::IsRect(), flutter::kDifference, and flutter::kIntersect.

Referenced by ClipPath(), impeller::interop::DisplayListBuilder::ClipRoundedRect(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), and impeller::testing::TEST_P().

◆ ClipRoundSuperellipse()

void flutter::DisplayListBuilder::ClipRoundSuperellipse ( const DlRoundSuperellipse rse,
DlClipOp  clip_op = DlClipOp::kIntersect,
bool  is_aa = false 
)
overridevirtual

Implements flutter::DlCanvas.

Definition at line 1028 of file dl_builder.cc.

1030 {
1031 if (rse.IsRect()) {
1032 ClipRect(rse.GetBounds(), clip_op, is_aa);
1033 return;
1034 }
1035 if (rse.IsOval()) {
1036 ClipOval(rse.GetBounds(), clip_op, is_aa);
1037 return;
1038 }
1039 if (current_info().is_nop) {
1040 return;
1041 }
1042 if (current_info().has_valid_clip && clip_op == DlClipOp::kIntersect &&
1043 layer_local_state().rsuperellipse_covers_cull(rse)) {
1044 return;
1045 }
1046 global_state().clipRSuperellipse(rse, clip_op, is_aa);
1047 layer_local_state().clipRSuperellipse(rse, clip_op, is_aa);
1048 if (global_state().is_cull_rect_empty() ||
1049 layer_local_state().is_cull_rect_empty()) {
1050 current_info().is_nop = true;
1051 return;
1052 }
1053 current_info().has_valid_clip = true;
1054 checkForDeferredSave();
1055 switch (clip_op) {
1057 Push<ClipIntersectRoundSuperellipseOp>(0, rse, is_aa);
1058 break;
1060 Push<ClipDifferenceRoundSuperellipseOp>(0, rse, is_aa);
1061 break;
1062 }
1063}
void clipRSuperellipse(const DlRoundSuperellipse &rse, DlClipOp op, bool is_aa)

References ClipOval(), ClipRect(), flutter::DisplayListMatrixClipState::clipRSuperellipse(), impeller::RoundSuperellipse::GetBounds(), impeller::RoundSuperellipse::IsOval(), impeller::RoundSuperellipse::IsRect(), flutter::kDifference, and flutter::kIntersect.

◆ DrawArc()

void flutter::DisplayListBuilder::DrawArc ( const DlRect bounds,
DlScalar  start,
DlScalar  sweep,
bool  useCenter,
const DlPaint paint 
)
overridevirtual

Implements flutter::DlCanvas.

Definition at line 1322 of file dl_builder.cc.

1326 {
1327 SetAttributesFromPaint(
1328 paint, useCenter ? kDrawArcWithCenterFlags : kDrawArcNoCenterFlags);
1329 drawArc(bounds, start, sweep, useCenter);
1330}
static constexpr DisplayListAttributeFlags kDrawArcWithCenterFlags
static constexpr DisplayListAttributeFlags kDrawArcNoCenterFlags

References flutter::DisplayListOpFlags::kDrawArcNoCenterFlags, flutter::DisplayListOpFlags::kDrawArcWithCenterFlags, and start.

Referenced by flutter::testing::BM_DrawArc(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST_F(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), and impeller::testing::TEST_P().

◆ DrawAtlas()

void flutter::DisplayListBuilder::DrawAtlas ( const sk_sp< DlImage > &  atlas,
const DlRSTransform  xform[],
const DlRect  tex[],
const DlColor  colors[],
int  count,
DlBlendMode  mode,
DlImageSampling  sampling,
const DlRect cullRect,
const DlPaint paint = nullptr 
)
overridevirtual

Implements flutter::DlCanvas.

Definition at line 1607 of file dl_builder.cc.

1615 {
1616 if (paint != nullptr) {
1617 SetAttributesFromPaint(*paint,
1619 drawAtlas(atlas, xform, tex, colors, count, mode, sampling, cull_rect,
1620 true);
1621 } else {
1622 drawAtlas(atlas, xform, tex, colors, count, mode, sampling, cull_rect,
1623 false);
1624 }
1625}
static constexpr DisplayListAttributeFlags kDrawAtlasWithPaintFlags

References flutter::DisplayListOpFlags::kDrawAtlasWithPaintFlags, and flutter::mode.

Referenced by flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST_F(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), and impeller::testing::TEST_P().

◆ DrawCircle()

void flutter::DisplayListBuilder::DrawCircle ( const DlPoint center,
DlScalar  radius,
const DlPaint paint 
)
overridevirtual

Implements flutter::DlCanvas.

Definition at line 1209 of file dl_builder.cc.

1211 {
1212 SetAttributesFromPaint(paint, DisplayListOpFlags::kDrawCircleFlags);
1213 drawCircle(center, radius);
1214}
static constexpr DisplayListAttributeFlags kDrawCircleFlags

References flutter::DisplayListOpFlags::kDrawCircleFlags.

Referenced by flutter::testing::BM_DrawCircle(), impeller::testing::MaskBlurVariantTest(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), and flutter::testing::TEST_P().

◆ DrawColor()

void flutter::DisplayListBuilder::DrawColor ( DlColor  color,
DlBlendMode  mode 
)
overridevirtual

◆ DrawDashedLine()

void flutter::DisplayListBuilder::DrawDashedLine ( const DlPoint p0,
const DlPoint p1,
DlScalar  on_length,
DlScalar  off_length,
const DlPaint paint 
)
overridevirtual

Implements flutter::DlCanvas.

Definition at line 1160 of file dl_builder.cc.

1164 {
1165 SetAttributesFromPaint(paint, DisplayListOpFlags::kDrawLineFlags);
1166 drawDashedLine(p0, p1, on_length, off_length);
1167}
static constexpr DisplayListAttributeFlags kDrawLineFlags

References flutter::DisplayListOpFlags::kDrawLineFlags.

Referenced by impeller::interop::DisplayListBuilder::DrawDashedLine(), and flutter::testing::TEST().

◆ DrawDiffRoundRect()

void flutter::DisplayListBuilder::DrawDiffRoundRect ( const DlRoundRect outer,
const DlRoundRect inner,
const DlPaint paint 
)
overridevirtual

Implements flutter::DlCanvas.

Definition at line 1247 of file dl_builder.cc.

1249 {
1250 SetAttributesFromPaint(paint, DisplayListOpFlags::kDrawDRRectFlags);
1251 drawDiffRoundRect(outer, inner);
1252}
static constexpr DisplayListAttributeFlags kDrawDRRectFlags

References flutter::DisplayListOpFlags::kDrawDRRectFlags.

Referenced by flutter::testing::BM_DrawDRRect(), impeller::interop::DisplayListBuilder::DrawRoundedRectDifference(), flutter::testing::TEST(), flutter::testing::TEST_F(), and impeller::testing::TEST_P().

◆ DrawDisplayList()

void flutter::DisplayListBuilder::DrawDisplayList ( const sk_sp< DisplayList display_list,
DlScalar  opacity = SK_Scalar1 
)
overridevirtual

Implements flutter::DlCanvas.

Definition at line 1627 of file dl_builder.cc.

1628 {
1629 if (!std::isfinite(opacity) || opacity <= SK_ScalarNearlyZero ||
1630 display_list->op_count() == 0 || display_list->GetBounds().IsEmpty() ||
1631 current_info().is_nop) {
1632 return;
1633 }
1634 const DlRect bounds = display_list->GetBounds();
1635 bool accumulated;
1636 sk_sp<const DlRTree> rtree;
1637 if (display_list->root_is_unbounded()) {
1638 accumulated = AccumulateUnbounded();
1639 } else if (!rtree_data_.has_value() || !(rtree = display_list->rtree())) {
1640 accumulated = AccumulateOpBounds(bounds, kDrawDisplayListFlags);
1641 } else {
1642 std::list<DlRect> rects =
1643 rtree->searchAndConsolidateRects(GetLocalClipCoverage(), false);
1644 accumulated = false;
1645 for (const DlRect& rect : rects) {
1646 // TODO (https://github.com/flutter/flutter/issues/114919): Attributes
1647 // are not necessarily `kDrawDisplayListFlags`.
1648 if (AccumulateOpBounds(rect, kDrawDisplayListFlags)) {
1649 accumulated = true;
1650 }
1651 }
1652 }
1653 if (!accumulated) {
1654 return;
1655 }
1656
1657 DlPaint current_paint = current_;
1658 Push<DrawDisplayListOp>(0, display_list,
1659 opacity < SK_Scalar1 ? opacity : SK_Scalar1);
1660
1661 // This depth increment accounts for every draw call in the child
1662 // DisplayList and is in addition to the implicit depth increment
1663 // that was performed when we pushed the DrawDisplayListOp. The
1664 // eventual dispatcher can use or ignore the implicit depth increment
1665 // as it sees fit depending on whether it needs to do rendering
1666 // before or after the drawDisplayList op, but it must be accounted
1667 // for if the depth value accounting is to remain consistent between
1668 // the recording and dispatching process.
1669 depth_ += display_list->total_depth();
1670
1671 is_ui_thread_safe_ = is_ui_thread_safe_ && display_list->isUIThreadSafe();
1672 // Not really necessary if the developer is interacting with us via
1673 // our attribute-state-less DlCanvas methods, but this avoids surprises
1674 // for those who may have been using the stateful Dispatcher methods.
1675 SetAttributesFromPaint(current_paint,
1677
1678 // The non-nested op count accumulated in the |Push| method will include
1679 // this call to |drawDisplayList| for non-nested op count metrics.
1680 // But, for nested op count metrics we want the |drawDisplayList| call itself
1681 // to be transparent. So we subtract 1 from our accumulated nested count to
1682 // balance out against the 1 that was accumulated into the regular count.
1683 // This behavior is identical to the way SkPicture computed nested op counts.
1684 nested_op_count_ += display_list->op_count(true) - 1;
1685 nested_bytes_ += display_list->bytes(true);
1686 UpdateLayerOpacityCompatibility(display_list->can_apply_group_opacity());
1687 // Nop DisplayLists are eliminated above so we either affect transparent
1688 // pixels or we do not. We should not have [kNoEffect].
1689 UpdateLayerResult(display_list->modifies_transparent_black()
1690 ? OpResult::kAffectsAll
1691 : OpResult::kPreservesTransparency,
1692 display_list->max_root_blend_mode());
1693 if (display_list->root_has_backdrop_filter()) {
1694 current_layer().contains_backdrop_filter = true;
1695 }
1696}
DlRect GetLocalClipCoverage() const override
Definition dl_builder.h:136
static constexpr DisplayListAttributeFlags kDrawDisplayListFlags
static constexpr DisplayListAttributeFlags kSaveLayerWithPaintFlags

References GetLocalClipCoverage(), flutter::DisplayListOpFlags::kDrawDisplayListFlags, and flutter::DisplayListOpFlags::kSaveLayerWithPaintFlags.

Referenced by impeller::interop::DisplayListBuilder::DrawDisplayList(), flutter::testing::RenderEnvironment::getImpellerResult(), flutter::testing::GetSampleNestedDisplayList(), flutter::testing::TEST(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), impeller::testing::TEST_P(), and impeller::testing::TEST_P().

◆ DrawImage()

void flutter::DisplayListBuilder::DrawImage ( const sk_sp< DlImage > &  image,
const DlPoint point,
DlImageSampling  sampling,
const DlPaint paint = nullptr 
)
overridevirtual

Implements flutter::DlCanvas.

Definition at line 1457 of file dl_builder.cc.

1460 {
1461 if (paint != nullptr) {
1462 SetAttributesFromPaint(*paint,
1464 drawImage(image, point, sampling, true);
1465 } else {
1466 drawImage(image, point, sampling, false);
1467 }
1468}
static constexpr DisplayListAttributeFlags kDrawImageWithPaintFlags
FlutterVulkanImage * image

References image, and flutter::DisplayListOpFlags::kDrawImageWithPaintFlags.

Referenced by flutter::testing::BM_DrawImage(), impeller::interop::DisplayListBuilder::DrawTexture(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::DisplayListNopTest::test_attributes_image(), flutter::testing::TEST_F(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), and impeller::testing::TEST_P().

◆ DrawImageNine()

void flutter::DisplayListBuilder::DrawImageNine ( const sk_sp< DlImage > &  image,
const DlIRect center,
const DlRect dst,
DlFilterMode  filter,
const DlPaint paint = nullptr 
)
overridevirtual

Implements flutter::DlCanvas.

Definition at line 1519 of file dl_builder.cc.

1523 {
1524 if (paint != nullptr) {
1525 SetAttributesFromPaint(*paint,
1527 drawImageNine(image, center, dst, filter, true);
1528 } else {
1529 drawImageNine(image, center, dst, filter, false);
1530 }
1531}
static constexpr DisplayListAttributeFlags kDrawImageNineWithPaintFlags

References image, and flutter::DisplayListOpFlags::kDrawImageNineWithPaintFlags.

Referenced by flutter::testing::BM_DrawImageNine(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST_F(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), and impeller::testing::TEST_P().

◆ DrawImageRect() [1/4]

virtual void flutter::DlCanvas::DrawImageRect ( const sk_sp< DlImage > &  image,
const DlIRect src,
const DlRect dst,
DlImageSampling  sampling,
const DlPaint paint = nullptr,
DlSrcRectConstraint  constraint = DlSrcRectConstraint::kFast 
)
inlinevirtual

Reimplemented from flutter::DlCanvas.

Definition at line 149 of file dl_canvas.h.

155 {
156 auto float_src = DlRect::MakeLTRB(src.GetLeft(), src.GetTop(),
157 src.GetRight(), src.GetBottom());
158 DrawImageRect(image, float_src, dst, sampling, paint, constraint);
159 }
void DrawImageRect(const sk_sp< DlImage > &image, const DlRect &src, const DlRect &dst, DlImageSampling sampling, const DlPaint *paint=nullptr, DlSrcRectConstraint constraint=DlSrcRectConstraint::kFast) override
static constexpr TRect MakeLTRB(Type left, Type top, Type right, Type bottom)
Definition rect.h:129

◆ DrawImageRect() [2/4]

void flutter::DlCanvas::DrawImageRect ( const sk_sp< DlImage > &  image,
const DlRect dst,
DlImageSampling  sampling,
const DlPaint paint = nullptr,
DlSrcRectConstraint  constraint = DlSrcRectConstraint::kFast 
)
inline

Definition at line 160 of file dl_canvas.h.

165 {
166 DrawImageRect(image, image->GetBounds(), dst, sampling, paint, constraint);
167 }

◆ DrawImageRect() [3/4]

void flutter::DisplayListBuilder::DrawImageRect ( const sk_sp< DlImage > &  image,
const DlRect src,
const DlRect dst,
DlImageSampling  sampling,
const DlPaint paint = nullptr,
DlSrcRectConstraint  constraint = DlSrcRectConstraint::kFast 
)
overridevirtual

◆ DrawImageRect() [4/4]

virtual void flutter::DlCanvas::DrawImageRect ( const sk_sp< DlImage > &  image,
const DlRect src,
const DlRect dst,
DlImageSampling  sampling,
const DlPaint paint = nullptr,
DlSrcRectConstraint  constraint = DlSrcRectConstraint::kFast 
)
virtual

Implements flutter::DlCanvas.

◆ DrawLine()

◆ DrawOval()

void flutter::DisplayListBuilder::DrawOval ( const DlRect bounds,
const DlPaint paint 
)
overridevirtual

◆ DrawPaint()

void flutter::DisplayListBuilder::DrawPaint ( const DlPaint paint)
overridevirtual

Implements flutter::DlCanvas.

Definition at line 1117 of file dl_builder.cc.

1117 {
1118 SetAttributesFromPaint(paint, DisplayListOpFlags::kDrawPaintFlags);
1119 drawPaint();
1120}
static constexpr DisplayListAttributeFlags kDrawPaintFlags

References flutter::DisplayListOpFlags::kDrawPaintFlags.

Referenced by impeller::testing::DoGradientOvalStrokeMaskBlur(), impeller::interop::DisplayListBuilder::DrawPaint(), impeller::testing::MaskBlurVariantTest(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), and flutter::testing::TEST_P().

◆ DrawPath()

void flutter::DisplayListBuilder::DrawPath ( const DlPath path,
const DlPaint paint 
)
overridevirtual

Implements flutter::DlCanvas.

Definition at line 1295 of file dl_builder.cc.

1295 {
1296 SetAttributesFromPaint(paint, DisplayListOpFlags::kDrawPathFlags);
1297 drawPath(path);
1298}
static constexpr DisplayListAttributeFlags kDrawPathFlags

References flutter::DisplayListOpFlags::kDrawPathFlags, and flutter::path.

Referenced by flutter::testing::MockRasterCache::AddMockPicture(), flutter::testing::BM_DrawPath(), impeller::interop::DisplayListBuilder::DrawPath(), impeller::testing::MaskBlurVariantTest(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), and flutter::testing::TEST_P().

◆ DrawPoints()

void flutter::DisplayListBuilder::DrawPoints ( DlPointMode  mode,
uint32_t  count,
const DlPoint  pts[],
const DlPaint paint 
)
overridevirtual

◆ DrawRect()

void flutter::DisplayListBuilder::DrawRect ( const DlRect rect,
const DlPaint paint 
)
overridevirtual

Implements flutter::DlCanvas.

Definition at line 1178 of file dl_builder.cc.

1178 {
1179 SetAttributesFromPaint(paint, DisplayListOpFlags::kDrawRectFlags);
1180 drawRect(rect);
1181}
static constexpr DisplayListAttributeFlags kDrawRectFlags

References flutter::DisplayListOpFlags::kDrawRectFlags.

Referenced by flutter::testing::BM_DrawRect(), flutter::testing::BM_SaveLayer(), impeller::testing::CanRenderConicalGradientWithDithering(), impeller::testing::CanRenderLinearGradientWithDithering(), impeller::testing::CanRenderRadialGradientWithDithering(), impeller::testing::CanRenderSweepGradientWithDithering(), flutter::testing::DiffContextTest::CreateDisplayList(), impeller::interop::DisplayListBuilder::DrawRect(), flutter::testing::GetSampleDisplayList(), flutter::testing::GetSampleNestedDisplayList(), flutter::testing::MakeSizedDisplayList(), flutter::testing::makeTestDisplayList(), flutter::testing::MakeTestDisplayList(), impeller::testing::MaskBlurVariantTest(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), impeller::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::DisplayListNopTest::test_mode_color_via_filter(), flutter::testing::DisplayListNopTest::test_mode_color_via_rendering(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), and impeller::testing::TEST_P().

◆ DrawRoundRect()

void flutter::DisplayListBuilder::DrawRoundRect ( const DlRoundRect rrect,
const DlPaint paint 
)
overridevirtual

◆ DrawRoundSuperellipse()

void flutter::DisplayListBuilder::DrawRoundSuperellipse ( const DlRoundSuperellipse rse,
const DlPaint paint 
)
overridevirtual

Implements flutter::DlCanvas.

Definition at line 1278 of file dl_builder.cc.

1279 {
1280 SetAttributesFromPaint(paint, DisplayListOpFlags::kDrawRSuperellipseFlags);
1281 drawRoundSuperellipse(rse);
1282}
static constexpr DisplayListAttributeFlags kDrawRSuperellipseFlags

References flutter::DisplayListOpFlags::kDrawRSuperellipseFlags.

◆ DrawShadow()

void flutter::DisplayListBuilder::DrawShadow ( const DlPath path,
const DlColor  color,
const DlScalar  elevation,
bool  transparent_occluder,
DlScalar  dpr 
)
overridevirtual

Draws the shadow of the given |path| rendered in the provided |color| (which is only consulted for its opacity) as would be produced by a directional light source uniformly shining in the device space direction {0, -1, 1} against a backdrop which is |elevation * dpr| device coordinates below the |path| in the Z direction.

Normally the renderer might consider omitting the rendering of any of the shadow pixels that fall under the |path| itself, as an optimization, unless the |transparent_occluder| flag is specified which would indicate that the optimization isn't appropriate.

Note that the |elevation| and |dpr| are unique in the API for being considered in pure device coordinates while the |path| is interpreted relative to the current local-to-device transform.

See also
|ComputeShadowBounds|

Implements flutter::DlCanvas.

Definition at line 1735 of file dl_builder.cc.

1739 {
1740 OpResult result = PaintResult(DlPaint(color));
1741 if (result != OpResult::kNoEffect) {
1742 DlRect shadow_bounds =
1743 DlCanvas::ComputeShadowBounds(path, elevation, dpr, GetMatrix());
1744 if (AccumulateOpBounds(shadow_bounds, kDrawShadowFlags)) {
1745 transparent_occluder //
1746 ? Push<DrawShadowTransparentOccluderOp>(0, path, color, elevation,
1747 dpr)
1748 : Push<DrawShadowOp>(0, path, color, elevation, dpr);
1749 UpdateLayerOpacityCompatibility(false);
1750 UpdateLayerResult(result, DlBlendMode::kSrcOver);
1751 }
1752 }
1753}
DlMatrix GetMatrix() const override
Definition dl_builder.h:102
static constexpr DisplayListAttributeFlags kDrawShadowFlags
static DlRect ComputeShadowBounds(const DlPath &path, float elevation, DlScalar dpr, const DlMatrix &ctm)
Compute the local coverage for a |DrawShadow| operation using the given parameters (excluding the col...
Definition dl_canvas.cc:125

References flutter::DlCanvas::ComputeShadowBounds(), GetMatrix(), flutter::DisplayListOpFlags::kDrawShadowFlags, and flutter::path.

Referenced by flutter::testing::BM_DrawShadow(), impeller::interop::DisplayListBuilder::DrawShadow(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST_F(), impeller::testing::TEST_P(), and impeller::testing::TEST_P().

◆ DrawText()

void flutter::DisplayListBuilder::DrawText ( const std::shared_ptr< DlText > &  text,
DlScalar  x,
DlScalar  y,
const DlPaint paint 
)
overridevirtual

◆ DrawVertices()

◆ Flush()

void flutter::DisplayListBuilder::Flush ( )
inlineoverridevirtual

Implements flutter::DlCanvas.

Definition at line 243 of file dl_builder.h.

243{}

◆ GetBaseLayerDimensions()

DlISize flutter::DisplayListBuilder::GetBaseLayerDimensions ( ) const
overridevirtual

Implements flutter::DlCanvas.

Definition at line 150 of file dl_builder.cc.

150 {
151 return DlIRect::RoundOut(original_cull_rect_).GetSize();
152}
RoundOut(const TRect< U > &r)
Definition rect.h:679

References impeller::TRect< T >::RoundOut().

Referenced by GetImageInfo().

◆ GetDestinationClipCoverage()

◆ GetImageInfo()

SkImageInfo flutter::DisplayListBuilder::GetImageInfo ( ) const
overridevirtual

Implements flutter::DlCanvas.

Definition at line 154 of file dl_builder.cc.

154 {
156 return SkImageInfo::MakeUnknown(size.width, size.height);
157}
DlISize GetBaseLayerDimensions() const override
impeller::ISize32 DlISize
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 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

References GetBaseLayerDimensions(), and flutter::size.

◆ GetLocalClipCoverage()

DlRect flutter::DisplayListBuilder::GetLocalClipCoverage ( ) const
inlineoverridevirtual

Conservative estimate of the bounds of all outstanding clip operations transformed into the local coordinate space in which currently recorded rendering operations are interpreted.

Implements flutter::DlCanvas.

Definition at line 136 of file dl_builder.h.

136 {
137 return global_state().GetLocalCullCoverage();
138 }

References flutter::DisplayListMatrixClipState::GetLocalCullCoverage().

Referenced by flutter::testing::DisplayListTestBase< BaseT >::check_defaults(), DrawDisplayList(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), and flutter::testing::TEST_F().

◆ GetMatrix()

◆ GetSaveCount()

int flutter::DisplayListBuilder::GetSaveCount ( ) const
inlineoverridevirtual

◆ QuickReject()

bool flutter::DisplayListBuilder::QuickReject ( const DlRect bounds) const
overridevirtual

Return true iff the supplied bounds are easily shown to be outside of the current clip bounds. This method may conservatively return false if it cannot make the determination.

Implements flutter::DlCanvas.

Definition at line 1105 of file dl_builder.cc.

1105 {
1106 return global_state().content_culled(bounds);
1107}
bool content_culled(const DlRect &content_bounds) const

References flutter::DisplayListMatrixClipState::content_culled().

◆ Restore()

void flutter::DisplayListBuilder::Restore ( )
overridevirtual

Implements flutter::DlCanvas.

Definition at line 559 of file dl_builder.cc.

559 {
560 if (save_stack_.size() <= 1) {
561 return;
562 }
563
564 if (!current_info().has_deferred_save_op) {
565 SaveOpBase* op = reinterpret_cast<SaveOpBase*>(storage_.base() +
566 current_info().save_offset);
567 FML_CHECK(op->type == DisplayListOpType::kSave ||
568 op->type == DisplayListOpType::kSaveLayer ||
569 op->type == DisplayListOpType::kSaveLayerBackdrop);
570
571 op->restore_index = op_index_;
572 op->total_content_depth = depth_ - current_info().save_depth;
573
574 if (current_info().is_save_layer) {
575 RestoreLayer();
576 }
577
578 // Wait until all outgoing bounds information for the saveLayer is
579 // recorded before pushing the record to the buffer so that any rtree
580 // bounds will be attributed to the op_index of the restore op.
581 Push<RestoreOp>(0);
582 } else {
583 FML_DCHECK(!current_info().is_save_layer);
584 }
585
586 save_stack_.pop_back();
587}
uint8_t * base()
Returns a pointer to the base of the storage.
Definition dl_storage.h:23
#define FML_CHECK(condition)
Definition logging.h:104
#define FML_DCHECK(condition)
Definition logging.h:122

References flutter::DisplayListStorage::base(), FML_CHECK, FML_DCHECK, flutter::SaveOpBase::restore_index, flutter::SaveOpBase::total_content_depth, and flutter::DLOp::type.

Referenced by flutter::BM_DisplayListBuilderWithGlobalSaveLayer(), flutter::BM_DisplayListBuilderWithSaveLayer(), flutter::BM_DisplayListBuilderWithSaveLayerAndImageFilter(), flutter::testing::BM_SaveLayer(), impeller::testing::DoGradientOvalStrokeMaskBlur(), impeller::interop::DisplayListBuilder::Restore(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), and flutter::testing::TEST_P().

◆ RestoreToCount()

void flutter::DisplayListBuilder::RestoreToCount ( int  restore_count)
overridevirtual

Implements flutter::DlCanvas.

Definition at line 795 of file dl_builder.cc.

795 {
796 FML_DCHECK(restore_count <= GetSaveCount());
797 while (restore_count < GetSaveCount() && GetSaveCount() > 1) {
798 restore();
799 }
800}
int GetSaveCount() const override
Definition dl_builder.h:62

References FML_DCHECK, and GetSaveCount().

Referenced by impeller::interop::DisplayListBuilder::RestoreToCount(), and impeller::testing::TEST_P().

◆ Rotate()

◆ Save()

void flutter::DisplayListBuilder::Save ( )
overridevirtual

Implements flutter::DlCanvas.

Definition at line 398 of file dl_builder.cc.

398 {
399 bool was_nop = current_info().is_nop;
400 save_stack_.emplace_back(&current_info());
401 current_info().is_nop = was_nop;
402
403 FML_DCHECK(save_stack_.size() >= 2u);
404 FML_DCHECK(current_info().has_deferred_save_op);
405}

References FML_DCHECK.

Referenced by impeller::testing::DoGradientOvalStrokeMaskBlur(), impeller::interop::DisplayListBuilder::Save(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), and impeller::testing::TEST_P().

◆ SaveLayer()

void flutter::DisplayListBuilder::SaveLayer ( const std::optional< DlRect > &  bounds,
const DlPaint paint = nullptr,
const DlImageFilter backdrop = nullptr,
std::optional< int64_t >  backdrop_id = std::nullopt 
)
overridevirtual

Implements flutter::DlCanvas.

Definition at line 539 of file dl_builder.cc.

542 {
543 SaveLayerOptions options;
544 DlRect temp_bounds;
545 if (bounds.has_value()) {
546 options = options.with_bounds_from_caller();
547 temp_bounds = *bounds;
548 } else {
549 FML_DCHECK(temp_bounds.IsEmpty());
550 }
551 if (paint != nullptr) {
552 options = options.with_renders_with_attributes();
553 SetAttributesFromPaint(*paint,
555 }
556 saveLayer(temp_bounds, options, backdrop, backdrop_id);
557}
flutter::SaveLayerOptions SaveLayerOptions

References FML_DCHECK, impeller::TRect< T >::IsEmpty(), flutter::DisplayListOpFlags::kSaveLayerWithPaintFlags, flutter::SaveLayerOptions::with_bounds_from_caller(), and flutter::SaveLayerOptions::with_renders_with_attributes().

Referenced by flutter::BM_DisplayListBuilderWithGlobalSaveLayer(), flutter::BM_DisplayListBuilderWithSaveLayer(), flutter::BM_DisplayListBuilderWithSaveLayerAndImageFilter(), flutter::testing::BM_SaveLayer(), impeller::interop::DisplayListBuilder::SaveLayer(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), and flutter::testing::TEST_P().

◆ Scale()

void flutter::DisplayListBuilder::Scale ( DlScalar  sx,
DlScalar  sy 
)
overridevirtual

Implements flutter::DlCanvas.

Definition at line 810 of file dl_builder.cc.

810 {
811 if (std::isfinite(sx) && std::isfinite(sy) && (sx != 1.0 || sy != 1.0)) {
812 checkForDeferredSave();
813 Push<ScaleOp>(0, sx, sy);
814 global_state().scale(sx, sy);
815 layer_local_state().scale(sx, sy);
816 }
817}
void scale(DlScalar sx, DlScalar sy)

References flutter::DisplayListMatrixClipState::scale().

Referenced by flutter::BM_DisplayListBuilderWithGlobalSaveLayer(), flutter::BM_DisplayListBuilderWithScaleAndTranslate(), impeller::testing::CanRenderConicalGradientWithDithering(), impeller::testing::CanRenderSweepGradientWithDithering(), impeller::testing::DoGradientOvalStrokeMaskBlur(), impeller::testing::MaskBlurVariantTest(), impeller::interop::DisplayListBuilder::Scale(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), flutter::testing::TEST_P(), and flutter::testing::TEST_P().

◆ SetTransform()

void flutter::DisplayListBuilder::SetTransform ( const DlMatrix matrix)
inlineoverridevirtual

Implements flutter::DlCanvas.

Definition at line 93 of file dl_builder.h.

93 {
95 Transform(matrix);
96 }
void TransformReset() override
void Transform(const DlMatrix &matrix) override

References Transform(), and TransformReset().

Referenced by impeller::interop::DisplayListBuilder::SetTransform(), flutter::testing::TEST(), and flutter::testing::TEST().

◆ Skew()

void flutter::DisplayListBuilder::Skew ( DlScalar  sx,
DlScalar  sy 
)
overridevirtual

Implements flutter::DlCanvas.

Definition at line 826 of file dl_builder.cc.

826 {
827 if (std::isfinite(sx) && std::isfinite(sy) && (sx != 0.0 || sy != 0.0)) {
828 checkForDeferredSave();
829 Push<SkewOp>(0, sx, sy);
830 global_state().skew(sx, sy);
831 layer_local_state().skew(sx, sy);
832 }
833}
void skew(DlScalar skx, DlScalar sky)

References flutter::DisplayListMatrixClipState::skew().

Referenced by flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), and impeller::testing::TEST_P().

◆ Transform()

void flutter::DisplayListBuilder::Transform ( const DlMatrix matrix)
overridevirtual

Implements flutter::DlCanvas.

Definition at line 922 of file dl_builder.cc.

922 {
924 matrix.e[0][0], matrix.e[1][0], matrix.e[2][0], matrix.e[3][0],
925 matrix.e[0][1], matrix.e[1][1], matrix.e[2][1], matrix.e[3][1],
926 matrix.e[0][2], matrix.e[1][2], matrix.e[2][2], matrix.e[3][2],
927 matrix.e[0][3], matrix.e[1][3], matrix.e[2][3], matrix.e[3][3]);
928}
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

References impeller::Matrix::e, and TransformFullPerspective().

Referenced by SetTransform(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), and impeller::interop::DisplayListBuilder::Transform().

◆ Transform2DAffine()

void flutter::DisplayListBuilder::Transform2DAffine ( DlScalar  mxx,
DlScalar  mxy,
DlScalar  mxt,
DlScalar  myx,
DlScalar  myy,
DlScalar  myt 
)
overridevirtual

Implements flutter::DlCanvas.

Definition at line 838 of file dl_builder.cc.

840 {
841 if (std::isfinite(mxx) && std::isfinite(myx) &&
842 std::isfinite(mxy) && std::isfinite(myy) &&
843 std::isfinite(mxt) && std::isfinite(myt)) {
844 if (mxx == 1 && mxy == 0 &&
845 myx == 0 && myy == 1) {
846 Translate(mxt, myt);
847 } else {
848 checkForDeferredSave();
849 Push<Transform2DAffineOp>(0,
850 mxx, mxy, mxt,
851 myx, myy, myt);
852 global_state().transform2DAffine(mxx, mxy, mxt,
853 myx, myy, myt);
854 layer_local_state().transform2DAffine(mxx, mxy, mxt,
855 myx, myy, myt);
856 }
857 }
858}
void Translate(DlScalar tx, DlScalar ty) override
void transform2DAffine(DlScalar mxx, DlScalar mxy, DlScalar mxt, DlScalar myx, DlScalar myy, DlScalar myt)

References flutter::DisplayListMatrixClipState::transform2DAffine(), and Translate().

Referenced by flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), and flutter::testing::TEST_F().

◆ TransformFullPerspective()

void flutter::DisplayListBuilder::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 
)
overridevirtual

Implements flutter::DlCanvas.

Definition at line 860 of file dl_builder.cc.

864 {
865 if ( mxz == 0 &&
866 myz == 0 &&
867 mzx == 0 && mzy == 0 && mzz == 1 && mzt == 0 &&
868 mwx == 0 && mwy == 0 && mwz == 0 && mwt == 1) {
869 transform2DAffine(mxx, mxy, mxt,
870 myx, myy, myt);
871 } else if (std::isfinite(mxx) && std::isfinite(mxy) &&
872 std::isfinite(mxz) && std::isfinite(mxt) &&
873 std::isfinite(myx) && std::isfinite(myy) &&
874 std::isfinite(myz) && std::isfinite(myt) &&
875 std::isfinite(mzx) && std::isfinite(mzy) &&
876 std::isfinite(mzz) && std::isfinite(mzt) &&
877 std::isfinite(mwx) && std::isfinite(mwy) &&
878 std::isfinite(mwz) && std::isfinite(mwt)) {
879 checkForDeferredSave();
880 Push<TransformFullPerspectiveOp>(0,
881 mxx, mxy, mxz, mxt,
882 myx, myy, myz, myt,
883 mzx, mzy, mzz, mzt,
884 mwx, mwy, mwz, mwt);
885 global_state().transformFullPerspective(mxx, mxy, mxz, mxt,
886 myx, myy, myz, myt,
887 mzx, mzy, mzz, mzt,
888 mwx, mwy, mwz, mwt);
889 layer_local_state().transformFullPerspective(mxx, mxy, mxz, mxt,
890 myx, myy, myz, myt,
891 mzx, mzy, mzz, mzt,
892 mwx, mwy, mwz, mwt);
893 }
894}
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)

References flutter::DisplayListMatrixClipState::transformFullPerspective().

Referenced by flutter::BM_DisplayListBuilderWithPerspective(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), impeller::testing::TEST_P(), and Transform().

◆ TransformReset()

void flutter::DisplayListBuilder::TransformReset ( )
overridevirtual

Implements flutter::DlCanvas.

Definition at line 896 of file dl_builder.cc.

896 {
897 checkForDeferredSave();
898 Push<TransformResetOp>(0);
899
900 // The matrices in layer_tracker_ and tracker_ are similar, but
901 // start at a different base transform. The tracker_ potentially
902 // has some number of transform operations on it that prefix the
903 // operations accumulated in layer_tracker_. So we can't set them both
904 // to identity in parallel as they would no longer maintain their
905 // relationship to each other.
906 // Instead we reinterpret this operation as transforming by the
907 // inverse of the current transform. Doing so to tracker_ sets it
908 // to identity so we can avoid the math there, but we must do the
909 // math the long way for layer_tracker_. This becomes:
910 // layer_tracker_.transform(tracker_.inverse());
911 if (!layer_local_state().inverseTransform(global_state())) {
912 // If the inverse operation failed then that means that either
913 // the matrix above the current layer was singular, or the matrix
914 // became singular while we were accumulating the current layer.
915 // In either case, we should no longer be accumulating any
916 // contents so we set the layer tracking transform to a singular one.
917 layer_local_state().setTransform(DlMatrix::MakeScale({0.0f, 0.0f, 0.0f}));
918 }
919
920 global_state().setIdentity();
921}
void setTransform(const DlMatrix &matrix)
static constexpr Matrix MakeScale(const Vector3 &s)
Definition matrix.h:104

References impeller::Matrix::MakeScale(), flutter::DisplayListMatrixClipState::setIdentity(), and flutter::DisplayListMatrixClipState::setTransform().

Referenced by impeller::interop::DisplayListBuilder::ResetTransform(), SetTransform(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), and flutter::testing::TEST_F().

◆ Translate()

void flutter::DisplayListBuilder::Translate ( DlScalar  tx,
DlScalar  ty 
)
overridevirtual

Implements flutter::DlCanvas.

Definition at line 802 of file dl_builder.cc.

802 {
803 if (std::isfinite(tx) && std::isfinite(ty) && (tx != 0.0 || ty != 0.0)) {
804 checkForDeferredSave();
805 Push<TranslateOp>(0, tx, ty);
806 global_state().translate(tx, ty);
807 layer_local_state().translate(tx, ty);
808 }
809}
void translate(DlScalar tx, DlScalar ty)

References flutter::DisplayListMatrixClipState::translate().

Referenced by flutter::BM_DisplayListBuilderWithGlobalSaveLayer(), flutter::BM_DisplayListBuilderWithScaleAndTranslate(), impeller::testing::CanRenderConicalGradientWithDithering(), impeller::testing::CanRenderLinearGradientWithDithering(), impeller::testing::CanRenderRadialGradientWithDithering(), impeller::testing::CanRenderSweepGradientWithDithering(), impeller::testing::DoGradientOvalStrokeMaskBlur(), impeller::testing::MaskBlurVariantTest(), flutter::testing::TEST(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), flutter::testing::TEST_P(), Transform2DAffine(), and impeller::interop::DisplayListBuilder::Translate().

Friends And Related Symbol Documentation

◆ DisplayListBuilderBenchmarkAccessor

DlOpReceiver & DisplayListBuilderBenchmarkAccessor ( DisplayListBuilder builder)
friend

Definition at line 11 of file dl_builder_benchmarks.cc.

11 {
12 return builder.asReceiver();
13}

◆ DisplayListBuilderTestingAccessor

DlOpReceiver & DisplayListBuilderTestingAccessor ( DisplayListBuilder builder)
friend

Definition at line 36 of file display_list_unittests.cc.

36 {
37 return builder.asReceiver();
38}

◆ DisplayListBuilderTestingAttributes

DlPaint DisplayListBuilderTestingAttributes ( DisplayListBuilder builder)
friend

Definition at line 40 of file display_list_unittests.cc.

40 {
41 return builder.CurrentAttributes();
42}

◆ DisplayListBuilderTestingLastOpIndex

int DisplayListBuilderTestingLastOpIndex ( DisplayListBuilder builder)
friend

Definition at line 44 of file display_list_unittests.cc.

44 {
45 return builder.LastOpIndex();
46}

Member Data Documentation

◆ kMaxCullRect

constexpr DlRect flutter::DisplayListBuilder::kMaxCullRect
staticconstexpr
Initial value:
=
DlRect::MakeLTRB(-1E9F, -1E9F, 1E9F, 1E9F)

Definition at line 32 of file dl_builder.h.

Referenced by flutter::DisplayListMatrixClipState::GetLocalCullCoverage().


The documentation for this class was generated from the following files: