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"
17 #include "impeller/geometry/rect.h"
18 
19 namespace impeller {
20 
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|
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:
240 
241  static void SimplifyOrDrawPath(Canvas& canvas,
242  const DlPath& cache,
243  const Paint& paint);
244 };
245 
247  public:
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  }
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  }
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 
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
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