Flutter Engine
 
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::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(), 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 965 of file dl_builder.cc.

967 {
968 if (!bounds.IsFinite()) {
969 return;
970 }
971 if (current_info().is_nop) {
972 return;
973 }
974 if (current_info().has_valid_clip && clip_op == DlClipOp::kIntersect &&
975 layer_local_state().oval_covers_cull(bounds)) {
976 return;
977 }
978 global_state().clipOval(bounds, clip_op, is_aa);
979 layer_local_state().clipOval(bounds, clip_op, is_aa);
980 if (global_state().is_cull_rect_empty() ||
981 layer_local_state().is_cull_rect_empty()) {
982 current_info().is_nop = true;
983 return;
984 }
985 current_info().has_valid_clip = true;
986 checkForDeferredSave();
987 switch (clip_op) {
989 Push<ClipIntersectOvalOp>(0, bounds, is_aa);
990 break;
992 Push<ClipDifferenceOvalOp>(0, bounds, is_aa);
993 break;
994 }
995}
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 1068 of file dl_builder.cc.

1070 {
1071 if (current_info().is_nop) {
1072 return;
1073 }
1074 {
1075 DlRect rect;
1076 if (path.IsRect(&rect)) {
1077 ClipRect(rect, clip_op, is_aa);
1078 return;
1079 }
1080 if (path.IsOval(&rect)) {
1081 ClipOval(rect, clip_op, is_aa);
1082 return;
1083 }
1084 DlRoundRect rrect;
1085 if (path.IsRoundRect(&rrect)) {
1086 ClipRoundRect(rrect, clip_op, is_aa);
1087 return;
1088 }
1089 }
1090 global_state().clipPath(path, clip_op, is_aa);
1091 layer_local_state().clipPath(path, clip_op, is_aa);
1092 if (global_state().is_cull_rect_empty() ||
1093 layer_local_state().is_cull_rect_empty()) {
1094 current_info().is_nop = true;
1095 return;
1096 }
1097 current_info().has_valid_clip = true;
1098 checkForDeferredSave();
1099 switch (clip_op) {
1101 Push<ClipIntersectPathOp>(0, path, is_aa);
1102 break;
1104 Push<ClipDifferencePathOp>(0, path, is_aa);
1105 break;
1106 }
1107}
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 934 of file dl_builder.cc.

936 {
937 if (!rect.IsFinite()) {
938 return;
939 }
940 if (current_info().is_nop) {
941 return;
942 }
943 if (current_info().has_valid_clip && clip_op == DlClipOp::kIntersect &&
944 layer_local_state().rect_covers_cull(rect)) {
945 return;
946 }
947 global_state().clipRect(rect, clip_op, is_aa);
948 layer_local_state().clipRect(rect, clip_op, is_aa);
949 if (global_state().is_cull_rect_empty() ||
950 layer_local_state().is_cull_rect_empty()) {
951 current_info().is_nop = true;
952 return;
953 }
954 current_info().has_valid_clip = true;
955 checkForDeferredSave();
956 switch (clip_op) {
958 Push<ClipIntersectRectOp>(0, rect, is_aa);
959 break;
961 Push<ClipDifferenceRectOp>(0, rect, is_aa);
962 break;
963 }
964}
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(), 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 996 of file dl_builder.cc.

998 {
999 if (rrect.IsRect()) {
1000 ClipRect(rrect.GetBounds(), clip_op, is_aa);
1001 return;
1002 }
1003 if (rrect.IsOval()) {
1004 ClipOval(rrect.GetBounds(), clip_op, is_aa);
1005 return;
1006 }
1007 if (current_info().is_nop) {
1008 return;
1009 }
1010 if (current_info().has_valid_clip && clip_op == DlClipOp::kIntersect &&
1011 layer_local_state().rrect_covers_cull(rrect)) {
1012 return;
1013 }
1014 global_state().clipRRect(rrect, clip_op, is_aa);
1015 layer_local_state().clipRRect(rrect, clip_op, is_aa);
1016 if (global_state().is_cull_rect_empty() ||
1017 layer_local_state().is_cull_rect_empty()) {
1018 current_info().is_nop = true;
1019 return;
1020 }
1021 current_info().has_valid_clip = true;
1022 checkForDeferredSave();
1023 switch (clip_op) {
1025 Push<ClipIntersectRoundRectOp>(0, rrect, is_aa);
1026 break;
1028 Push<ClipDifferenceRoundRectOp>(0, rrect, is_aa);
1029 break;
1030 }
1031}
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 1032 of file dl_builder.cc.

