Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
canvas_recorder_unittests.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
5#include "flutter/testing/testing.h"
7namespace impeller {
8namespace testing {
9
10namespace {
11class Serializer {
12 public:
13 void Write(CanvasRecorderOp op) { last_op_ = op; }
14
15 void Write(const Paint& paint) { last_paint_ = paint; }
16
17 void Write(const std::optional<Rect> optional_rect) {}
18
19 void Write(const std::shared_ptr<ImageFilter>& image_filter) {}
20
21 void Write(size_t size) {}
22
23 void Write(const Matrix& matrix) {}
24
25 void Write(const Vector3& vec3) {}
26
27 void Write(const Vector2& vec2) {}
28
29 void Write(const Radians& vec2) {}
30
31 void Write(const Path& path) {}
32
33 void Write(const std::vector<Point>& points) {}
34
35 void Write(const PointStyle& point_style) {}
36
37 void Write(const std::shared_ptr<Image>& image) {}
38
39 void Write(const SamplerDescriptor& sampler) {}
40
41 void Write(const Entity::ClipOperation& clip_op) {}
42
43 void Write(const Picture& clip_op) {}
44
45 void Write(const std::shared_ptr<TextFrame>& text_frame) {}
46
47 void Write(const std::shared_ptr<VerticesGeometry>& vertices) {}
48
49 void Write(const BlendMode& blend_mode) {}
50
51 void Write(const std::vector<Matrix>& matrices) {}
52
53 void Write(const std::vector<Rect>& matrices) {}
54
55 void Write(const std::vector<Color>& matrices) {}
56
57 void Write(const SourceRectConstraint& src_rect_constraint) {}
58
59 void Write(const ContentBoundsPromise& promise) {}
60
63};
64} // namespace
65
66TEST(CanvasRecorder, Save) {
67 CanvasRecorder<Serializer> recorder;
68 recorder.Save();
69 ASSERT_EQ(recorder.GetSerializer().last_op_, CanvasRecorderOp::kSave);
70}
71
72TEST(CanvasRecorder, SaveLayer) {
73 CanvasRecorder<Serializer> recorder;
75 recorder.SaveLayer(paint);
76 ASSERT_EQ(recorder.GetSerializer().last_op_, CanvasRecorderOp::kSaveLayer);
77}
78
79TEST(CanvasRecorder, Restore) {
80 CanvasRecorder<Serializer> recorder;
81 recorder.Restore();
82 ASSERT_EQ(recorder.GetSerializer().last_op_, CanvasRecorderOp::kRestore);
83}
84
85TEST(CanvasRecorder, RestoreToCount) {
86 CanvasRecorder<Serializer> recorder;
87 recorder.Save();
88 recorder.RestoreToCount(0);
89 ASSERT_EQ(recorder.GetSerializer().last_op_,
91}
92
93TEST(CanvasRecorder, ResetTransform) {
94 CanvasRecorder<Serializer> recorder;
95 recorder.ResetTransform();
96 ASSERT_EQ(recorder.GetSerializer().last_op_,
98}
99
100TEST(CanvasRecorder, Transform) {
101 CanvasRecorder<Serializer> recorder;
102 recorder.Transform(Matrix());
103 ASSERT_EQ(recorder.GetSerializer().last_op_, CanvasRecorderOp::kTransform);
104}
105
106TEST(CanvasRecorder, Concat) {
107 CanvasRecorder<Serializer> recorder;
108 recorder.Concat(Matrix());
109 ASSERT_EQ(recorder.GetSerializer().last_op_, CanvasRecorderOp::kConcat);
110}
111
112TEST(CanvasRecorder, PreConcat) {
113 CanvasRecorder<Serializer> recorder;
114 recorder.PreConcat(Matrix());
115 ASSERT_EQ(recorder.GetSerializer().last_op_, CanvasRecorderOp::kPreConcat);
116}
117
118TEST(CanvasRecorder, Translate) {
119 CanvasRecorder<Serializer> recorder;
120 recorder.Translate(Vector3());
121 ASSERT_EQ(recorder.GetSerializer().last_op_, CanvasRecorderOp::kTranslate);
122}
123
124TEST(CanvasRecorder, Scale2) {
125 CanvasRecorder<Serializer> recorder;
126 recorder.Scale(Vector2());
127 ASSERT_EQ(recorder.GetSerializer().last_op_, CanvasRecorderOp::kScale2);
128}
129
130TEST(CanvasRecorder, Scale3) {
131 CanvasRecorder<Serializer> recorder;
132 recorder.Scale(Vector3());
133 ASSERT_EQ(recorder.GetSerializer().last_op_, CanvasRecorderOp::kScale3);
134}
135
136TEST(CanvasRecorder, Skew) {
137 CanvasRecorder<Serializer> recorder;
138 recorder.Skew(0, 0);
139 ASSERT_EQ(recorder.GetSerializer().last_op_, CanvasRecorderOp::kSkew);
140}
141
142TEST(CanvasRecorder, Rotate) {
143 CanvasRecorder<Serializer> recorder;
144 recorder.Rotate(Radians(0));
145 ASSERT_EQ(recorder.GetSerializer().last_op_, CanvasRecorderOp::kRotate);
146}
147
148TEST(CanvasRecorder, DrawPath) {
149 CanvasRecorder<Serializer> recorder;
150 recorder.DrawPath(Path(), Paint());
151 ASSERT_EQ(recorder.GetSerializer().last_op_, CanvasRecorderOp::kDrawPath);
152}
153
154TEST(CanvasRecorder, DrawPaint) {
155 CanvasRecorder<Serializer> recorder;
156 Paint paint;
157 paint.color = Color::Red();
158 recorder.DrawPaint(paint);
159 ASSERT_EQ(recorder.GetSerializer().last_op_, CanvasRecorderOp::kDrawPaint);
160 ASSERT_EQ(recorder.GetSerializer().last_paint_.color, paint.color);
161}
162
163TEST(CanvasRecorder, DrawLine) {
164 CanvasRecorder<Serializer> recorder;
165 recorder.DrawLine(Point(), Point(), Paint());
166 ASSERT_EQ(recorder.GetSerializer().last_op_, CanvasRecorderOp::kDrawLine);
167}
168
169TEST(CanvasRecorder, DrawRect) {
170 CanvasRecorder<Serializer> recorder;
171 Paint paint;
172 paint.color = Color::Blue();
173 recorder.DrawRect(Rect(), paint);
174 ASSERT_EQ(recorder.GetSerializer().last_op_, CanvasRecorderOp::kDrawRect);
175 ASSERT_EQ(recorder.GetSerializer().last_paint_.color, paint.color);
176}
177
178TEST(CanvasRecorder, DrawOval) {
179 CanvasRecorder<Serializer> recorder;
180 recorder.DrawOval(Rect(), Paint());
181 ASSERT_EQ(recorder.GetSerializer().last_op_, CanvasRecorderOp::kDrawOval);
182}
183
184TEST(CanvasRecorder, DrawRRect) {
185 CanvasRecorder<Serializer> recorder;
186 recorder.DrawRRect(Rect(), {}, Paint());
187 ASSERT_EQ(recorder.GetSerializer().last_op_, CanvasRecorderOp::kDrawRRect);
188}
189
190TEST(CanvasRecorder, DrawCircle) {
191 CanvasRecorder<Serializer> recorder;
192 recorder.DrawCircle(Point(), 0, Paint());
193 ASSERT_EQ(recorder.GetSerializer().last_op_, CanvasRecorderOp::kDrawCircle);
194}
195
196TEST(CanvasRecorder, DrawPoints) {
197 CanvasRecorder<Serializer> recorder;
198 recorder.DrawPoints(std::vector<Point>{}, 0, Paint(), PointStyle::kRound);
199 ASSERT_EQ(recorder.GetSerializer().last_op_, CanvasRecorderOp::kDrawPoints);
200}
201
202TEST(CanvasRecorder, DrawImage) {
203 CanvasRecorder<Serializer> recorder;
204 recorder.DrawImage({}, {}, {}, {});
205 ASSERT_EQ(recorder.GetSerializer().last_op_, CanvasRecorderOp::kDrawImage);
206}
207
208TEST(CanvasRecorder, DrawImageRect) {
209 CanvasRecorder<Serializer> recorder;
210 recorder.DrawImageRect({}, {}, {}, {}, {}, SourceRectConstraint::kFast);
211 ASSERT_EQ(recorder.GetSerializer().last_op_,
213}
214
215TEST(CanvasRecorder, ClipPath) {
216 CanvasRecorder<Serializer> recorder;
217 recorder.ClipPath({});
218 ASSERT_EQ(recorder.GetSerializer().last_op_, CanvasRecorderOp::kClipPath);
219}
220
221TEST(CanvasRecorder, ClipRect) {
222 CanvasRecorder<Serializer> recorder;
223 recorder.ClipRect({});
224 ASSERT_EQ(recorder.GetSerializer().last_op_, CanvasRecorderOp::kClipRect);
225}
226
227TEST(CanvasRecorder, ClipOval) {
228 CanvasRecorder<Serializer> recorder;
229 recorder.ClipOval({});
230 ASSERT_EQ(recorder.GetSerializer().last_op_, CanvasRecorderOp::kClipOval);
231}
232
233TEST(CanvasRecorder, ClipRRect) {
234 CanvasRecorder<Serializer> recorder;
235 recorder.ClipRRect({}, {});
236 ASSERT_EQ(recorder.GetSerializer().last_op_, CanvasRecorderOp::kClipRRect);
237}
238
239TEST(CanvasRecorder, DrawTextFrame) {
240 CanvasRecorder<Serializer> recorder;
241 recorder.DrawTextFrame({}, {}, {});
242 ASSERT_EQ(recorder.GetSerializer().last_op_,
244}
245
246TEST(CanvasRecorder, DrawVertices) {
247 CanvasRecorder<Serializer> recorder;
248 auto geometry = std::shared_ptr<VerticesGeometry>(
249 new VerticesGeometry({}, {}, {}, {}, {}, {}));
250 recorder.DrawVertices(geometry, {}, {});
251 ASSERT_EQ(recorder.GetSerializer().last_op_, CanvasRecorderOp::kDrawVertices);
252}
253
254TEST(CanvasRecorder, DrawAtlas) {
255 CanvasRecorder<Serializer> recorder;
256 recorder.DrawAtlas({}, {}, {}, {}, {}, {}, {}, {});
257 ASSERT_EQ(recorder.GetSerializer().last_op_, CanvasRecorderOp::kDrawAtlas);
258}
259
260} // namespace testing
261} // namespace impeller
#define TEST(S, s, D, expected)
static const int points[]
Paint last_paint_
CanvasRecorderOp last_op_
Paths are lightweight objects that describe a collection of linear, quadratic, or cubic segments....
Definition path.h:51
A geometry that is created from a vertices object.
const Paint & paint
sk_sp< SkImage > image
Definition examples.cpp:29
Point Vector2
Definition point.h:320
SourceRectConstraint
Controls the behavior of the source rectangle given to DrawImageRect.
Definition canvas.h:51
@ kFast
Faster, but may sample outside the bounds of the source rectangle.
TRect< Scalar > Rect
Definition rect.h:746
PointStyle
Definition canvas.h:42
@ kRound
Points are drawn as squares.
TPoint< Scalar > Point
Definition point.h:316
BlendMode
Definition color.h:59
ContentBoundsPromise
Definition entity_pass.h:28
static constexpr Color Red()
Definition color.h:264
static constexpr Color Blue()
Definition color.h:268
A 4x4 matrix using column-major storage.
Definition matrix.h:37