Flutter Impeller
dl_builder.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_TOOLKIT_INTEROP_DL_BUILDER_H_
6 #define FLUTTER_IMPELLER_TOOLKIT_INTEROP_DL_BUILDER_H_
7 
8 #include "flutter/display_list/dl_builder.h"
9 #include "flutter/display_list/dl_canvas.h"
11 #include "impeller/geometry/size.h"
21 
22 namespace impeller::interop {
23 
24 class DisplayListBuilder final
25  : public Object<DisplayListBuilder,
26  IMPELLER_INTERNAL_HANDLE_NAME(ImpellerDisplayListBuilder)> {
27  public:
28  explicit DisplayListBuilder(const ImpellerRect* rect);
29 
30  ~DisplayListBuilder() override;
31 
33 
35 
36  void Save();
37 
38  void SaveLayer(const Rect& bounds,
39  const Paint* paint,
40  const ImageFilter* backdrop);
41 
42  void Restore();
43 
44  void Scale(Size scale);
45 
46  void Rotate(Degrees angle);
47 
48  void Translate(Point translation);
49 
50  Matrix GetTransform() const;
51 
52  void SetTransform(const Matrix& matrix);
53 
54  void Transform(const Matrix& matrix);
55 
56  void ResetTransform();
57 
58  uint32_t GetSaveCount() const;
59 
60  void RestoreToCount(uint32_t count);
61 
62  void ClipRect(const Rect& rect, flutter::DlClipOp op);
63 
64  void ClipOval(const Rect& rect, flutter::DlClipOp op);
65 
66  void ClipRoundedRect(const Rect& rect,
67  const RoundingRadii& radii,
68  flutter::DlClipOp op);
69 
70  void ClipPath(const Path& path, flutter::DlClipOp op);
71 
72  void DrawPaint(const Paint& paint);
73 
74  void DrawLine(const Point& from, const Point& to, const Paint& paint);
75 
76  void DrawDashedLine(const Point& from,
77  const Point& to,
78  Scalar on_length,
79  Scalar off_length,
80  const Paint& paint);
81 
82  void DrawRect(const Rect& rect, const Paint& paint);
83 
84  void DrawOval(const Rect& oval_bounds, const Paint& paint);
85 
86  void DrawRoundedRect(const Rect& rect,
87  const RoundingRadii& radii,
88  const Paint& paint);
89 
90  void DrawRoundedRectDifference(const Rect& outer_rect,
91  const RoundingRadii& outer_radii,
92  const Rect& inner_rect,
93  const RoundingRadii& inner_radii,
94  const Paint& paint);
95 
96  void DrawPath(const Path& path, const Paint& paint);
97 
98  void DrawTexture(const Texture& texture,
99  const Point& point,
100  flutter::DlImageSampling sampling,
101  const Paint* paint);
102 
103  void DrawTextureRect(const Texture& texture,
104  const Rect& src_rect,
105  const Rect& dst_rect,
106  flutter::DlImageSampling sampling,
107  const Paint* paint);
108 
109  void DrawDisplayList(const DisplayList& dl, Scalar opacity);
110 
111  void DrawParagraph(const Paragraph& paragraph, Point point);
112 
113  void DrawShadow(const Path& path,
114  const flutter::DlColor& color,
115  float elevation,
116  bool occluder_is_transparent,
117  float device_pixel_ratio);
118 
120 
121  private:
122  flutter::DisplayListBuilder builder_;
123 };
124 
125 } // namespace impeller::interop
126 
127 #endif // FLUTTER_IMPELLER_TOOLKIT_INTEROP_DL_BUILDER_H_
void DrawPaint(const Paint &paint)
Definition: dl_builder.cc:119
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)
Definition: dl_builder.cc:123
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)
Definition: dl_builder.cc:184
DisplayListBuilder(const ImpellerRect *rect)
Definition: dl_builder.cc:11
void DrawTexture(const Texture &texture, const Point &point, flutter::DlImageSampling sampling, const Paint *paint)
Definition: dl_builder.cc:151
void DrawPath(const Path &path, const Paint &paint)
Definition: dl_builder.cc:115
void DrawDashedLine(const Point &from, const Point &to, Scalar on_length, Scalar off_length, const Paint &paint)
Definition: dl_builder.cc:129
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:146
void DrawRect(const Rect &rect, const Paint &paint)
Definition: dl_builder.cc:87
ScopedObject< DisplayList > Build()
Definition: dl_builder.cc:142
DisplayListBuilder(const DisplayListBuilder &)=delete
void ClipRect(const Rect &rect, flutter::DlClipOp op)
Definition: dl_builder.cc:69
void DrawParagraph(const Paragraph &paragraph, Point point)
Definition: dl_builder.cc:175
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)
Definition: dl_builder.cc:162
DisplayListBuilder & operator=(const DisplayListBuilder &)=delete
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)
Definition: dl_builder.cc:102
void DrawOval(const Rect &oval_bounds, const Paint &paint)
Definition: dl_builder.cc:91
void SetTransform(const Matrix &matrix)
Definition: dl_builder.cc:49
float Scalar
Definition: scalar.h:19
A 4x4 matrix using column-major storage.
Definition: matrix.h:37