Flutter Impeller
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 
9 namespace 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 
58  builder_.TransformReset();
59 }
60 
62  return builder_.GetSaveCount();
63 }
64 
65 void DisplayListBuilder::RestoreToCount(uint32_t count) {
66  builder_.RestoreToCount(count);
67 }
68 
70  flutter::DlCanvas::ClipOp op) {
71  builder_.ClipRect(rect, op);
72 }
73 
75  flutter::DlCanvas::ClipOp op) {
76  builder_.ClipOval(rect, op);
77 }
78 
80  const RoundingRadii& radii,
81  flutter::DlCanvas::ClipOp op) {
82  builder_.ClipRoundRect(RoundRect::MakeRectRadii(rect, radii), op);
83 }
84 
86  flutter::DlCanvas::ClipOp op) {
87  builder_.ClipPath(flutter::DlPath(path.GetPath()), op);
88 }
89 
90 void DisplayListBuilder::DrawRect(const Rect& rect, const Paint& paint) {
91  builder_.DrawRect(rect, paint.GetPaint());
92 }
93 
94 void DisplayListBuilder::DrawOval(const Rect& oval_bounds, const Paint& paint) {
95  builder_.DrawOval(oval_bounds, paint.GetPaint());
96 }
97 
99  const RoundingRadii& radii,
100  const Paint& paint) {
101  builder_.DrawRoundRect(RoundRect::MakeRectRadii(rect, radii),
102  paint.GetPaint());
103 }
104 
106  const Rect& outer_rect,
107  const RoundingRadii& outer_radii,
108  const Rect& inner_rect,
109  const RoundingRadii& inner_radii,
110  const Paint& paint) {
111  builder_.DrawDiffRoundRect(
112  RoundRect::MakeRectRadii(outer_rect, outer_radii), //
113  RoundRect::MakeRectRadii(inner_rect, inner_radii), //
114  paint.GetPaint() //
115  );
116 }
117 
118 void DisplayListBuilder::DrawPath(const Path& path, const Paint& paint) {
119  builder_.DrawPath(flutter::DlPath(path.GetPath()), paint.GetPaint());
120 }
121 
123  builder_.DrawPaint(paint.GetPaint());
124 }
125 
127  const Point& to,
128  const Paint& paint) {
129  builder_.DrawLine(from, to, paint.GetPaint());
130 }
131 
133  const Point& to,
134  Scalar on_length,
135  Scalar off_length,
136  const Paint& paint) {
137  builder_.DrawDashedLine(from, //
138  to, //
139  on_length, //
140  off_length, //
141  paint.GetPaint() //
142  );
143 }
144 
146  return Create<DisplayList>(builder_.Build());
147 }
148 
150  Scalar opacity) {
151  builder_.DrawDisplayList(dl.GetDisplayList(), opacity);
152 }
153 
155  const Point& point,
156  flutter::DlImageSampling sampling,
157  const Paint* paint) {
158  builder_.DrawImage(texture.MakeImage(), //
159  point, //
160  sampling, //
161  paint == nullptr ? nullptr : &paint->GetPaint() //
162  );
163 }
164 
166  const Rect& src_rect,
167  const Rect& dst_rect,
168  flutter::DlImageSampling sampling,
169  const Paint* paint) {
170  builder_.DrawImageRect(texture.MakeImage(), //
171  src_rect, //
172  dst_rect, //
173  sampling, //
174  paint == nullptr ? nullptr : &paint->GetPaint() //
175  );
176 }
177 
179  Point point) {
180  const auto& handle = paragraph.GetHandle();
181  if (!handle) {
182  return;
183  }
184  handle->Paint(&builder_, point.x, point.y);
185 }
186 
187 } // namespace impeller::interop
void DrawPaint(const Paint &paint)
Definition: dl_builder.cc:122
void ClipRoundedRect(const Rect &rect, const RoundingRadii &radii, flutter::DlCanvas::ClipOp op)
Definition: dl_builder.cc:79
void DrawLine(const Point &from, const Point &to, const Paint &paint)
Definition: dl_builder.cc:126
void RestoreToCount(uint32_t count)
Definition: dl_builder.cc:65
DisplayListBuilder(const ImpellerRect *rect)
Definition: dl_builder.cc:11
void ClipOval(const Rect &rect, flutter::DlCanvas::ClipOp op)
Definition: dl_builder.cc:74
void DrawTexture(const Texture &texture, const Point &point, flutter::DlImageSampling sampling, const Paint *paint)
Definition: dl_builder.cc:154
void DrawPath(const Path &path, const Paint &paint)
Definition: dl_builder.cc:118
void DrawDashedLine(const Point &from, const Point &to, Scalar on_length, Scalar off_length, const Paint &paint)
Definition: dl_builder.cc:132
void SaveLayer(const Rect &bounds, const Paint *paint, const ImageFilter *backdrop)
Definition: dl_builder.cc:20
void DrawDisplayList(const DisplayList &dl, Scalar opacity)
Definition: dl_builder.cc:149
void DrawRect(const Rect &rect, const Paint &paint)
Definition: dl_builder.cc:90
ScopedObject< DisplayList > Build()
Definition: dl_builder.cc:145
void ClipPath(const Path &path, flutter::DlCanvas::ClipOp op)
Definition: dl_builder.cc:85
void DrawParagraph(const Paragraph &paragraph, Point point)
Definition: dl_builder.cc:178
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:98
void DrawTextureRect(const Texture &texture, const Rect &src_rect, const Rect &dst_rect, flutter::DlImageSampling sampling, const Paint *paint)
Definition: dl_builder.cc:165
void ClipRect(const Rect &rect, flutter::DlCanvas::ClipOp op)
Definition: dl_builder.cc:69
void DrawRoundedRectDifference(const Rect &outer_rect, const RoundingRadii &outer_radii, const Rect &inner_rect, const RoundingRadii &inner_radii, const Paint &paint)
Definition: dl_builder.cc:105
void DrawOval(const Rect &oval_bounds, const Paint &paint)
Definition: dl_builder.cc:94
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
Definition: image_filter.cc:64
const flutter::DlPaint & GetPaint() const
Definition: paint.cc:13
const std::unique_ptr< txt::Paragraph > & GetHandle() const
Definition: paragraph.cc:46
const SkPath & GetPath() const
Definition: path.cc:13
sk_sp< DlImageImpeller > MakeImage() const
Definition: texture.cc:46
float Scalar
Definition: scalar.h:18
flutter::DlPath DlPath
Definition: dl_dispatcher.h:28
const Scalar scale
Scalar degrees
Definition: scalar.h:52
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