| Flutter Impeller |

dl_dispatcher.h
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
5 #ifndef FLUTTER_IMPELLER_DISPLAY_LIST_DL_DISPATCHER_H_
6 #define FLUTTER_IMPELLER_DISPLAY_LIST_DL_DISPATCHER_H_
7
8 #include "flutter/display_list/dl_op_receiver.h"
9 #include "flutter/display_list/geometry/dl_geometry_types.h"
10 #include "flutter/display_list/geometry/dl_path.h"
11 #include "flutter/display_list/utils/dl_receiver_utils.h"
12 #include "fml/logging.h"
13 #include "impeller/display_list/aiks_context.h"
14 #include "impeller/display_list/canvas.h"
15 #include "impeller/display_list/paint.h"
16 #include "impeller/entity/contents/content_context.h"
17 #include "impeller/geometry/rect.h"
18
19 namespace impeller {
20
21 using DlScalar = flutter::DlScalar;
22 using DlPoint = flutter::DlPoint;
23 using DlRect = flutter::DlRect;
24 using DlIRect = flutter::DlIRect;
25 using DlPath = flutter::DlPath;
26
27 class DlDispatcherBase : public flutter::DlOpReceiver {
28 public:
29 // |flutter::DlOpReceiver|
30 void setAntiAlias(bool aa) override;
31
32 // |flutter::DlOpReceiver|
33 void setDrawStyle(flutter::DlDrawStyle style) override;
34
35 // |flutter::DlOpReceiver|
36 void setColor(flutter::DlColor color) override;
37
38 // |flutter::DlOpReceiver|
39 void setStrokeWidth(DlScalar width) override;
40
41 // |flutter::DlOpReceiver|
42 void setStrokeMiter(DlScalar limit) override;
43
44 // |flutter::DlOpReceiver|
45 void setStrokeCap(flutter::DlStrokeCap cap) override;
46
47 // |flutter::DlOpReceiver|
48 void setStrokeJoin(flutter::DlStrokeJoin join) override;
49
50 // |flutter::DlOpReceiver|
51 void setColorSource(const flutter::DlColorSource* source) override;
52
53 // |flutter::DlOpReceiver|
54 void setColorFilter(const flutter::DlColorFilter* filter) override;
55
56 // |flutter::DlOpReceiver|
57 void setInvertColors(bool invert) override;
58
59 // |flutter::DlOpReceiver|
60 void setBlendMode(flutter::DlBlendMode mode) override;
61
62 // |flutter::DlOpReceiver|
63 void setMaskFilter(const flutter::DlMaskFilter* filter) override;
64
65 // |flutter::DlOpReceiver|
66 void setImageFilter(const flutter::DlImageFilter* filter) override;
67
68 // |flutter::DlOpReceiver|
69 void save(uint32_t total_content_depth) override;
70
71 // |flutter::DlOpReceiver|
72 void saveLayer(const DlRect& bounds,
73 const flutter::SaveLayerOptions& options,
74 uint32_t total_content_depth,
75 flutter::DlBlendMode max_content_mode,
76 const flutter::DlImageFilter* backdrop) override;
77
78 // |flutter::DlOpReceiver|
79 void restore() override;
80
81 // |flutter::DlOpReceiver|
82 void translate(DlScalar tx, DlScalar ty) override;
83
84 // |flutter::DlOpReceiver|
85 void scale(DlScalar sx, DlScalar sy) override;
86
87 // |flutter::DlOpReceiver|
88 void rotate(DlScalar degrees) override;
89
90 // |flutter::DlOpReceiver|
91 void skew(DlScalar sx, DlScalar sy) override;
92
93 // |flutter::DlOpReceiver|
94 void transform2DAffine(DlScalar mxx,
95 DlScalar mxy,
96 DlScalar mxt,
97 DlScalar myx,
98 DlScalar myy,
99 DlScalar myt) override;
100
101 // |flutter::DlOpReceiver|
102 void transformFullPerspective(DlScalar mxx,
103 DlScalar mxy,
104 DlScalar mxz,
105 DlScalar mxt,
106 DlScalar myx,
107 DlScalar myy,
108 DlScalar myz,
109 DlScalar myt,
110 DlScalar mzx,
111 DlScalar mzy,
112 DlScalar mzz,
113 DlScalar mzt,
114 DlScalar mwx,
115 DlScalar mwy,
116 DlScalar mwz,
117 DlScalar mwt) override;
118
119 // |flutter::DlOpReceiver|
120 void transformReset() override;
121
122 // |flutter::DlOpReceiver|
123 void clipRect(const DlRect& rect, ClipOp clip_op, bool is_aa) override;
124
125 // |flutter::DlOpReceiver|
126 void clipOval(const DlRect& bounds, ClipOp clip_op, bool is_aa) override;
127
128 // |flutter::DlOpReceiver|
129 void clipRRect(const SkRRect& rrect, ClipOp clip_op, bool is_aa) override;
130
131 // |flutter::DlOpReceiver|
132 void clipPath(const DlPath& path, ClipOp clip_op, bool is_aa) override;
133
134 // |flutter::DlOpReceiver|
135 void drawColor(flutter::DlColor color, flutter::DlBlendMode mode) override;
136
137 // |flutter::DlOpReceiver|
138 void drawPaint() override;
139
140 // |flutter::DlOpReceiver|
141 void drawLine(const DlPoint& p0, const DlPoint& p1) override;
142
143 // |flutter::DlOpReceiver|
144 void drawDashedLine(const DlPoint& p0,
145 const DlPoint& p1,
146 DlScalar on_length,
147 DlScalar off_length) override;
148
149 // |flutter::DlOpReceiver|
150 void drawRect(const DlRect& rect) override;
151
152 // |flutter::DlOpReceiver|
153 void drawOval(const DlRect& bounds) override;
154
155 // |flutter::DlOpReceiver|
156 void drawCircle(const DlPoint& center, DlScalar radius) override;
157
158 // |flutter::DlOpReceiver|
159 void drawRRect(const SkRRect& rrect) override;
160
161 // |flutter::DlOpReceiver|
162 void drawDRRect(const SkRRect& outer, const SkRRect& inner) override;
163
164 // |flutter::DlOpReceiver|
165 void drawPath(const DlPath& path) override;
166
167 // |flutter::DlOpReceiver|
168 void drawArc(const DlRect& oval_bounds,
169 DlScalar start_degrees,
170 DlScalar sweep_degrees,
171 bool use_center) override;
172
173 // |flutter::DlOpReceiver|
174 void drawPoints(PointMode mode,
175 uint32_t count,
176 const DlPoint points[]) override;
177
178 // |flutter::DlOpReceiver|
179 void drawVertices(const std::shared_ptr<flutter::DlVertices>& vertices,
180 flutter::DlBlendMode dl_mode) override;
181
182 // |flutter::DlOpReceiver|
183 void drawImage(const sk_sp<flutter::DlImage> image,
184 const DlPoint& point,
185 flutter::DlImageSampling sampling,
186 bool render_with_attributes) override;
187
188 // |flutter::DlOpReceiver|
189 void drawImageRect(const sk_sp<flutter::DlImage> image,
190 const DlRect& src,
191 const DlRect& dst,
192 flutter::DlImageSampling sampling,
193 bool render_with_attributes,
194 SrcRectConstraint constraint) override;
195
196 // |flutter::DlOpReceiver|
197 void drawImageNine(const sk_sp<flutter::DlImage> image,
198 const DlIRect& center,
199 const DlRect& dst,
200 flutter::DlFilterMode filter,
201 bool render_with_attributes) override;
202
203 // |flutter::DlOpReceiver|
204 void drawAtlas(const sk_sp<flutter::DlImage> atlas,
205 const SkRSXform xform[],
206 const DlRect tex[],
207 const flutter::DlColor colors[],
208 int count,
209 flutter::DlBlendMode mode,
210 flutter::DlImageSampling sampling,
211 const DlRect* cull_rect,
212 bool render_with_attributes) override;
213
214 // |flutter::DlOpReceiver|
215 void drawDisplayList(const sk_sp<flutter::DisplayList> display_list,
216 DlScalar opacity) override;
217
218 // |flutter::DlOpReceiver|
219 void drawTextBlob(const sk_sp<SkTextBlob> blob,
220 DlScalar x,
221 DlScalar y) override;
222
223 // |flutter::DlOpReceiver|
224 void drawTextFrame(const std::shared_ptr<impeller::TextFrame>& text_frame,
225 DlScalar x,
226 DlScalar y) override;
227
228 // |flutter::DlOpReceiver|
229 void drawShadow(const DlPath& path,
230 const flutter::DlColor color,
231 const DlScalar elevation,
232 bool transparent_occluder,
233 DlScalar dpr) override;
234
235 virtual Canvas& GetCanvas() = 0;
236
237 protected:
238 Paint paint_;
239 Matrix initial_matrix_;
240
241 static void SimplifyOrDrawPath(Canvas& canvas,
242 const DlPath& cache,
243 const Paint& paint);
244 };
245
246 class CanvasDlDispatcher : public DlDispatcherBase {
247 public:
248 CanvasDlDispatcher(ContentContext& renderer,
249 RenderTarget& render_target,
250 bool has_root_backdrop_filter,
251 flutter::DlBlendMode max_root_blend_mode,
252 IRect cull_rect);
253
254 ~CanvasDlDispatcher() = default;
255
256 // |flutter::DlOpReceiver|
257 void save() override {
258 // This dispatcher should never be used with the save() variant
259 // that does not include the content_depth parameter.
260 FML_UNREACHABLE();
261 }
262 using DlDispatcherBase::save;
263
264 // |flutter::DlOpReceiver|
265 void saveLayer(const DlRect& bounds,
266 const flutter::SaveLayerOptions options,
267 const flutter::DlImageFilter* backdrop) override {
268 // This dispatcher should never be used with the saveLayer() variant
269 // that does not include the content_depth parameter.
270 FML_UNREACHABLE();
271 }
272 using DlDispatcherBase::saveLayer;
273
274 void FinishRecording() { canvas_.EndReplay(); }
275
276 // |flutter::DlOpReceiver|
277 void drawVertices(const std::shared_ptr<flutter::DlVertices>& vertices,
278 flutter::DlBlendMode dl_mode) override;
279
280 private:
281 Canvas canvas_;
282 const ContentContext& renderer_;
283
284 Canvas& GetCanvas() override;
285 };
286
287 /// Performs a first pass over the display list to collect all text frames.
288 class TextFrameDispatcher : public flutter::IgnoreAttributeDispatchHelper,
289 public flutter::IgnoreClipDispatchHelper,
290 public flutter::IgnoreDrawDispatchHelper {
291 public:
292 TextFrameDispatcher(const ContentContext& renderer,
293 const Matrix& initial_matrix,
294 const Rect cull_rect);
295
296 ~TextFrameDispatcher();
297
298 void save() override;
299
300 void saveLayer(const DlRect& bounds,
301 const flutter::SaveLayerOptions options,
302 const flutter::DlImageFilter* backdrop) override;
303
304 void restore() override;
305
306 void translate(DlScalar tx, DlScalar ty) override;
307
308 void scale(DlScalar sx, DlScalar sy) override;
309
310 void rotate(DlScalar degrees) override;
311
312 void skew(DlScalar sx, DlScalar sy) override;
313
314 // clang-format off
315 // 2x3 2D affine subset of a 4x4 transform in row major order
316 void transform2DAffine(DlScalar mxx, DlScalar mxy, DlScalar mxt,
317 DlScalar myx, DlScalar myy, DlScalar myt) override;
318
319 // full 4x4 transform in row major order
320 void transformFullPerspective(
321 DlScalar mxx, DlScalar mxy, DlScalar mxz, DlScalar mxt,
322 DlScalar myx, DlScalar myy, DlScalar myz, DlScalar myt,
323 DlScalar mzx, DlScalar mzy, DlScalar mzz, DlScalar mzt,
324 DlScalar mwx, DlScalar mwy, DlScalar mwz, DlScalar mwt) override;
325
326 void transformReset() override;
327
328 void drawTextFrame(const std::shared_ptr<impeller::TextFrame>& text_frame,
329 DlScalar x,
330 DlScalar y) override;
331
332 void drawDisplayList(const sk_sp<flutter::DisplayList> display_list,
333 DlScalar opacity) override;
334
335 // |flutter::DlOpReceiver|
336 void setDrawStyle(flutter::DlDrawStyle style) override;
337
338 // |flutter::DlOpReceiver|
339 void setColor(flutter::DlColor color) override;
340
341 // |flutter::DlOpReceiver|
342 void setStrokeWidth(DlScalar width) override;
343
344 // |flutter::DlOpReceiver|
345 void setStrokeMiter(DlScalar limit) override;
346
347 // |flutter::DlOpReceiver|
348 void setStrokeCap(flutter::DlStrokeCap cap) override;
349
350 // |flutter::DlOpReceiver|
351 void setStrokeJoin(flutter::DlStrokeJoin join) override;
352
353 // |flutter::DlOpReceiver|
354 void setImageFilter(const flutter::DlImageFilter* filter) override;
355
356 private:
357 const Rect GetCurrentLocalCullingBounds() const;
358
359 const ContentContext& renderer_;
360 Matrix matrix_;
361 std::vector<Matrix> stack_;
362 // note: cull rects are always in the global coordinate space.
363 std::vector<Rect> cull_rect_state_;
364 bool has_image_filter_ = false;
365 Paint paint_;
366 };
367
368 /// Render the provided display list to a texture with the given size.
369 std::shared_ptr<Texture> DisplayListToTexture(
370 const sk_sp<flutter::DisplayList>& display_list,
371 ISize size,
372 AiksContext& context,
373 bool reset_host_buffer = true,
374 bool generate_mips = false);
375
376 /// Render the provided display list to the render target.
377 bool RenderToOnscreen(ContentContext& context, RenderTarget render_target,
378 const sk_sp<flutter::DisplayList>& display_list,
379 SkIRect cull_rect,
380 bool reset_host_buffer);
381
382 } // namespace impeller
383
384 #endif // FLUTTER_IMPELLER_DISPLAY_LIST_DL_DISPATCHER_H_
impeller::DlDispatcherBase::drawDRRect
void drawDRRect(const SkRRect &outer, const SkRRect &inner) override
Definition: dl_dispatcher.cc:598
impeller::CanvasDlDispatcher
Definition: dl_dispatcher.h:246
impeller::DlDispatcherBase::transformReset
void transformReset() override
Definition: dl_dispatcher.cc:411
impeller::CanvasDlDispatcher::FinishRecording
void FinishRecording()
Definition: dl_dispatcher.h:274
impeller::TextFrameDispatcher::setStrokeWidth
void setStrokeWidth(DlScalar width) override
Definition: dl_dispatcher.cc:1147
impeller::DlDispatcherBase::drawRect
void drawRect(const DlRect &rect) override
Definition: dl_dispatcher.cc:564
impeller::TextFrameDispatcher::scale
void scale(DlScalar sx, DlScalar sy) override
Definition: dl_dispatcher.cc:1026
impeller::AiksContext
Definition: aiks_context.h:19
impeller::DlDispatcherBase::save
void save(uint32_t total_content_depth) override
Definition: dl_dispatcher.cc:294
impeller::DlDispatcherBase::drawColor
void drawColor(flutter::DlColor color, flutter::DlBlendMode mode) override
Definition: dl_dispatcher.cc:498
impeller::TextFrameDispatcher::setDrawStyle
void setDrawStyle(flutter::DlDrawStyle style) override
Definition: dl_dispatcher.cc:1137
impeller::DlDispatcherBase::drawImageRect
void drawImageRect(const sk_sp< flutter::DlImage > image, const DlRect &src, const DlRect &dst, flutter::DlImageSampling sampling, bool render_with_attributes, SrcRectConstraint constraint) override
Definition: dl_dispatcher.cc:728
impeller::TextFrameDispatcher::TextFrameDispatcher
TextFrameDispatcher(const ContentContext &renderer, const Matrix &initial_matrix, const Rect cull_rect)
Definition: dl_dispatcher.cc:979
impeller::TextFrameDispatcher::setStrokeJoin
void setStrokeJoin(flutter::DlStrokeJoin join) override
Definition: dl_dispatcher.cc:1172
impeller::Paint
Definition: paint.h:26
impeller::DlDispatcherBase::setStrokeCap
void setStrokeCap(flutter::DlStrokeCap cap) override
Definition: dl_dispatcher.cc:185
impeller::DlDispatcherBase::scale
void scale(DlScalar sx, DlScalar sy) override
Definition: dl_dispatcher.cc:339
impeller::DlDispatcherBase::saveLayer
void saveLayer(const DlRect &bounds, const flutter::SaveLayerOptions &options, uint32_t total_content_depth, flutter::DlBlendMode max_content_mode, const flutter::DlImageFilter *backdrop) override
Definition: dl_dispatcher.cc:301
impeller::RenderToOnscreen
bool RenderToOnscreen(ContentContext &context, RenderTarget render_target, const sk_sp< flutter::DisplayList > &display_list, SkIRect cull_rect, bool reset_host_buffer)
Render the provided display list to the render target.
Definition: dl_dispatcher.cc:1253
impeller::TextFrameDispatcher::restore
void restore() override
Definition: dl_dispatcher.cc:1016
impeller::DlPath
flutter::DlPath DlPath
Definition: dl_dispatcher.h:25
impeller::TextFrameDispatcher::save
void save() override
Definition: dl_dispatcher.cc:990
impeller::DlDispatcherBase::drawTextFrame
void drawTextFrame(const std::shared_ptr< impeller::TextFrame > &text_frame, DlScalar x, DlScalar y) override
Definition: dl_dispatcher.cc:867
aiks_context.h
impeller::Canvas
Definition: canvas.h:101
impeller::TextFrameDispatcher::translate
void translate(DlScalar tx, DlScalar ty) override
Definition: dl_dispatcher.cc:1022
impeller::CanvasDlDispatcher::~CanvasDlDispatcher
~CanvasDlDispatcher()=default
impeller::TextFrameDispatcher::setStrokeCap
void setStrokeCap(flutter::DlStrokeCap cap) override
Definition: dl_dispatcher.cc:1157
impeller::DlDispatcherBase::setColorFilter
void setColorFilter(const flutter::DlColorFilter *filter) override
Definition: dl_dispatcher.cc:230
impeller::DlDispatcherBase::drawShadow
void drawShadow(const DlPath &path, const flutter::DlColor color, const DlScalar elevation, bool transparent_occluder, DlScalar dpr) override
Definition: dl_dispatcher.cc:880
impeller::TextFrameDispatcher::drawTextFrame
void drawTextFrame(const std::shared_ptr< impeller::TextFrame > &text_frame, DlScalar x, DlScalar y) override
Definition: dl_dispatcher.cc:1069
impeller::DlIRect
flutter::DlIRect DlIRect
Definition: dl_dispatcher.h:24
impeller::DlDispatcherBase::drawCircle
void drawCircle(const DlPoint &center, DlScalar radius) override
Definition: dl_dispatcher.cc:578
impeller::DlDispatcherBase::setStrokeMiter
void setStrokeMiter(DlScalar limit) override
Definition: dl_dispatcher.cc:178
impeller::DlDispatcherBase::translate
void translate(DlScalar tx, DlScalar ty) override
Definition: dl_dispatcher.cc:332
impeller::TextFrameDispatcher::setImageFilter
void setImageFilter(const flutter::DlImageFilter *filter) override
Definition: dl_dispatcher.cc:1187
impeller::DlDispatcherBase::drawLine
void drawLine(const DlPoint &p0, const DlPoint &p1) override
Definition: dl_dispatcher.cc:516
impeller::DlDispatcherBase::drawAtlas
void drawAtlas(const sk_sp< flutter::DlImage > atlas, const SkRSXform xform[], const DlRect tex[], const flutter::DlColor colors[], int count, flutter::DlBlendMode mode, flutter::DlImageSampling sampling, const DlRect *cull_rect, bool render_with_attributes) override
Definition: dl_dispatcher.cc:763
impeller::DlDispatcherBase::drawVertices
void drawVertices(const std::shared_ptr< flutter::DlVertices > &vertices, flutter::DlBlendMode dl_mode) override
Definition: dl_dispatcher.cc:694
impeller::TextFrameDispatcher::transform2DAffine
void transform2DAffine(DlScalar mxx, DlScalar mxy, DlScalar mxt, DlScalar myx, DlScalar myy, DlScalar myt) override
Definition: dl_dispatcher.cc:1040
impeller::TextFrameDispatcher::setColor
void setColor(flutter::DlColor color) override
Definition: dl_dispatcher.cc:1142
impeller::TextFrameDispatcher::transformFullPerspective
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
Definition: dl_dispatcher.cc:1051
impeller::TSize
Definition: size.h:19
impeller::TextFrameDispatcher::~TextFrameDispatcher
~TextFrameDispatcher()
Definition: dl_dispatcher.cc:986
impeller::DlDispatcherBase::drawRRect
void drawRRect(const SkRRect &rrect) override
Definition: dl_dispatcher.cc:585
impeller::DlDispatcherBase::drawPoints
void drawPoints(PointMode mode, uint32_t count, const DlPoint points[]) override
Definition: dl_dispatcher.cc:655
impeller::DlDispatcherBase::setImageFilter
void setImageFilter(const flutter::DlImageFilter *filter) override
Definition: dl_dispatcher.cc:287
impeller::DlDispatcherBase::clipPath
void clipPath(const DlPath &path, ClipOp clip_op, bool is_aa) override
Definition: dl_dispatcher.cc:473
impeller::DlDispatcherBase::setColorSource
void setColorSource(const flutter::DlColorSource *source) override
Definition: dl_dispatcher.cc:219
impeller::DlDispatcherBase::setDrawStyle
void setDrawStyle(flutter::DlDrawStyle style) override
Definition: dl_dispatcher.cc:157
impeller::DlDispatcherBase::setStrokeJoin
void setStrokeJoin(flutter::DlStrokeJoin join) override
Definition: dl_dispatcher.cc:202
impeller::TextFrameDispatcher::transformReset
void transformReset() override
Definition: dl_dispatcher.cc:1065
impeller::DlDispatcherBase::skew
void skew(DlScalar sx, DlScalar sy) override
Definition: dl_dispatcher.cc:353
impeller::DlRect
flutter::DlRect DlRect
Definition: dl_dispatcher.h:23
impeller::CanvasDlDispatcher::drawVertices
void drawVertices(const std::shared_ptr< flutter::DlVertices > &vertices, flutter::DlBlendMode dl_mode) override
Definition: dl_dispatcher.cc:967
impeller::TextFrameDispatcher::rotate
void rotate(DlScalar degrees) override
Definition: dl_dispatcher.cc:1030
impeller::DlDispatcherBase::setAntiAlias
void setAntiAlias(bool aa) override
Definition: dl_dispatcher.cc:137
impeller::CanvasDlDispatcher::CanvasDlDispatcher
CanvasDlDispatcher(ContentContext &renderer, RenderTarget &render_target, bool has_root_backdrop_filter, flutter::DlBlendMode max_root_blend_mode, IRect cull_rect)
Definition: dl_dispatcher.cc:951
canvas.h
impeller::RenderTarget
Definition: render_target.h:38
impeller::DlDispatcherBase::drawPath
void drawPath(const DlPath &path) override
Definition: dl_dispatcher.cc:608
impeller::DlDispatcherBase::GetCanvas
virtual Canvas & GetCanvas()=0
impeller::DlDispatcherBase::drawImageNine
void drawImageNine(const sk_sp< flutter::DlImage > image, const DlIRect &center, const DlRect &dst, flutter::DlFilterMode filter, bool render_with_attributes) override
Definition: dl_dispatcher.cc:747
impeller::DlDispatcherBase::clipRRect
void clipRRect(const SkRRect &rrect, ClipOp clip_op, bool is_aa) override
Definition: dl_dispatcher.cc:448
impeller::TextFrameDispatcher::saveLayer
void saveLayer(const DlRect &bounds, const flutter::SaveLayerOptions options, const flutter::DlImageFilter *backdrop) override
Definition: dl_dispatcher.cc:995
impeller::DlDispatcherBase::SimplifyOrDrawPath
static void SimplifyOrDrawPath(Canvas &canvas, const DlPath &cache, const Paint &paint)
Definition: dl_dispatcher.cc:614
impeller::DlDispatcherBase::drawDashedLine
void drawDashedLine(const DlPoint &p0, const DlPoint &p1, DlScalar on_length, DlScalar off_length) override
Definition: dl_dispatcher.cc:522
impeller::DlDispatcherBase::drawDisplayList
void drawDisplayList(const sk_sp< flutter::DisplayList > display_list, DlScalar opacity) override
Definition: dl_dispatcher.cc:791
impeller::DlDispatcherBase::drawArc
void drawArc(const DlRect &oval_bounds, DlScalar start_degrees, DlScalar sweep_degrees, bool use_center) override
Definition: dl_dispatcher.cc:642
impeller::TextFrameDispatcher::drawDisplayList
void drawDisplayList(const sk_sp< flutter::DisplayList > display_list, DlScalar opacity) override
Definition: dl_dispatcher.cc:1104
content_context.h
impeller::DlDispatcherBase::setBlendMode
void setBlendMode(flutter::DlBlendMode mode) override
Definition: dl_dispatcher.cc:244
impeller::TextFrameDispatcher::setStrokeMiter
void setStrokeMiter(DlScalar limit) override
Definition: dl_dispatcher.cc:1152
impeller::DlPoint
flutter::DlPoint DlPoint
Definition: dl_dispatcher.h:22
rect.h
impeller::DlDispatcherBase::paint_
Paint paint_
Definition: dl_dispatcher.h:238
impeller::DlDispatcherBase::transform2DAffine
void transform2DAffine(DlScalar mxx, DlScalar mxy, DlScalar mxt, DlScalar myx, DlScalar myy, DlScalar myt) override
Definition: dl_dispatcher.cc:360
impeller::TextFrameDispatcher::skew
void skew(DlScalar sx, DlScalar sy) override
Definition: dl_dispatcher.cc:1034
impeller::DlDispatcherBase::setColor
void setColor(flutter::DlColor color) override
Definition: dl_dispatcher.cc:164
impeller::DlDispatcherBase::setStrokeWidth
void setStrokeWidth(DlScalar width) override
Definition: dl_dispatcher.cc:171
color
DlColor color
Definition: dl_golden_blur_unittests.cc:24
impeller::DisplayListToTexture
std::shared_ptr< Texture > DisplayListToTexture(const sk_sp< flutter::DisplayList > &display_list, ISize size, AiksContext &context, bool reset_host_buffer, bool generate_mips)
Render the provided display list to a texture with the given size.
Definition: dl_dispatcher.cc:1195
impeller::DlDispatcherBase::restore
void restore() override
Definition: dl_dispatcher.cc:327
impeller::DlDispatcherBase::initial_matrix_
Matrix initial_matrix_
Definition: dl_dispatcher.h:239
impeller::DlDispatcherBase::drawPaint
void drawPaint() override
Definition: dl_dispatcher.cc:509
impeller::Canvas::EndReplay
void EndReplay()
Definition: canvas.cc:1639
impeller::TextFrameDispatcher
Performs a first pass over the display list to collect all text frames.
Definition: dl_dispatcher.h:288
impeller::DlDispatcherBase::drawOval
void drawOval(const DlRect &bounds) override
Definition: dl_dispatcher.cc:571
impeller::DlDispatcherBase::clipRect
void clipRect(const DlRect &rect, ClipOp clip_op, bool is_aa) override
Definition: dl_dispatcher.cc:429
impeller::DlDispatcherBase
Definition: dl_dispatcher.h:27
impeller::DlDispatcherBase::setMaskFilter
void setMaskFilter(const flutter::DlMaskFilter *filter) override
Definition: dl_dispatcher.cc:264
impeller::DlDispatcherBase::clipOval
void clipOval(const DlRect &bounds, ClipOp clip_op, bool is_aa) override
Definition: dl_dispatcher.cc:438
paint.h
impeller::DlDispatcherBase::setInvertColors
void setInvertColors(bool invert) override
Definition: dl_dispatcher.cc:237
impeller::DlScalar
flutter::DlScalar DlScalar
Definition: dl_dispatcher.h:21
impeller
Definition: allocation.cc:12
impeller::ContentContext
Definition: content_context.h:366
impeller::CanvasDlDispatcher::save
void save() override
Definition: dl_dispatcher.h:257
impeller::TRect
Definition: rect.h:122
impeller::DlDispatcherBase::transformFullPerspective
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
Definition: dl_dispatcher.cc:379
impeller::Matrix
A 4x4 matrix using column-major storage.
Definition: matrix.h:37
impeller::CanvasDlDispatcher::saveLayer
void saveLayer(const DlRect &bounds, const flutter::SaveLayerOptions options, const flutter::DlImageFilter *backdrop) override
Definition: dl_dispatcher.h:265
impeller::DlDispatcherBase::drawImage
void drawImage(const sk_sp< flutter::DlImage > image, const DlPoint &point, flutter::DlImageSampling sampling, bool render_with_attributes) override
Definition: dl_dispatcher.cc:699
impeller::DlDispatcherBase::rotate
void rotate(DlScalar degrees) override
Definition: dl_dispatcher.cc:346
impeller::DlDispatcherBase::drawTextBlob
void drawTextBlob(const sk_sp< SkTextBlob > blob, DlScalar x, DlScalar y) override
Definition: dl_dispatcher.cc:858