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/utils/dl_receiver_utils.h"
11 #include "fml/logging.h"
12 #include "impeller/aiks/canvas.h"
14 #include "impeller/aiks/paint.h"
17 
18 namespace impeller {
19 
22 
23 class DlDispatcherBase : public flutter::DlOpReceiver {
24  public:
26 
27  // |flutter::DlOpReceiver|
28  bool PrefersImpellerPaths() const override { return true; }
29 
30  // |flutter::DlOpReceiver|
31  void setAntiAlias(bool aa) override;
32 
33  // |flutter::DlOpReceiver|
34  void setDrawStyle(flutter::DlDrawStyle style) override;
35 
36  // |flutter::DlOpReceiver|
37  void setColor(flutter::DlColor color) override;
38 
39  // |flutter::DlOpReceiver|
40  void setStrokeWidth(SkScalar width) override;
41 
42  // |flutter::DlOpReceiver|
43  void setStrokeMiter(SkScalar limit) override;
44 
45  // |flutter::DlOpReceiver|
46  void setStrokeCap(flutter::DlStrokeCap cap) override;
47 
48  // |flutter::DlOpReceiver|
49  void setStrokeJoin(flutter::DlStrokeJoin join) override;
50 
51  // |flutter::DlOpReceiver|
52  void setColorSource(const flutter::DlColorSource* source) override;
53 
54  // |flutter::DlOpReceiver|
55  void setColorFilter(const flutter::DlColorFilter* filter) override;
56 
57  // |flutter::DlOpReceiver|
58  void setInvertColors(bool invert) override;
59 
60  // |flutter::DlOpReceiver|
61  void setBlendMode(flutter::DlBlendMode mode) override;
62 
63  // |flutter::DlOpReceiver|
64  void setMaskFilter(const flutter::DlMaskFilter* filter) override;
65 
66  // |flutter::DlOpReceiver|
67  void setImageFilter(const flutter::DlImageFilter* filter) override;
68 
69  // |flutter::DlOpReceiver|
70  void save(uint32_t total_content_depth) override;
71 
72  // |flutter::DlOpReceiver|
73  void saveLayer(const SkRect& bounds,
74  const flutter::SaveLayerOptions& options,
75  uint32_t total_content_depth,
76  flutter::DlBlendMode max_content_mode,
77  const flutter::DlImageFilter* backdrop) override;
78 
79  // |flutter::DlOpReceiver|
80  void restore() override;
81 
82  // |flutter::DlOpReceiver|
83  void translate(SkScalar tx, SkScalar ty) override;
84 
85  // |flutter::DlOpReceiver|
86  void scale(SkScalar sx, SkScalar sy) override;
87 
88  // |flutter::DlOpReceiver|
89  void rotate(SkScalar degrees) override;
90 
91  // |flutter::DlOpReceiver|
92  void skew(SkScalar sx, SkScalar sy) override;
93 
94  // |flutter::DlOpReceiver|
95  void transform2DAffine(SkScalar mxx,
96  SkScalar mxy,
97  SkScalar mxt,
98  SkScalar myx,
99  SkScalar myy,
100  SkScalar myt) override;
101 
102  // |flutter::DlOpReceiver|
103  void transformFullPerspective(SkScalar mxx,
104  SkScalar mxy,
105  SkScalar mxz,
106  SkScalar mxt,
107  SkScalar myx,
108  SkScalar myy,
109  SkScalar myz,
110  SkScalar myt,
111  SkScalar mzx,
112  SkScalar mzy,
113  SkScalar mzz,
114  SkScalar mzt,
115  SkScalar mwx,
116  SkScalar mwy,
117  SkScalar mwz,
118  SkScalar mwt) override;
119 
120  // |flutter::DlOpReceiver|
121  void transformReset() override;
122 
123  // |flutter::DlOpReceiver|
124  void clipRect(const SkRect& rect, ClipOp clip_op, bool is_aa) override;
125 
126  // |flutter::DlOpReceiver|
127  void clipRRect(const SkRRect& rrect, ClipOp clip_op, bool is_aa) override;
128 
129  // |flutter::DlOpReceiver|
130  void clipPath(const SkPath& path, ClipOp clip_op, bool is_aa) override;
131 
132  // |flutter::DlOpReceiver|
133  void clipPath(const CacheablePath& cache,
134  ClipOp clip_op,
135  bool is_aa) override;
136 
137  // |flutter::DlOpReceiver|
138  void drawColor(flutter::DlColor color, flutter::DlBlendMode mode) override;
139 
140  // |flutter::DlOpReceiver|
141  void drawPaint() override;
142 
143  // |flutter::DlOpReceiver|
144  void drawLine(const SkPoint& p0, const SkPoint& p1) override;
145 
146  // |flutter::DlOpReceiver|
147  void drawDashedLine(const DlPoint& p0,
148  const DlPoint& p1,
149  DlScalar on_length,
150  DlScalar off_length) override;
151 
152  // |flutter::DlOpReceiver|
153  void drawRect(const SkRect& rect) override;
154 
155  // |flutter::DlOpReceiver|
156  void drawOval(const SkRect& bounds) override;
157 
158  // |flutter::DlOpReceiver|
159  void drawCircle(const SkPoint& center, SkScalar radius) override;
160 
161  // |flutter::DlOpReceiver|
162  void drawRRect(const SkRRect& rrect) override;
163 
164  // |flutter::DlOpReceiver|
165  void drawDRRect(const SkRRect& outer, const SkRRect& inner) override;
166 
167  // |flutter::DlOpReceiver|
168  void drawPath(const SkPath& path) override;
169 
170  // |flutter::DlOpReceiver|
171  void drawPath(const CacheablePath& cache) override;
172 
173  // |flutter::DlOpReceiver|
174  void drawArc(const SkRect& oval_bounds,
175  SkScalar start_degrees,
176  SkScalar sweep_degrees,
177  bool use_center) override;
178 
179  // |flutter::DlOpReceiver|
180  void drawPoints(PointMode mode,
181  uint32_t count,
182  const SkPoint points[]) override;
183 
184  // |flutter::DlOpReceiver|
185  void drawVertices(const std::shared_ptr<flutter::DlVertices>& vertices,
186  flutter::DlBlendMode dl_mode) override;
187 
188  // |flutter::DlOpReceiver|
189  void drawImage(const sk_sp<flutter::DlImage> image,
190  const SkPoint point,
191  flutter::DlImageSampling sampling,
192  bool render_with_attributes) override;
193 
194  // |flutter::DlOpReceiver|
195  void drawImageRect(const sk_sp<flutter::DlImage> image,
196  const SkRect& src,
197  const SkRect& dst,
198  flutter::DlImageSampling sampling,
199  bool render_with_attributes,
200  SrcRectConstraint constraint) override;
201 
202  // |flutter::DlOpReceiver|
203  void drawImageNine(const sk_sp<flutter::DlImage> image,
204  const SkIRect& center,
205  const SkRect& dst,
206  flutter::DlFilterMode filter,
207  bool render_with_attributes) override;
208 
209  // |flutter::DlOpReceiver|
210  void drawAtlas(const sk_sp<flutter::DlImage> atlas,
211  const SkRSXform xform[],
212  const SkRect tex[],
213  const flutter::DlColor colors[],
214  int count,
215  flutter::DlBlendMode mode,
216  flutter::DlImageSampling sampling,
217  const SkRect* cull_rect,
218  bool render_with_attributes) override;
219 
220  // |flutter::DlOpReceiver|
221  void drawDisplayList(const sk_sp<flutter::DisplayList> display_list,
222  SkScalar opacity) override;
223 
224  // |flutter::DlOpReceiver|
225  void drawTextBlob(const sk_sp<SkTextBlob> blob,
226  SkScalar x,
227  SkScalar y) override;
228 
229  // |flutter::DlOpReceiver|
230  void drawTextFrame(const std::shared_ptr<impeller::TextFrame>& text_frame,
231  SkScalar x,
232  SkScalar y) override;
233 
234  // |flutter::DlOpReceiver|
235  void drawShadow(const SkPath& path,
236  const flutter::DlColor color,
237  const SkScalar elevation,
238  bool transparent_occluder,
239  SkScalar dpr) override;
240 
241  // |flutter::DlOpReceiver|
242  void drawShadow(const CacheablePath& cache,
243  const flutter::DlColor color,
244  const SkScalar elevation,
245  bool transparent_occluder,
246  SkScalar dpr) override;
247 
248  virtual Canvas& GetCanvas() = 0;
249 
250  private:
251  Paint paint_;
252  Matrix initial_matrix_;
253 
254  static const Path& GetOrCachePath(const CacheablePath& cache);
255 
256  static void SimplifyOrDrawPath(Canvas& canvas,
257  const CacheablePath& cache,
258  const Paint& paint);
259 };
260 
262  public:
263  DlDispatcher();
264 
265  explicit DlDispatcher(IRect cull_rect);
266 
267  explicit DlDispatcher(Rect cull_rect);
268 
269  ~DlDispatcher() = default;
270 
271  // |flutter::DlOpReceiver|
272  void save() override {
273  // This dispatcher is used from test cases that might not supply
274  // a content_depth parameter. Since this dispatcher doesn't use
275  // the value, we just pass through a 0.
277  }
279 
280  // |flutter::DlOpReceiver|
281  void saveLayer(const SkRect& bounds,
282  const flutter::SaveLayerOptions options,
283  const flutter::DlImageFilter* backdrop) override {
284  // This dispatcher is used from test cases that might not supply
285  // a content_depth parameter. Since this dispatcher doesn't use
286  // the value, we just pass through a 0.
287  DlDispatcherBase::saveLayer(bounds, options, 0u,
288  flutter::DlBlendMode::kLastMode, backdrop);
289  }
291 
292  private:
293  Canvas canvas_;
294 
295  Canvas& GetCanvas() override;
296 };
297 
299  public:
301  RenderTarget& render_target,
302  bool has_root_backdrop_filter,
303  flutter::DlBlendMode max_root_blend_mode,
304  IRect cull_rect);
305 
306  ~ExperimentalDlDispatcher() = default;
307 
308  // |flutter::DlOpReceiver|
309  void save() override {
310  // This dispatcher should never be used with the save() variant
311  // that does not include the content_depth parameter.
312  FML_UNREACHABLE();
313  }
315 
316  // |flutter::DlOpReceiver|
317  void saveLayer(const SkRect& bounds,
318  const flutter::SaveLayerOptions options,
319  const flutter::DlImageFilter* backdrop) override {
320  // This dispatcher should never be used with the saveLayer() variant
321  // that does not include the content_depth parameter.
322  FML_UNREACHABLE();
323  }
325 
326  void FinishRecording() { canvas_.EndReplay(); }
327 
328  private:
329  ExperimentalCanvas canvas_;
330 
331  Canvas& GetCanvas() override;
332 };
333 
334 /// Performs a first pass over the display list to collect all text frames.
335 class TextFrameDispatcher : public flutter::IgnoreAttributeDispatchHelper,
336  public flutter::IgnoreClipDispatchHelper,
337  public flutter::IgnoreDrawDispatchHelper {
338  public:
339  TextFrameDispatcher(const ContentContext& renderer,
340  const Matrix& initial_matrix);
341  void save() override;
342 
343  void saveLayer(const SkRect& bounds,
344  const flutter::SaveLayerOptions options,
345  const flutter::DlImageFilter* backdrop) override;
346 
347  void restore() override;
348 
349  void translate(SkScalar tx, SkScalar ty) override;
350 
351  void scale(SkScalar sx, SkScalar sy) override;
352 
353  void rotate(SkScalar degrees) override;
354 
355  void skew(SkScalar sx, SkScalar sy) override;
356 
357  // clang-format off
358  // 2x3 2D affine subset of a 4x4 transform in row major order
359  void transform2DAffine(SkScalar mxx, SkScalar mxy, SkScalar mxt,
360  SkScalar myx, SkScalar myy, SkScalar myt) override;
361 
362  // full 4x4 transform in row major order
364  SkScalar mxx, SkScalar mxy, SkScalar mxz, SkScalar mxt,
365  SkScalar myx, SkScalar myy, SkScalar myz, SkScalar myt,
366  SkScalar mzx, SkScalar mzy, SkScalar mzz, SkScalar mzt,
367  SkScalar mwx, SkScalar mwy, SkScalar mwz, SkScalar mwt) override;
368 
369  void transformReset() override;
370 
371  void drawTextFrame(const std::shared_ptr<impeller::TextFrame>& text_frame,
372  SkScalar x,
373  SkScalar y) override;
374 
375  void drawDisplayList(const sk_sp<flutter::DisplayList> display_list,
376  SkScalar opacity) override;
377 
378  // |flutter::DlOpReceiver|
379  void setDrawStyle(flutter::DlDrawStyle style) override;
380 
381  // |flutter::DlOpReceiver|
382  void setColor(flutter::DlColor color) override;
383 
384  // |flutter::DlOpReceiver|
385  void setStrokeWidth(SkScalar width) override;
386 
387  // |flutter::DlOpReceiver|
388  void setStrokeMiter(SkScalar limit) override;
389 
390  // |flutter::DlOpReceiver|
391  void setStrokeCap(flutter::DlStrokeCap cap) override;
392 
393  // |flutter::DlOpReceiver|
394  void setStrokeJoin(flutter::DlStrokeJoin join) override;
395 
396  private:
397  const ContentContext& renderer_;
398  Matrix matrix_;
399  std::vector<Matrix> stack_;
400  Paint paint_;
401 };
402 
403 } // namespace impeller
404 
405 #endif // FLUTTER_IMPELLER_DISPLAY_LIST_DL_DISPATCHER_H_
impeller::DlDispatcherBase::drawDRRect
void drawDRRect(const SkRRect &outer, const SkRRect &inner) override
Definition: dl_dispatcher.cc:875
impeller::DlDispatcherBase::translate
void translate(SkScalar tx, SkScalar ty) override
Definition: dl_dispatcher.cc:646
impeller::DlDispatcherBase::transformReset
void transformReset() override
Definition: dl_dispatcher.cc:713
impeller::DlDispatcherBase::EndRecordingAsPicture
Picture EndRecordingAsPicture()
Definition: dl_dispatcher.cc:1203
impeller::DlDispatcher::save
void save() override
Definition: dl_dispatcher.h:272
impeller::DlDispatcherBase::drawShadow
void drawShadow(const SkPath &path, const flutter::DlColor color, const SkScalar elevation, bool transparent_occluder, SkScalar dpr) override
Definition: dl_dispatcher.cc:1136
impeller::DlDispatcherBase::drawPoints
void drawPoints(PointMode mode, uint32_t count, const SkPoint points[]) override
Definition: dl_dispatcher.cc:932
impeller::DlDispatcher::DlDispatcher
DlDispatcher()
Subclasses.
impeller::TextFrameDispatcher::saveLayer
void saveLayer(const SkRect &bounds, const flutter::SaveLayerOptions options, const flutter::DlImageFilter *backdrop) override
Definition: dl_dispatcher.cc:1253
impeller::DlScalar
flutter::DlScalar DlScalar
Definition: dl_dispatcher.h:20
impeller::ExperimentalDlDispatcher::FinishRecording
void FinishRecording()
Definition: dl_dispatcher.h:326
impeller::TextFrameDispatcher::rotate
void rotate(SkScalar degrees) override
Definition: dl_dispatcher.cc:1272
impeller::DlDispatcherBase::save
void save(uint32_t total_content_depth) override
Definition: dl_dispatcher.cc:611
impeller::DlDispatcherBase::drawColor
void drawColor(flutter::DlColor color, flutter::DlBlendMode mode) override
Definition: dl_dispatcher.cc:790
impeller::ExperimentalDlDispatcher::ExperimentalDlDispatcher
ExperimentalDlDispatcher(ContentContext &renderer, RenderTarget &render_target, bool has_root_backdrop_filter, flutter::DlBlendMode max_root_blend_mode, IRect cull_rect)
Definition: dl_dispatcher.cc:1227
impeller::DlDispatcher
Definition: dl_dispatcher.h:261
impeller::TextFrameDispatcher::setDrawStyle
void setDrawStyle(flutter::DlDrawStyle style) override
Definition: dl_dispatcher.cc:1346
impeller::TextFrameDispatcher::setStrokeJoin
void setStrokeJoin(flutter::DlStrokeJoin join) override
Definition: dl_dispatcher.cc:1386
impeller::Paint
Definition: paint.h:23
impeller::DlDispatcherBase::setStrokeCap
void setStrokeCap(flutter::DlStrokeCap cap) override
Definition: dl_dispatcher.cc:216
impeller::TextFrameDispatcher::transform2DAffine
void transform2DAffine(SkScalar mxx, SkScalar mxy, SkScalar mxt, SkScalar myx, SkScalar myy, SkScalar myt) override
Definition: dl_dispatcher.cc:1282
impeller::TextFrameDispatcher::restore
void restore() override
Definition: dl_dispatcher.cc:1259
impeller::TextFrameDispatcher::save
void save() override
Definition: dl_dispatcher.cc:1249
impeller::Canvas
Definition: canvas.h:60
impeller::DlDispatcherBase::transform2DAffine
void transform2DAffine(SkScalar mxx, SkScalar mxy, SkScalar mxt, SkScalar myx, SkScalar myy, SkScalar myt) override
Definition: dl_dispatcher.cc:666
impeller::TextFrameDispatcher::setStrokeCap
void setStrokeCap(flutter::DlStrokeCap cap) override
Definition: dl_dispatcher.cc:1371
impeller::DlDispatcherBase::setColorFilter
void setColorFilter(const flutter::DlColorFilter *filter) override
Definition: dl_dispatcher.cc:467
impeller::TextFrameDispatcher::TextFrameDispatcher
TextFrameDispatcher(const ContentContext &renderer, const Matrix &initial_matrix)
Definition: dl_dispatcher.cc:1245
impeller::DlDispatcherBase::transformFullPerspective
void transformFullPerspective(SkScalar mxx, SkScalar mxy, SkScalar mxz, SkScalar mxt, SkScalar myx, SkScalar myy, SkScalar myz, SkScalar myt, SkScalar mzx, SkScalar mzy, SkScalar mzz, SkScalar mzt, SkScalar mwx, SkScalar mwy, SkScalar mwz, SkScalar mwt) override
Definition: dl_dispatcher.cc:683
impeller::TextFrameDispatcher::transformFullPerspective
void transformFullPerspective(SkScalar mxx, SkScalar mxy, SkScalar mxz, SkScalar mxt, SkScalar myx, SkScalar myy, SkScalar myz, SkScalar myt, SkScalar mzx, SkScalar mzy, SkScalar mzz, SkScalar mzt, SkScalar mwx, SkScalar mwy, SkScalar mwz, SkScalar mwt) override
Definition: dl_dispatcher.cc:1293
impeller::DlDispatcherBase::clipRect
void clipRect(const SkRect &rect, ClipOp clip_op, bool is_aa) override
Definition: dl_dispatcher.cc:729
impeller::DlDispatcherBase::drawImageRect
void drawImageRect(const sk_sp< flutter::DlImage > image, const SkRect &src, const SkRect &dst, flutter::DlImageSampling sampling, bool render_with_attributes, SrcRectConstraint constraint) override
Definition: dl_dispatcher.cc:1006
impeller::DlDispatcherBase::drawOval
void drawOval(const SkRect &bounds) override
Definition: dl_dispatcher.cc:854
impeller::DlDispatcherBase::drawVertices
void drawVertices(const std::shared_ptr< flutter::DlVertices > &vertices, flutter::DlBlendMode dl_mode) override
Definition: dl_dispatcher.cc:970
impeller::TextFrameDispatcher::setColor
void setColor(flutter::DlColor color) override
Definition: dl_dispatcher.cc:1351
impeller::Picture
Definition: picture.h:17
impeller::DlDispatcherBase::drawTextBlob
void drawTextBlob(const sk_sp< SkTextBlob > blob, SkScalar x, SkScalar y) override
Definition: dl_dispatcher.cc:1117
impeller::DlDispatcherBase::drawRRect
void drawRRect(const SkRRect &rrect) override
Definition: dl_dispatcher.cc:864
impeller::DlDispatcherBase::drawArc
void drawArc(const SkRect &oval_bounds, SkScalar start_degrees, SkScalar sweep_degrees, bool use_center) override
Definition: dl_dispatcher.cc:921
impeller::DlDispatcherBase::setImageFilter
void setImageFilter(const flutter::DlImageFilter *filter) override
Definition: dl_dispatcher.cc:606
impeller::DlDispatcher::saveLayer
void saveLayer(const SkRect &bounds, const flutter::SaveLayerOptions options, const flutter::DlImageFilter *backdrop) override
Definition: dl_dispatcher.h:281
impeller::DlDispatcher::~DlDispatcher
~DlDispatcher()=default
impeller::DlDispatcherBase::clipPath
void clipPath(const SkPath &path, ClipOp clip_op, bool is_aa) override
Definition: dl_dispatcher.cc:755
impeller::DlDispatcherBase::setColorSource
void setColorSource(const flutter::DlColorSource *source) override
Definition: dl_dispatcher.cc:281
impeller::DlDispatcherBase::setDrawStyle
void setDrawStyle(flutter::DlDrawStyle style) override
Definition: dl_dispatcher.cc:191
impeller::Path
Paths are lightweight objects that describe a collection of linear, quadratic, or cubic segments....
Definition: path.h:52
impeller::DlDispatcherBase::setStrokeJoin
void setStrokeJoin(flutter::DlStrokeJoin join) override
Definition: dl_dispatcher.cc:231
impeller::TextFrameDispatcher::transformReset
void transformReset() override
Definition: dl_dispatcher.cc:1307
impeller::DlDispatcherBase::drawPath
void drawPath(const SkPath &path) override
Definition: dl_dispatcher.cc:883
impeller::DlDispatcherBase::drawImageNine
void drawImageNine(const sk_sp< flutter::DlImage > image, const SkIRect &center, const SkRect &dst, flutter::DlFilterMode filter, bool render_with_attributes) override
Definition: dl_dispatcher.cc:1023
impeller::ExperimentalDlDispatcher
Definition: dl_dispatcher.h:298
impeller::DlDispatcherBase::drawImage
void drawImage(const sk_sp< flutter::DlImage > image, const SkPoint point, flutter::DlImageSampling sampling, bool render_with_attributes) override
Definition: dl_dispatcher.cc:978
experimental_canvas.h
impeller::DlDispatcherBase::skew
void skew(SkScalar sx, SkScalar sy) override
Definition: dl_dispatcher.cc:661
impeller::DlDispatcherBase::saveLayer
void saveLayer(const SkRect &bounds, const flutter::SaveLayerOptions &options, uint32_t total_content_depth, flutter::DlBlendMode max_content_mode, const flutter::DlImageFilter *backdrop) override
Definition: dl_dispatcher.cc:619
impeller::DlDispatcherBase::setAntiAlias
void setAntiAlias(bool aa) override
Definition: dl_dispatcher.cc:173
impeller::DlDispatcherBase::setStrokeMiter
void setStrokeMiter(SkScalar limit) override
Definition: dl_dispatcher.cc:211
impeller::DlDispatcherBase::setStrokeWidth
void setStrokeWidth(SkScalar width) override
Definition: dl_dispatcher.cc:206
canvas.h
impeller::RenderTarget
Definition: render_target.h:38
impeller::DlDispatcherBase::drawLine
void drawLine(const SkPoint &p0, const SkPoint &p1) override
Definition: dl_dispatcher.cc:804
impeller::DlPoint
flutter::DlPoint DlPoint
Definition: dl_dispatcher.h:21
impeller::DlDispatcherBase::GetCanvas
virtual Canvas & GetCanvas()=0
impeller::DlDispatcherBase::clipRRect
void clipRRect(const SkRRect &rrect, ClipOp clip_op, bool is_aa) override
Definition: dl_dispatcher.cc:737
impeller::TextFrameDispatcher::drawDisplayList
void drawDisplayList(const sk_sp< flutter::DisplayList > display_list, SkScalar opacity) override
Definition: dl_dispatcher.cc:1335
impeller::DlDispatcherBase::drawDashedLine
void drawDashedLine(const DlPoint &p0, const DlPoint &p1, DlScalar on_length, DlScalar off_length) override
Definition: dl_dispatcher.cc:809
impeller::TextFrameDispatcher::drawTextFrame
void drawTextFrame(const std::shared_ptr< impeller::TextFrame > &text_frame, SkScalar x, SkScalar y) override
Definition: dl_dispatcher.cc:1311
impeller::ExperimentalCanvas::EndReplay
void EndReplay()
Definition: experimental_canvas.cc:745
content_context.h
impeller::TextFrameDispatcher::setStrokeMiter
void setStrokeMiter(SkScalar limit) override
Definition: dl_dispatcher.cc:1366
impeller::DlDispatcherBase::setBlendMode
void setBlendMode(flutter::DlBlendMode mode) override
Definition: dl_dispatcher.cc:477
impeller::ExperimentalDlDispatcher::saveLayer
void saveLayer(const SkRect &bounds, const flutter::SaveLayerOptions options, const flutter::DlImageFilter *backdrop) override
Definition: dl_dispatcher.h:317
impeller::DlDispatcherBase::PrefersImpellerPaths
bool PrefersImpellerPaths() const override
Definition: dl_dispatcher.h:28
impeller::ExperimentalCanvas
Definition: experimental_canvas.h:40
impeller::TextFrameDispatcher::setStrokeWidth
void setStrokeWidth(SkScalar width) override
Definition: dl_dispatcher.cc:1361
impeller::DlDispatcherBase::drawRect
void drawRect(const SkRect &rect) override
Definition: dl_dispatcher.cc:849
impeller::DlDispatcherBase::setColor
void setColor(flutter::DlColor color) override
Definition: dl_dispatcher.cc:196
paint
const Paint & paint
Definition: color_source.cc:38
impeller::ExperimentalDlDispatcher::~ExperimentalDlDispatcher
~ExperimentalDlDispatcher()=default
paint.h
color.h
impeller::DlDispatcherBase::drawAtlas
void drawAtlas(const sk_sp< flutter::DlImage > atlas, const SkRSXform xform[], const SkRect tex[], const flutter::DlColor colors[], int count, flutter::DlBlendMode mode, flutter::DlImageSampling sampling, const SkRect *cull_rect, bool render_with_attributes) override
Definition: dl_dispatcher.cc:1037
color
DlColor color
Definition: dl_golden_blur_unittests.cc:23
impeller::DlDispatcherBase::restore
void restore() override
Definition: dl_dispatcher.cc:641
impeller::DlDispatcherBase::drawPaint
void drawPaint() override
Definition: dl_dispatcher.cc:799
impeller::TextFrameDispatcher::scale
void scale(SkScalar sx, SkScalar sy) override
Definition: dl_dispatcher.cc:1268
impeller::DlDispatcherBase::drawDisplayList
void drawDisplayList(const sk_sp< flutter::DisplayList > display_list, SkScalar opacity) override
Definition: dl_dispatcher.cc:1055
impeller::DlDispatcherBase::drawTextFrame
void drawTextFrame(const std::shared_ptr< impeller::TextFrame > &text_frame, SkScalar x, SkScalar y) override
Definition: dl_dispatcher.cc:1125
impeller::TextFrameDispatcher
Performs a first pass over the display list to collect all text frames.
Definition: dl_dispatcher.h:335
impeller::TextFrameDispatcher::translate
void translate(SkScalar tx, SkScalar ty) override
Definition: dl_dispatcher.cc:1264
impeller::TextFrameDispatcher::skew
void skew(SkScalar sx, SkScalar sy) override
Definition: dl_dispatcher.cc:1276
impeller::DlDispatcherBase
Definition: dl_dispatcher.h:23
impeller::DlDispatcherBase::setMaskFilter
void setMaskFilter(const flutter::DlMaskFilter *filter) override
Definition: dl_dispatcher.cc:495
impeller::ExperimentalDlDispatcher::save
void save() override
Definition: dl_dispatcher.h:309
impeller::DlDispatcherBase::setInvertColors
void setInvertColors(bool invert) override
Definition: dl_dispatcher.cc:472
impeller
Definition: aiks_blend_unittests.cc:18
impeller::ContentContext
Definition: content_context.h:366
impeller::TRect
Definition: rect.h:122
impeller::Matrix
A 4x4 matrix using column-major storage.
Definition: matrix.h:37
impeller::DlDispatcherBase::drawCircle
void drawCircle(const SkPoint &center, SkScalar radius) override
Definition: dl_dispatcher.cc:859
impeller::DlDispatcherBase::rotate
void rotate(SkScalar degrees) override
Definition: dl_dispatcher.cc:656
impeller::DlDispatcherBase::scale
void scale(SkScalar sx, SkScalar sy) override
Definition: dl_dispatcher.cc:651