Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
dl_paint_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/display_list/dl_paint.h"
6
7#include "flutter/display_list/utils/dl_comparable.h"
8#include "gtest/gtest.h"
9
10namespace flutter {
11namespace testing {
12
13TEST(DisplayListPaint, ConstructorDefaults) {
15 EXPECT_FALSE(paint.isAntiAlias());
16 EXPECT_FALSE(paint.isInvertColors());
17 EXPECT_EQ(paint.getColor(), DlPaint::kDefaultColor);
18 EXPECT_EQ(paint.getAlpha(), 0xFF);
19 EXPECT_EQ(paint.getBlendMode(), DlBlendMode::kDefaultMode);
20 EXPECT_EQ(paint.getDrawStyle(), DlDrawStyle::kDefaultStyle);
21 EXPECT_EQ(paint.getStrokeCap(), DlStrokeCap::kDefaultCap);
22 EXPECT_EQ(paint.getStrokeJoin(), DlStrokeJoin::kDefaultJoin);
23 EXPECT_EQ(paint.getStrokeWidth(), DlPaint::kDefaultWidth);
24 EXPECT_EQ(paint.getStrokeMiter(), DlPaint::kDefaultMiter);
25 EXPECT_EQ(paint.getColorSource(), nullptr);
26 EXPECT_EQ(paint.getColorFilter(), nullptr);
27 EXPECT_EQ(paint.getImageFilter(), nullptr);
28 EXPECT_EQ(paint.getMaskFilter(), nullptr);
29 EXPECT_EQ(paint.getPathEffect(), nullptr);
30 EXPECT_TRUE(paint.isDefault());
31 EXPECT_EQ(paint, DlPaint::kDefault);
32
37
39 EXPECT_EQ(DlPaint::kDefaultWidth, 0.0);
40 EXPECT_EQ(DlPaint::kDefaultMiter, 4.0);
41
42 EXPECT_EQ(paint, DlPaint());
43 EXPECT_EQ(paint, DlPaint(DlColor::kBlack()));
44 EXPECT_EQ(paint, DlPaint(DlColor(0xFF000000)));
45
46 EXPECT_NE(paint, DlPaint().setAntiAlias(true));
47 EXPECT_NE(paint, DlPaint().setInvertColors(true));
48 EXPECT_NE(paint, DlPaint().setColor(DlColor::kGreen()));
49 EXPECT_NE(paint, DlPaint(DlColor::kGreen()));
50 EXPECT_NE(paint, DlPaint(DlColor(0xFF00FF00)));
51 EXPECT_NE(paint, DlPaint().setAlpha(0x7f));
52 EXPECT_NE(paint, DlPaint().setBlendMode(DlBlendMode::kDstIn));
53 EXPECT_NE(paint, DlPaint().setDrawStyle(DlDrawStyle::kStrokeAndFill));
54 EXPECT_NE(paint, DlPaint().setStrokeCap(DlStrokeCap::kRound));
55 EXPECT_NE(paint, DlPaint().setStrokeJoin(DlStrokeJoin::kRound));
56 EXPECT_NE(paint, DlPaint().setStrokeWidth(6));
57 EXPECT_NE(paint, DlPaint().setStrokeMiter(7));
58
60 EXPECT_NE(paint, DlPaint().setColorSource(color_source.shared()));
61
63 EXPECT_NE(paint, DlPaint().setColorFilter(color_filter.shared()));
64
65 DlBlurImageFilter image_filter(1.3, 4.7, DlTileMode::kClamp);
66 EXPECT_NE(paint, DlPaint().setImageFilter(image_filter.shared()));
67
68 DlBlurMaskFilter mask_filter(DlBlurStyle::kInner, 3.14);
69 EXPECT_NE(paint, DlPaint().setMaskFilter(mask_filter.shared()));
70
71 SkScalar intervals[] = {1.0f, 2.0f};
72 auto path_effect = DlDashPathEffect::Make(intervals, 2, 0.0f);
73 EXPECT_NE(paint, DlPaint().setPathEffect(path_effect.get()));
74}
75
76TEST(DisplayListPaint, NullPointerSetGet) {
77 DlColorSource* null_color_source = nullptr;
78 DlColorFilter* null_color_filter = nullptr;
79 DlImageFilter* null_image_filter = nullptr;
80 DlMaskFilter* null_mask_filter = nullptr;
81 DlPathEffect* null_path_effect = nullptr;
83 EXPECT_EQ(paint.setColorSource(null_color_source).getColorSource(), nullptr);
84 EXPECT_EQ(paint.setColorFilter(null_color_filter).getColorFilter(), nullptr);
85 EXPECT_EQ(paint.setImageFilter(null_image_filter).getImageFilter(), nullptr);
86 EXPECT_EQ(paint.setMaskFilter(null_mask_filter).getMaskFilter(), nullptr);
87 EXPECT_EQ(paint.setPathEffect(null_path_effect).getPathEffect(), nullptr);
88}
89
90TEST(DisplayListPaint, NullSharedPointerSetGet) {
91 std::shared_ptr<DlColorSource> null_color_source;
92 std::shared_ptr<DlColorFilter> null_color_filter;
93 std::shared_ptr<DlImageFilter> null_image_filter;
94 std::shared_ptr<DlMaskFilter> null_mask_filter;
95 std::shared_ptr<DlPathEffect> null_path_effect;
97 EXPECT_EQ(paint.setColorSource(null_color_source).getColorSource(), nullptr);
98 EXPECT_EQ(paint.setColorFilter(null_color_filter).getColorFilter(), nullptr);
99 EXPECT_EQ(paint.setImageFilter(null_image_filter).getImageFilter(), nullptr);
100 EXPECT_EQ(paint.setMaskFilter(null_mask_filter).getMaskFilter(), nullptr);
101 EXPECT_EQ(paint.setPathEffect(null_path_effect).getPathEffect(), nullptr);
102}
103
104TEST(DisplayListPaint, ChainingConstructor) {
105 SkScalar intervals[] = {1.0f, 2.0f};
106 auto path_effect = DlDashPathEffect::Make(intervals, 2, 0.0f);
107
108 DlPaint paint =
109 DlPaint() //
110 .setAntiAlias(true) //
111 .setInvertColors(true) //
113 .setAlpha(0x7F) //
118 .setStrokeWidth(42) //
119 .setStrokeMiter(1.5) //
123 .shared())
125 DlBlurImageFilter(1.3, 4.7, DlTileMode::kClamp).shared())
127 .setPathEffect(path_effect);
128 EXPECT_TRUE(paint.isAntiAlias());
129 EXPECT_TRUE(paint.isInvertColors());
130 EXPECT_EQ(paint.getColor(), DlColor::kGreen().withAlpha(0x7F));
131 EXPECT_EQ(paint.getAlpha(), 0x7F);
132 EXPECT_EQ(paint.getBlendMode(), DlBlendMode::kLuminosity);
133 EXPECT_EQ(paint.getDrawStyle(), DlDrawStyle::kStrokeAndFill);
134 EXPECT_EQ(paint.getStrokeCap(), DlStrokeCap::kSquare);
135 EXPECT_EQ(paint.getStrokeJoin(), DlStrokeJoin::kBevel);
136 EXPECT_EQ(paint.getStrokeWidth(), 42);
137 EXPECT_EQ(paint.getStrokeMiter(), 1.5);
138 EXPECT_EQ(*paint.getColorSource(), DlColorColorSource(DlColor::kMagenta()));
139 EXPECT_EQ(*paint.getColorFilter(),
141 EXPECT_EQ(*paint.getImageFilter(),
143 EXPECT_EQ(*paint.getMaskFilter(),
145 EXPECT_EQ(*paint.getPathEffect(), *path_effect);
146
147 EXPECT_NE(paint, DlPaint());
148}
149
150} // namespace testing
151} // namespace flutter
#define TEST(S, s, D, expected)
static sk_sp< SkImage > color_filter(const SkImage *image, SkColorFilter *colorFilter)
std::shared_ptr< DlImageFilter > shared() const override
std::shared_ptr< DlMaskFilter > shared() const override
std::shared_ptr< DlColorSource > shared() const override
static std::shared_ptr< DlPathEffect > Make(const SkScalar intervals[], int count, SkScalar phase)
DlPaint & setPathEffect(const std::shared_ptr< DlPathEffect > &pathEffect)
Definition dl_paint.h:184
DlPaint & setColor(DlColor color)
Definition dl_paint.h:71
DlPaint & setAntiAlias(bool isAntiAlias)
Definition dl_paint.h:59
static const DlPaint kDefault
Definition dl_paint.h:53
DlPaint & setInvertColors(bool isInvertColors)
Definition dl_paint.h:65
DlPaint & setColorFilter(const std::shared_ptr< const DlColorFilter > &filter)
Definition dl_paint.h:145
static constexpr float kDefaultWidth
Definition dl_paint.h:50
DlPaint & setMaskFilter(const std::shared_ptr< DlMaskFilter > &filter)
Definition dl_paint.h:171
DlPaint & setStrokeCap(DlStrokeCap cap)
Definition dl_paint.h:103
DlPaint & setStrokeWidth(float width)
Definition dl_paint.h:117
DlPaint & setAlpha(uint8_t alpha)
Definition dl_paint.h:77
DlPaint & setStrokeMiter(float miter)
Definition dl_paint.h:123
DlPaint & setBlendMode(DlBlendMode mode)
Definition dl_paint.h:87
static constexpr float kDefaultMiter
Definition dl_paint.h:51
DlPaint & setImageFilter(const std::shared_ptr< const DlImageFilter > &filter)
Definition dl_paint.h:158
DlPaint & setDrawStyle(DlDrawStyle style)
Definition dl_paint.h:95
static constexpr DlColor kDefaultColor
Definition dl_paint.h:49
DlPaint & setStrokeJoin(DlStrokeJoin join)
Definition dl_paint.h:111
DlPaint & setColorSource(std::shared_ptr< const DlColorSource > source)
Definition dl_paint.h:132
const Paint & paint
float SkScalar
Definition extension.cpp:12
@ kMiter
extends to miter limit
@ kBevel
connects outside edges
@ kRound
adds circle
@ kButt
no stroke extension
@ kSquare
adds square
@ kStrokeAndFill
both strokes and fills shapes
@ kFill
fills interior of shapes
@ kInner
fuzzy inside, nothing outside
@ kSrcOver
r = s + (1-sa)*d
@ kLuminosity
luminosity of source with hue and saturation of destination
static constexpr DlColor kMagenta()
Definition dl_color.h:28
static constexpr DlColor kBlack()
Definition dl_color.h:22
static constexpr DlColor kYellow()
Definition dl_color.h:29
constexpr DlColor withAlpha(uint8_t alpha) const
Definition dl_color.h:59
static constexpr DlColor kGreen()
Definition dl_color.h:25
#define EXPECT_TRUE(handle)
Definition unit_test.h:685