Flutter Engine
 
Loading...
Searching...
No Matches
dl_builder.cc
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
6
8
9namespace impeller::interop {
10
12 : builder_(rect) {}
13
15
17 builder_.Save();
18}
19
21 const Paint* paint,
22 const ImageFilter* backdrop) {
23 builder_.SaveLayer(
24 bounds, //
25 paint == nullptr ? nullptr : &paint->GetPaint(), //
26 backdrop == nullptr ? nullptr : backdrop->GetImageFilter().get());
27}
28
30 builder_.Restore();
31}
32
34 builder_.Scale(scale.width, scale.height);
35}
36
38 builder_.Rotate(angle.degrees);
39}
40
42 builder_.Translate(translation.x, translation.y);
43}
44
46 return builder_.GetMatrix();
47}
48
50 builder_.SetTransform(matrix);
51}
52
54 builder_.Transform(matrix);
55}
56
60
62 return builder_.GetSaveCount();
63}
64
66 builder_.RestoreToCount(count);
67}
68
70 builder_.ClipRect(rect, op);
71}
72
74 builder_.ClipOval(rect, op);
75}
76
78 const RoundingRadii& radii,
80 builder_.ClipRoundRect(RoundRect::MakeRectRadii(rect, radii), op);
81}
82
84 builder_.ClipPath(flutter::DlPath(path.GetPath()), op);
85}
86
87void DisplayListBuilder::DrawRect(const Rect& rect, const Paint& paint) {
88 builder_.DrawRect(rect, paint.GetPaint());
89}
90
91void DisplayListBuilder::DrawOval(const Rect& oval_bounds, const Paint& paint) {
92 builder_.DrawOval(oval_bounds, paint.GetPaint());
93}
94
96 const RoundingRadii& radii,
97 const Paint& paint) {
98 builder_.DrawRoundRect(RoundRect::MakeRectRadii(rect, radii),
99 paint.GetPaint());
100}
101
103 const Rect& outer_rect,
104 const RoundingRadii& outer_radii,
105 const Rect& inner_rect,
106 const RoundingRadii& inner_radii,
107 const Paint& paint) {
108 builder_.DrawDiffRoundRect(
109 RoundRect::MakeRectRadii(outer_rect, outer_radii), //
110 RoundRect::MakeRectRadii(inner_rect, inner_radii), //
111 paint.GetPaint() //
112 );
113}
114
115void DisplayListBuilder::DrawPath(const Path& path, const Paint& paint) {
116 builder_.DrawPath(flutter::DlPath(path.GetPath()), paint.GetPaint());
117}
118
120 builder_.DrawPaint(paint.GetPaint());
121}
122
124 const Point& to,
125 const Paint& paint) {
126 builder_.DrawLine(from, to, paint.GetPaint());
127}
128
130 const Point& to,
131 Scalar on_length,
132 Scalar off_length,
133 const Paint& paint) {
134 builder_.DrawDashedLine(from, //
135 to, //
136 on_length, //
137 off_length, //
138 paint.GetPaint() //
139 );
140}
141
143 return Create<DisplayList>(builder_.Build());
144}
145
147 Scalar opacity) {
148 builder_.DrawDisplayList(dl.GetDisplayList(), opacity);
149}
150
152 const Point& point,
154 const Paint* paint) {
155 builder_.DrawImage(texture.MakeImage(), //
156 point, //
157 sampling, //
158 paint == nullptr ? nullptr : &paint->GetPaint() //
159 );
160}
161
163 const Rect& src_rect,
164 const Rect& dst_rect,
166 const Paint* paint) {
167 builder_.DrawImageRect(texture.MakeImage(), //
168 src_rect, //
169 dst_rect, //
170 sampling, //
171 paint == nullptr ? nullptr : &paint->GetPaint() //
172 );
173}
174
176 Point point) {
177 const auto& handle = paragraph.GetHandle();
178 if (!handle) {
179 return;
180 }
181 handle->Paint(&builder_, point.x, point.y);
182}
183
185 const flutter::DlColor& color,
186 float elevation,
187 bool occluder_is_transparent,
188 float device_pixel_ratio) {
189 builder_.DrawShadow(flutter::DlPath(path.GetPath()), // path
190 color, // shadow color
191 elevation, // elevation
192 occluder_is_transparent, // occluder transparency
193 device_pixel_ratio // dpr
194 );
195}
196
197} // namespace impeller::interop
void DrawOval(const DlRect &bounds, const DlPaint &paint) override
void ClipRect(const DlRect &rect, DlClipOp clip_op=DlClipOp::kIntersect, bool is_aa=false) 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 DrawRoundRect(const DlRoundRect &rrect, const DlPaint &paint) override
void RestoreToCount(int restore_count) 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 it...
void DrawImage(const sk_sp< DlImage > &image, const DlPoint &point, DlImageSampling sampling, const DlPaint *paint=nullptr) override
void SetTransform(const DlMatrix &matrix) override
Definition dl_builder.h:93
DlMatrix GetMatrix() const override
Definition dl_builder.h:102
void TransformReset() 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 DrawLine(const DlPoint &p0, const DlPoint &p1, const DlPaint &paint) override
void ClipRoundRect(const DlRoundRect &rrect, DlClipOp clip_op=DlClipOp::kIntersect, bool is_aa=false) override
void Rotate(DlScalar degrees) override
void Scale(DlScalar sx, DlScalar sy) override
void DrawDisplayList(const sk_sp< DisplayList > display_list, DlScalar opacity=SK_Scalar1) override
void Translate(DlScalar tx, DlScalar ty) override
void DrawPaint(const DlPaint &paint) override
void DrawDashedLine(const DlPoint &p0, const DlPoint &p1, DlScalar on_length, DlScalar off_length, const DlPaint &paint) override
sk_sp< DisplayList > Build()
Definition dl_builder.cc:66
void DrawPath(const DlPath &path, const DlPaint &paint) override
void ClipPath(const DlPath &path, 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
int GetSaveCount() const override
Definition dl_builder.h:62
void DrawDiffRoundRect(const DlRoundRect &outer, const DlRoundRect &inner, const DlPaint &paint) override
void Transform(const DlMatrix &matrix) override
void DrawRect(const DlRect &rect, const DlPaint &paint) override
void DrawPaint(const Paint &paint)
void ClipRoundedRect(const Rect &rect, const RoundingRadii &radii, flutter::DlClipOp op)
Definition dl_builder.cc:77
void DrawLine(const Point &from, const Point &to, const Paint &paint)
void ClipOval(const Rect &rect, flutter::DlClipOp op)
Definition dl_builder.cc:73
void RestoreToCount(uint32_t count)
Definition dl_builder.cc:65
void DrawShadow(const Path &path, const flutter::DlColor &color, float elevation, bool occluder_is_transparent, float device_pixel_ratio)
DisplayListBuilder(const ImpellerRect *rect)
Definition dl_builder.cc:11
void DrawTexture(const Texture &texture, const Point &point, flutter::DlImageSampling sampling, const Paint *paint)
void DrawPath(const Path &path, const Paint &paint)
void DrawDashedLine(const Point &from, const Point &to, Scalar on_length, Scalar off_length, const Paint &paint)
void SaveLayer(const Rect &bounds, const Paint *paint, const ImageFilter *backdrop)
Definition dl_builder.cc:20
void DrawDisplayList(const DisplayList &dl, Scalar opacity)
void DrawRect(const Rect &rect, const Paint &paint)
Definition dl_builder.cc:87
ScopedObject< DisplayList > Build()
void ClipRect(const Rect &rect, flutter::DlClipOp op)
Definition dl_builder.cc:69
void DrawParagraph(const Paragraph &paragraph, Point point)
void Translate(Point translation)
Definition dl_builder.cc:41
void Transform(const Matrix &matrix)
Definition dl_builder.cc:53
void DrawRoundedRect(const Rect &rect, const RoundingRadii &radii, const Paint &paint)
Definition dl_builder.cc:95
void DrawTextureRect(const Texture &texture, const Rect &src_rect, const Rect &dst_rect, flutter::DlImageSampling sampling, const Paint *paint)
void ClipPath(const Path &path, flutter::DlClipOp op)
Definition dl_builder.cc:83
void DrawRoundedRectDifference(const Rect &outer_rect, const RoundingRadii &outer_radii, const Rect &inner_rect, const RoundingRadii &inner_radii, const Paint &paint)
void DrawOval(const Rect &oval_bounds, const Paint &paint)
Definition dl_builder.cc:91
void SetTransform(const Matrix &matrix)
Definition dl_builder.cc:49
const sk_sp< flutter::DisplayList > GetDisplayList() const
Definition dl.cc:18
const std::shared_ptr< flutter::DlImageFilter > & GetImageFilter() const
const flutter::DlPaint & GetPaint() const
Definition paint.cc:13
const std::unique_ptr< txt::Paragraph > & GetHandle() const
Definition paragraph.cc:46
FlTexture * texture
float Scalar
Definition scalar.h:19
Scalar degrees
Definition scalar.h:67
A 4x4 matrix using column-major storage.
Definition matrix.h:37
static RoundRect MakeRectRadii(const Rect &rect, const RoundingRadii &radii)
Definition round_rect.cc:9
Type height
Definition size.h:29
Type width
Definition size.h:28