Flutter Engine
The Flutter Engine
dl_test_snippets.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_DISPLAY_LIST_TESTING_DL_TEST_SNIPPETS_H_
6#define FLUTTER_DISPLAY_LIST_TESTING_DL_TEST_SNIPPETS_H_
7
8#include "flutter/display_list/display_list.h"
9#include "flutter/display_list/dl_builder.h"
10#include "flutter/testing/testing.h"
11
16
17namespace flutter {
18namespace testing {
19
23
24typedef const std::function<void(DlOpReceiver&)> DlInvoker;
25
26constexpr SkPoint kEndPoints[] = {
27 {0, 0},
28 {100, 100},
29};
30const DlColor kColors[] = {
34};
35constexpr float kStops[] = {
36 0.0,
37 0.5,
38 1.0,
39};
40
41// clang-format off
42constexpr float kRotateColorMatrix[20] = {
43 0, 1, 0, 0, 0,
44 0, 0, 1, 0, 0,
45 1, 0, 0, 0, 0,
46 0, 0, 0, 1, 0,
47};
48constexpr float kInvertColorMatrix[20] = {
49 -1.0, 0, 0, 1.0, 0,
50 0, -1.0, 0, 1.0, 0,
51 0, 0, -1.0, 1.0, 0,
52 1.0, 1.0, 1.0, 1.0, 0,
53};
54// clang-format on
55
56constexpr SkPoint kTestPoints[] = {
57 {10, 10},
58 {20, 20},
59 {10, 20},
60 {20, 10},
61};
62#define TestPointCount sizeof(kTestPoints) / (sizeof(kTestPoints[0]))
63
66
67static sk_sp<DlImage> MakeTestImage(int w, int h, int checker_size) {
70 SkCanvas* canvas = surface->getCanvas();
71 SkPaint p0, p1;
76 p1.setAlpha(128);
77 for (int y = 0; y < w; y += checker_size) {
78 for (int x = 0; x < h; x += checker_size) {
79 SkPaint& cellp = ((x + y) & 1) == 0 ? p0 : p1;
80 canvas->drawRect(SkRect::MakeXYWH(x, y, checker_size, checker_size),
81 cellp);
82 }
83 }
84 return DlImage::Make(surface->makeImageSnapshot());
85}
86
87static auto TestImage1 = MakeTestImage(40, 40, 5);
88static auto TestImage2 = MakeTestImage(50, 50, 5);
89static auto TestSkImage = MakeTestImage(30, 30, 5)->skia_image();
90
95static const std::shared_ptr<DlColorSource> kTestSource2 =
97 kEndPoints[1],
98 3,
99 kColors,
100 kStops,
102static const std::shared_ptr<DlColorSource> kTestSource3 =
104 10.0,
105 3,
106 kColors,
107 kStops,
109static const std::shared_ptr<DlColorSource> kTestSource4 =
111 10.0,
112 kEndPoints[1],
113 200.0,
114 3,
115 kColors,
116 kStops,
118static const std::shared_ptr<DlColorSource> kTestSource5 =
120 0.0,
121 360.0,
122 3,
123 kColors,
124 kStops,
135 5.0,
138 5.0,
141 6.0,
144 5.0,
179constexpr SkRect kTestBounds = SkRect::MakeLTRB(10, 10, 50, 60);
186static const SkPath kTestPath1 =
187 SkPath::Polygon({{0, 0}, {10, 10}, {10, 0}, {0, 10}}, true);
188static const SkPath kTestPath2 =
189 SkPath::Polygon({{0, 0}, {10, 10}, {0, 10}, {10, 0}}, true);
190static const SkPath kTestPath3 =
191 SkPath::Polygon({{0, 0}, {10, 10}, {10, 0}, {0, 10}}, false);
194
195static std::shared_ptr<const DlVertices> TestVertices1 =
197 3,
199 nullptr,
200 kColors);
201static std::shared_ptr<const DlVertices> TestVertices2 =
203 3,
205 nullptr,
206 kColors);
207
211 return builder.Build();
212}
217
219
221
223 // ----------------------------------
224 // Required fields for initialization
225 uint32_t op_count_;
227
229
231 // ----------------------------------
232
233 // ----------------------------------
234 // Optional fields for initialization
235 uint32_t additional_depth_ = 0u;
237 // ----------------------------------
238
239 bool is_empty() { return byte_count_ == 0; }
240
241 uint32_t op_count() { return op_count_; }
242 // byte count for the individual ops, no DisplayList overhead
243 size_t raw_byte_count() { return byte_count_; }
244 // byte count for the ops with DisplayList overhead, comparable
245 // to |DisplayList.byte_count().
246 size_t byte_count() { return sizeof(DisplayList) + byte_count_; }
247
248 uint32_t depth_accumulated(uint32_t depth_scale = 1u) {
249 return depth_op_count_ * depth_scale + additional_depth_;
250 }
251 uint32_t depth_op_count() { return depth_op_count_; }
252 uint32_t additional_depth() { return additional_depth_; }
253 uint32_t adjust_render_op_depth_cost(uint32_t previous_cost) {
254 return render_op_cost_override_ == 0u //
255 ? previous_cost
257 }
258
260};
261
263 std::string op_name;
264 std::vector<DisplayListInvocation> variants;
265};
266
267std::vector<DisplayListInvocationGroup> CreateAllRenderingOps();
268std::vector<DisplayListInvocationGroup> CreateAllGroups();
269
270} // namespace testing
271} // namespace flutter
272
273#endif // FLUTTER_DISPLAY_LIST_TESTING_DL_TEST_SNIPPETS_H_
SkPathOp ops[]
uint32_t SkColor
Definition: SkColor.h:37
constexpr SkColor SK_ColorBLUE
Definition: SkColor.h:135
constexpr SkColor SK_ColorGREEN
Definition: SkColor.h:131
void drawRect(const SkRect &rect, const SkPaint &paint)
Definition: SkCanvas.cpp:1673
Definition: SkFont.h:35
static SkMatrix Scale(SkScalar sx, SkScalar sy)
Definition: SkMatrix.h:75
static SkMatrix RotateDeg(SkScalar deg)
Definition: SkMatrix.h:104
void setStyle(Style style)
Definition: SkPaint.cpp:105
void setColor(SkColor color)
Definition: SkPaint.cpp:119
@ kFill_Style
set to fill geometry
Definition: SkPaint.h:193
void setAlpha(U8CPU a)
Definition: SkPaint.h:279
Definition: SkPath.h:59
static SkPath Rect(const SkRect &, SkPathDirection=SkPathDirection::kCW, unsigned startIndex=0)
Definition: SkPath.cpp:3586
static SkPath Oval(const SkRect &, SkPathDirection=SkPathDirection::kCW)
Definition: SkPath.cpp:3590
static SkPath Polygon(const SkPoint pts[], int count, bool isClosed, SkPathFillType=SkPathFillType::kWinding, bool isVolatile=false)
Definition: SkPath.cpp:3614
static SkRRect MakeRect(const SkRect &r)
Definition: SkRRect.h:149
static SkRRect MakeRectXY(const SkRect &rect, SkScalar xRad, SkScalar yRad)
Definition: SkRRect.h:180
static std::shared_ptr< DlConicalGradientColorSource > MakeConical(SkPoint start_center, SkScalar start_radius, SkPoint end_center, SkScalar end_radius, uint32_t stop_count, const DlColor *colors, const float *stops, DlTileMode tile_mode, const SkMatrix *matrix=nullptr)
static std::shared_ptr< DlLinearGradientColorSource > MakeLinear(const SkPoint start_point, const SkPoint end_point, uint32_t stop_count, const DlColor *colors, const float *stops, DlTileMode tile_mode, const SkMatrix *matrix=nullptr)
static std::shared_ptr< DlSweepGradientColorSource > MakeSweep(SkPoint center, SkScalar start, SkScalar end, uint32_t stop_count, const DlColor *colors, const float *stops, DlTileMode tile_mode, const SkMatrix *matrix=nullptr)
static std::shared_ptr< DlRadialGradientColorSource > MakeRadial(SkPoint center, SkScalar radius, uint32_t stop_count, const DlColor *colors, const float *stops, DlTileMode tile_mode, const SkMatrix *matrix=nullptr)
static sk_sp< DlImage > Make(const SkImage *image)
Definition: dl_image.cc:11
Internal API for rendering recorded display lists to backends.
static std::shared_ptr< DlVertices > Make(DlVertexMode mode, int vertex_count, const SkPoint vertices[], const SkPoint texture_coordinates[], const DlColor colors[], int index_count=0, const uint16_t indices[]=nullptr)
Constructs a DlVector with compact inline storage for all of its required and optional lists of data.
Definition: dl_vertices.cc:39
DlColor color
VkSurfaceKHR surface
Definition: main.cc:49
float SkScalar
Definition: extension.cpp:12
Dart_NativeFunction function
Definition: fuchsia.cc:51
double y
double x
SK_API sk_sp< SkSurface > Raster(const SkImageInfo &imageInfo, size_t rowBytes, const SkSurfaceProps *surfaceProps)
static const DlComposeImageFilter kTestComposeImageFilter2(kTestBlurImageFilter2, kTestMatrixImageFilter1)
static const DlDilateImageFilter kTestDilateImageFilter2(6.0, 5.0)
static const std::shared_ptr< DlColorSource > kTestSource3
constexpr SkRect kTestBounds
constexpr float kStops[]
static auto TestSkImage
const std::function< void(DlOpReceiver &)> DlInvoker
static const DlMatrixImageFilter kTestMatrixImageFilter1(SkMatrix::RotateDeg(45), kNearestSampling)
SkFont CreateTestFontOfSize(SkScalar scalar)
static const DlBlurMaskFilter kTestMaskFilter1(DlBlurStyle::kNormal, 3.0)
static const std::shared_ptr< DlColorSource > kTestSource4
static const SkRRect kTestInnerRRect
static const DlBlurMaskFilter kTestMaskFilter4(DlBlurStyle::kInner, 3.0)
static const SkPath kTestPath1
static const DlComposeImageFilter kTestComposeImageFilter1(kTestBlurImageFilter1, kTestMatrixImageFilter1)
static std::shared_ptr< const DlVertices > TestVertices2
static const DlColorFilterImageFilter kTestCFImageFilter2(kTestBlendColorFilter2)
constexpr float kRotateColorMatrix[20]
static const DlErodeImageFilter kTestErodeImageFilter2(4.0, 3.0)
constexpr SkPoint kEndPoints[]
static const DlMatrixColorFilter kTestMatrixColorFilter2(kInvertColorMatrix)
static const DlBlurMaskFilter kTestMaskFilter3(DlBlurStyle::kSolid, 3.0)
static const DlImageColorSource kTestSource1(TestImage1, DlTileMode::kClamp, DlTileMode::kMirror, kLinearSampling)
static const DlBlurImageFilter kTestBlurImageFilter4(5.0, 5.0, DlTileMode::kDecal)
static const DlErodeImageFilter kTestErodeImageFilter3(3.0, 4.0)
static const SkMatrix kTestMatrix2
static const DlMatrixImageFilter kTestMatrixImageFilter3(SkMatrix::RotateDeg(45), kLinearSampling)
static const DlColorFilterImageFilter kTestCFImageFilter1(kTestBlendColorFilter1)
static constexpr SkPoint kTestPoints[2]
static const std::shared_ptr< DlColorSource > kTestSource5
constexpr float kInvertColorMatrix[20]
static const DlErodeImageFilter kTestErodeImageFilter1(4.0, 4.0)
static const SkRRect kTestRRect
sk_sp< DisplayList > GetSampleDisplayList()
static const std::shared_ptr< DlColorSource > kTestSource2
static const DlBlurMaskFilter kTestMaskFilter2(DlBlurStyle::kNormal, 5.0)
static const DlBlurImageFilter kTestBlurImageFilter2(6.0, 5.0, DlTileMode::kClamp)
static const DlBlendColorFilter kTestBlendColorFilter2(DlColor::kBlue(), DlBlendMode::kDstATop)
static const SkMatrix kTestMatrix1
static const DlBlendColorFilter kTestBlendColorFilter1(DlColor::kRed(), DlBlendMode::kDstATop)
static auto TestImage1
static const DlMatrixColorFilter kTestMatrixColorFilter1(kRotateColorMatrix)
static const DlBlendColorFilter kTestBlendColorFilter3(DlColor::kRed(), DlBlendMode::kDstIn)
static DlImageSampling kLinearSampling
static sk_sp< DisplayList > TestDisplayList2
static const DlMatrixImageFilter kTestMatrixImageFilter2(SkMatrix::RotateDeg(85), kNearestSampling)
static std::shared_ptr< const DlVertices > TestVertices1
static const SkPath kTestPath2
static const DlBlurImageFilter kTestBlurImageFilter3(5.0, 6.0, DlTileMode::kClamp)
std::vector< DisplayListInvocationGroup > CreateAllRenderingOps()
static const SkPath kTestPathRect
static const DlDilateImageFilter kTestDilateImageFilter1(5.0, 5.0)
static const SkRRect kTestRRectRect
sk_sp< DisplayList > GetSampleNestedDisplayList()
static DlImageSampling kNearestSampling
static const DlBlurMaskFilter kTestMaskFilter5(DlBlurStyle::kOuter, 3.0)
sk_sp< SkTextBlob > GetTestTextBlob(int index)
static const DlDilateImageFilter kTestDilateImageFilter3(5.0, 6.0)
static sk_sp< DlImage > MakeTestImage(int w, int h, SkColor color)
static sk_sp< DisplayList > MakeTestDisplayList(int w, int h, SkColor color)
static const DlBlurImageFilter kTestBlurImageFilter1(5.0, 5.0, DlTileMode::kClamp)
static auto TestImage2
static const SkPath kTestPathOval
std::vector< DisplayListInvocationGroup > CreateAllGroups()
static const DlComposeImageFilter kTestComposeImageFilter3(kTestBlurImageFilter1, kTestMatrixImageFilter2)
static const SkPath kTestPath3
const DlColor kColors[]
static sk_sp< DisplayList > TestDisplayList1
@ kTriangles
The vertices are taken 3 at a time to form a triangle.
@ kNormal
fuzzy inside and outside
@ kOuter
nothing inside, fuzzy outside
@ kInner
fuzzy inside, nothing outside
@ kSolid
solid inside, fuzzy outside
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot The VM snapshot data that will be memory mapped as read only SnapshotAssetPath must be present isolate snapshot The isolate snapshot data that will be memory mapped as read only SnapshotAssetPath must be present cache dir Path to the cache directory This is different from the persistent_cache_path in embedder h
Definition: switches.h:59
@ kDstATop
r = d*sa + s*(1-da)
flutter::DisplayList DisplayList
flutter::DlColor DlColor
flutter::DlPaint DlPaint
SkScalar w
static SkImageInfo MakeN32Premul(int width, int height)
static constexpr SkRect MakeXYWH(float x, float y, float w, float h)
Definition: SkRect.h:659
SkRect makeInset(float dx, float dy) const
Definition: SkRect.h:987
static constexpr SkRect MakeWH(float w, float h)
Definition: SkRect.h:609
static constexpr SkRect MakeLTRB(float l, float t, float r, float b)
Definition: SkRect.h:646
static constexpr DlColor kBlue()
Definition: dl_color.h:26
static constexpr DlColor kYellow()
Definition: dl_color.h:29
static constexpr DlColor kRed()
Definition: dl_color.h:24
static constexpr DlColor kGreen()
Definition: dl_color.h:25
std::vector< DisplayListInvocation > variants
uint32_t adjust_render_op_depth_cost(uint32_t previous_cost)
uint32_t depth_accumulated(uint32_t depth_scale=1u)
void Invoke(DlOpReceiver &builder)