7 #include "flutter/display_list/dl_builder.h"
8 #include "flutter/testing/testing.h"
9 #include "gtest/gtest.h"
24 auto draw = [](DlCanvas* canvas,
25 const std::vector<std::unique_ptr<DlImage>>& images) {
26 canvas->Scale(0.2, 0.2);
28 paint.setColor(DlColor::kCyan());
29 canvas->DrawPaint(
paint);
32 DisplayListBuilder builder;
35 ASSERT_TRUE(OpenPlaygroundHere(builder.Build()));
39 auto draw = [](DlCanvas* canvas,
const std::vector<sk_sp<DlImage>>& images) {
40 FML_CHECK(images.size() >= 1);
42 paint.setColor(DlColor::kRed());
43 canvas->DrawImage(images[0], SkPoint::Make(100.0, 100.0),
44 DlImageSampling::kLinear, &
paint);
47 DisplayListBuilder builder;
48 std::vector<sk_sp<DlImage>> images;
49 images.emplace_back(CreateDlImageForFixture(
"kalimba.jpg"));
50 draw(&builder, images);
52 ASSERT_TRUE(OpenPlaygroundHere(builder.Build()));
58 Point content_scale = GetContentScale();
59 auto draw = [content_scale](DlCanvas* canvas,
60 const std::vector<sk_sp<DlImage>>& images) {
61 canvas->Scale(content_scale.x, content_scale.y);
63 paint.setColor(DlColor(0xfffef7ff));
64 canvas->DrawRect(SkRect::MakeLTRB(0, 0, 375, 667),
paint);
65 paint.setColor(DlColor(0xffff9800));
66 canvas->DrawRect(SkRect::MakeLTRB(0, 0, 187.5, 333.5),
paint);
67 paint.setColor(DlColor(0xff9c27b0));
68 canvas->DrawRect(SkRect::MakeLTRB(187.5, 0, 375, 333.5),
paint);
69 paint.setColor(DlColor(0xff4caf50));
70 canvas->DrawRect(SkRect::MakeLTRB(0, 333.5, 187.5, 667),
paint);
71 paint.setColor(DlColor(0xfff44336));
72 canvas->DrawRect(SkRect::MakeLTRB(187.5, 333.5, 375, 667),
paint);
77 SkRRect::MakeOval(SkRect::MakeLTRB(201.25, 10, 361.25, 170)),
78 DlCanvas::ClipOp::kIntersect,
true);
79 SkRect save_layer_bounds = SkRect::MakeLTRB(201.25, 10, 361.25, 170);
80 DlMatrixImageFilter backdrop(SkMatrix::MakeAll(3, 0, -280,
83 DlImageSampling::kLinear);
84 canvas->SaveLayer(&save_layer_bounds,
nullptr, &backdrop);
86 canvas->Translate(201.25, 10);
87 auto paint = DlPaint()
89 .setColor(DlColor(0xff2196f3))
91 .setDrawStyle(DlDrawStyle::kStroke);
92 canvas->DrawCircle(SkPoint::Make(80, 80), 80,
paint);
99 DisplayListBuilder builder;
100 std::vector<sk_sp<DlImage>> images;
101 draw(&builder, images);
103 ASSERT_TRUE(OpenPlaygroundHere(builder.Build()));
107 void DrawBlurGrid(DlCanvas* canvas) {
109 paint.setColor(DlColor(0xfffef7ff));
113 std::vector<Scalar> blur_radii = {10, 30, 50};
114 for (
size_t i = 0; i < blur_radii.size(); ++i) {
116 auto blur_filter = std::make_shared<flutter::DlBlurMaskFilter>(
118 paint.setMaskFilter(blur_filter);
120 Scalar yval = gap + i * (gap + height);
121 rrect.setNinePatch(SkRect::MakeXYWH(gap, yval, width, height), 10, 10, 10,
123 canvas->DrawRRect(rrect,
paint);
124 rrect.setNinePatch(SkRect::MakeXYWH(2.0 * gap + width, yval, width, height),
126 canvas->DrawRRect(rrect,
paint);
132 Point content_scale = GetContentScale();
133 auto draw = [content_scale](DlCanvas* canvas,
134 const std::vector<sk_sp<DlImage>>& images) {
135 canvas->Scale(content_scale.x, content_scale.y);
136 canvas->DrawPaint(DlPaint().setColor(DlColor(0xff112233)));
137 DrawBlurGrid(canvas);
140 DisplayListBuilder builder;
141 std::vector<sk_sp<DlImage>> images;
142 draw(&builder, images);
144 ASSERT_TRUE(OpenPlaygroundHere(builder.Build()));
148 Point content_scale = GetContentScale();
149 auto draw = [content_scale](DlCanvas* canvas,
150 const std::vector<sk_sp<DlImage>>& images) {
151 canvas->Scale(content_scale.x, content_scale.y);
152 canvas->DrawPaint(DlPaint().setColor(DlColor(0xff112233)));
153 canvas->Scale(0.33, 0.33);
154 DrawBlurGrid(canvas);
157 DisplayListBuilder builder;
158 std::vector<sk_sp<DlImage>> images;
159 draw(&builder, images);
161 ASSERT_TRUE(OpenPlaygroundHere(builder.Build()));
165 Point content_scale = GetContentScale();
166 auto draw = [content_scale](DlCanvas* canvas,
167 const std::vector<sk_sp<DlImage>>& images) {
168 canvas->Scale(content_scale.x, content_scale.y);
169 canvas->Translate(200, 200);
170 canvas->DrawPaint(DlPaint().setColor(DlColor(0xff112233)));
171 canvas->Scale(0.33, 0.33);
172 canvas->Translate(300, 300);
174 canvas->Translate(-300, -300);
175 DrawBlurGrid(canvas);
178 DisplayListBuilder builder;
179 std::vector<sk_sp<DlImage>> images;
180 draw(&builder, images);
182 ASSERT_TRUE(OpenPlaygroundHere(builder.Build()));
186 Point content_scale = GetContentScale();
187 auto draw = [content_scale](DlCanvas* canvas,
188 const std::vector<sk_sp<DlImage>>& images) {
189 canvas->Scale(content_scale.x, content_scale.y);
190 canvas->DrawPaint(DlPaint().setColor(DlColor::kWhite()));
192 auto draw_one = [canvas](DlStrokeCap cap,
Scalar x,
Scalar y,
197 DlPaint thick_paint = DlPaint()
198 .setColor(DlColor::kBlue())
200 .setStrokeWidth(8.0f);
201 DlPaint middle_paint = DlPaint()
202 .setColor(DlColor::kGreen())
204 .setStrokeWidth(5.0f);
205 DlPaint thin_paint = DlPaint()
206 .setColor(DlColor::kMagenta())
208 .setStrokeWidth(2.0f);
209 for (
int degrees = 0; degrees < 360; degrees += 30) {
211 canvas->DrawDashedLine(center + inner * delta, center + outer * delta,
212 dash_on, dash_off, thick_paint);
213 canvas->DrawDashedLine(center + inner * delta, center + outer * delta,
214 dash_on, dash_off, middle_paint);
215 canvas->DrawDashedLine(center + inner * delta, center + outer * delta,
216 dash_on, dash_off, thin_paint);
220 draw_one(DlStrokeCap::kButt, 150.0f, 150.0f, 15.0f, 10.0f);
221 draw_one(DlStrokeCap::kSquare, 400.0f, 150.0f, 15.0f, 10.0f);
222 draw_one(DlStrokeCap::kRound, 150.0f, 400.0f, 15.0f, 10.0f);
223 draw_one(DlStrokeCap::kRound, 400.0f, 400.0f, 0.0f, 11.0f);
227 SkPath clip_path = SkPath();
228 clip_path.moveTo(275.0f, 225.0f);
229 clip_path.lineTo(325.0f, 275.0f);
230 clip_path.lineTo(275.0f, 325.0f);
231 clip_path.lineTo(225.0f, 275.0f);
232 canvas->ClipPath(clip_path);
233 canvas->DrawColor(DlColor::kYellow());
234 draw_one(DlStrokeCap::kRound, 275.0f, 275.0f, 15.0f, 10.0f);
238 DisplayListBuilder builder;
239 std::vector<sk_sp<DlImage>> images;
240 draw(&builder, images);
242 ASSERT_TRUE(OpenPlaygroundHere(builder.Build()));