1034 {
1035 if (rse.IsRect()) {
1036 ClipRect(rse.GetBounds(), clip_op, is_aa);
1037 return;
1038 }
1039 if (rse.IsOval()) {
1040 ClipOval(rse.GetBounds(), clip_op, is_aa);
1041 return;
1042 }
1043 if (current_info().is_nop) {
1044 return;
1045 }
1046 if (current_info().has_valid_clip && clip_op == DlClipOp::kIntersect &&
1047 layer_local_state().rsuperellipse_covers_cull(rse)) {
1048 return;
1049 }
1050 global_state().clipRSuperellipse(rse, clip_op, is_aa);
1051 layer_local_state().clipRSuperellipse(rse, clip_op, is_aa);
1052 if (global_state().is_cull_rect_empty() ||
1053 layer_local_state().is_cull_rect_empty()) {
1054 current_info().is_nop = true;
1055 return;
1056 }
1057 current_info().has_valid_clip = true;
1058 checkForDeferredSave();
1059 switch (clip_op) {
1061 Push<ClipIntersectRoundSuperellipseOp>(0, rse, is_aa);
1062 break;
1064 Push<ClipDifferenceRoundSuperellipseOp>(0, rse, is_aa);
1065 break;
1066 }
1067}
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 1326 of file dl_builder.cc.

1330 {
1331 SetAttributesFromPaint(
1332 paint, useCenter ? kDrawArcWithCenterFlags : kDrawArcNoCenterFlags);
1333 drawArc(bounds, start, sweep, useCenter);
1334}
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 1611 of file dl_builder.cc.

1619 {
1620 if (paint != nullptr) {
1621 SetAttributesFromPaint(*paint,
1623 drawAtlas(atlas, xform, tex, colors, count, mode, sampling, cull_rect,
1624 true);
1625 } else {
1626 drawAtlas(atlas, xform, tex, colors, count, mode, sampling, cull_rect,
1627 false);
1628 }
1629}
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 1213 of file dl_builder.cc.

1215 {
1216 SetAttributesFromPaint(paint, DisplayListOpFlags::kDrawCircleFlags);
1217 drawCircle(center, radius);
1218}
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 1164 of file dl_builder.cc.

1168 {
1169 SetAttributesFromPaint(paint, DisplayListOpFlags::kDrawLineFlags);
1170 drawDashedLine(p0, p1, on_length, off_length);
1171}
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 1251 of file dl_builder.cc.

1253 {
1254 SetAttributesFromPaint(paint, DisplayListOpFlags::kDrawDRRectFlags);
1255 drawDiffRoundRect(outer, inner);
1256}
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 1631 of file dl_builder.cc.

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

1464 {
1465 if (paint != nullptr) {
1466 SetAttributesFromPaint(*paint,
1468 drawImage(image, point, sampling, true);
1469 } else {
1470 drawImage(image, point, sampling, false);
1471 }
1472}
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(), 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 1523 of file dl_builder.cc.

1527 {
1528 if (paint != nullptr) {
1529 SetAttributesFromPaint(*paint,
1531 drawImageNine(image, center, dst, filter, true);
1532 } else {
1533 drawImageNine(image, center, dst, filter, false);
1534 }
1535}
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 1121 of file dl_builder.cc.

1121 {
1122 SetAttributesFromPaint(paint, DisplayListOpFlags::kDrawPaintFlags);
1123 drawPaint();
1124}
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(), 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 1299 of file dl_builder.cc.

1299 {
1300 SetAttributesFromPaint(paint, DisplayListOpFlags::kDrawPathFlags);
1301 drawPath(path);
1302}
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 1182 of file dl_builder.cc.

1182 {
1183 SetAttributesFromPaint(paint, DisplayListOpFlags::kDrawRectFlags);
1184 drawRect(rect);
1185}
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(), 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 1282 of file dl_builder.cc.

1283 {
1284 SetAttributesFromPaint(paint, DisplayListOpFlags::kDrawRSuperellipseFlags);
1285 drawRoundSuperellipse(rse);
1286}
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 1739 of file dl_builder.cc.

1743 {
1744 OpResult result = PaintResult(DlPaint(color));
1745 if (result != OpResult::kNoEffect) {
1746 DlRect shadow_bounds =
1747 DlCanvas::ComputeShadowBounds(path, elevation, dpr, GetMatrix());
1748 if (AccumulateOpBounds(shadow_bounds, kDrawShadowFlags)) {
1749 transparent_occluder //
1750 ? Push<DrawShadowTransparentOccluderOp>(0, path, color, elevation,
1751 dpr)
1752 : Push<DrawShadowOp>(0, path, color, elevation, dpr);
1753 UpdateLayerOpacityCompatibility(false);
1754 UpdateLayerResult(result, DlBlendMode::kSrcOver);
1755 }
1756 }
1757}
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 1109 of file dl_builder.cc.

1109 {
1110 return global_state().content_culled(bounds);
1111}
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 563 of file dl_builder.cc.

563 {
564 if (save_stack_.size() <= 1) {
565 return;
566 }
567
568 if (!current_info().has_deferred_save_op) {
569 SaveOpBase* op = reinterpret_cast<SaveOpBase*>(storage_.base() +
570 current_info().save_offset);
571 FML_CHECK(op->type == DisplayListOpType::kSave ||
572 op->type == DisplayListOpType::kSaveLayer ||
573 op->type == DisplayListOpType::kSaveLayerBackdrop);
574
575 op->restore_index = op_index_;
576 op->total_content_depth = depth_ - current_info().save_depth;
577
578 if (current_info().is_save_layer) {
579 RestoreLayer();
580 }
581
582 // Wait until all outgoing bounds information for the saveLayer is
583 // recorded before pushing the record to the buffer so that any rtree
584 // bounds will be attributed to the op_index of the restore op.
585 Push<RestoreOp>(0);
586 } else {
587 FML_DCHECK(!current_info().is_save_layer);
588 }
589
590 save_stack_.pop_back();
591}
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(), and flutter::testing::TEST_P().

◆ RestoreToCount()

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

Implements flutter::DlCanvas.

Definition at line 799 of file dl_builder.cc.

799 {
800 FML_DCHECK(restore_count <= GetSaveCount());
801 while (restore_count < GetSaveCount() && GetSaveCount() > 1) {
802 restore();
803 }
804}
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(), 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 543 of file dl_builder.cc.

546 {
547 SaveLayerOptions options;
548 DlRect temp_bounds;
549 if (bounds.has_value()) {
550 options = options.with_bounds_from_caller();
551 temp_bounds = *bounds;
552 } else {
553 FML_DCHECK(temp_bounds.IsEmpty());
554 }
555 if (paint != nullptr) {
556 options = options.with_renders_with_attributes();
557 SetAttributesFromPaint(*paint,
559 }
560 saveLayer(temp_bounds, options, backdrop, backdrop_id);
561}
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(), and flutter::testing::TEST_P().

◆ Scale()

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

Implements flutter::DlCanvas.

Definition at line 814 of file dl_builder.cc.

814 {
815 if (std::isfinite(sx) && std::isfinite(sy) && (sx != 1.0 || sy != 1.0)) {
816 checkForDeferredSave();
817 Push<ScaleOp>(0, sx, sy);
818 global_state().scale(sx, sy);
819 layer_local_state().scale(sx, sy);
820 }
821}
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(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), 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 830 of file dl_builder.cc.

830 {
831 if (std::isfinite(sx) && std::isfinite(sy) && (sx != 0.0 || sy != 0.0)) {
832 checkForDeferredSave();
833 Push<SkewOp>(0, sx, sy);
834 global_state().skew(sx, sy);
835 layer_local_state().skew(sx, sy);
836 }
837}
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(), and impeller::testing::TEST_P().

◆ Transform()

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

Implements flutter::DlCanvas.

Definition at line 926 of file dl_builder.cc.

926 {
928 matrix.e[0][0], matrix.e[1][0], matrix.e[2][0], matrix.e[3][0],
929 matrix.e[0][1], matrix.e[1][1], matrix.e[2][1], matrix.e[3][1],
930 matrix.e[0][2], matrix.e[1][2], matrix.e[2][2], matrix.e[3][2],
931 matrix.e[0][3], matrix.e[1][3], matrix.e[2][3], matrix.e[3][3]);
932}
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 842 of file dl_builder.cc.

844 {
845 if (std::isfinite(mxx) && std::isfinite(myx) &&
846 std::isfinite(mxy) && std::isfinite(myy) &&
847 std::isfinite(mxt) && std::isfinite(myt)) {
848 if (mxx == 1 && mxy == 0 &&
849 myx == 0 && myy == 1) {
850 Translate(mxt, myt);
851 } else {
852 checkForDeferredSave();
853 Push<Transform2DAffineOp>(0,
854 mxx, mxy, mxt,
855 myx, myy, myt);
856 global_state().transform2DAffine(mxx, mxy, mxt,
857 myx, myy, myt);
858 layer_local_state().transform2DAffine(mxx, mxy, mxt,
859 myx, myy, myt);
860 }
861 }
862}
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 864 of file dl_builder.cc.

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

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

806 {
807 if (std::isfinite(tx) && std::isfinite(ty) && (tx != 0.0 || ty != 0.0)) {
808 checkForDeferredSave();
809 Push<TranslateOp>(0, tx, ty);
810 global_state().translate(tx, ty);
811 layer_local_state().translate(tx, ty);
812 }
813}
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: