5 #include "display_list/dl_blend_mode.h"
6 #include "display_list/dl_color.h"
7 #include "display_list/dl_tile_mode.h"
8 #include "flutter/testing/testing.h"
13 #include "include/core/SkMatrix.h"
14 #include "include/core/SkRRect.h"
19 TEST(SkiaConversionTest, ToMatrixTranslate) {
20 SkMatrix sk_matrix = SkMatrix::Translate(100, 100);
23 EXPECT_EQ(matrix.
m[12], 100);
24 EXPECT_EQ(matrix.
m[13], 100);
33 TEST(SkiaConversionTest, ToMatrixScale) {
34 SkMatrix sk_matrix = SkMatrix::Scale(2, 2);
37 EXPECT_EQ(matrix.
m[0], 2);
38 EXPECT_EQ(matrix.
m[5], 2);
47 TEST(SkiaConversionTest, ToMatrixRotate) {
48 SkMatrix sk_matrix = SkMatrix::RotateDeg(90);
52 EXPECT_EQ(matrix.
vec[1],
Vector4(-1, 0, 0, 0));
58 TEST(SkiaConversionTest, ToMatrixSkew) {
59 SkMatrix sk_matrix = SkMatrix::Skew(2, 2);
71 flutter::DlImageSampling::kNearestNeighbor)
75 flutter::DlImageSampling::kNearestNeighbor)
89 flutter::DlImageSampling::kMipmapLinear)
93 flutter::DlImageSampling::kMipmapLinear)
98 TEST(SkiaConversionsTest, SkPointToPoint) {
99 for (
int x = -100;
x < 100;
x += 4) {
100 for (
int y = -100; y < 100; y += 4) {
102 Point(
x * 0.25f, y * 0.25f));
107 TEST(SkiaConversionsTest, SkPointToSize) {
108 for (
int x = -100;
x < 100;
x += 4) {
109 for (
int y = -100; y < 100; y += 4) {
111 Size(
x * 0.25f, y * 0.25f));
121 const flutter::DlColor color = flutter::DlColor(0x8040C020);
130 TEST(SkiaConversionsTest, GradientStopConversion) {
132 std::vector<flutter::DlColor> colors = {flutter::DlColor::kBlue(),
133 flutter::DlColor::kRed(),
134 flutter::DlColor::kGreen()};
135 std::vector<float> stops = {0.0, 0.5, 1.0};
136 const auto gradient =
142 flutter::DlTileMode::kClamp,
146 std::vector<Color> converted_colors;
147 std::vector<Scalar> converted_stops;
156 TEST(SkiaConversionsTest, GradientMissing0) {
157 std::vector<flutter::DlColor> colors = {flutter::DlColor::kBlue(),
158 flutter::DlColor::kRed()};
159 std::vector<float> stops = {0.5, 1.0};
160 const auto gradient =
166 flutter::DlTileMode::kClamp,
170 std::vector<Color> converted_colors;
171 std::vector<Scalar> converted_stops;
182 TEST(SkiaConversionsTest, GradientMissingLastValue) {
183 std::vector<flutter::DlColor> colors = {flutter::DlColor::kBlue(),
184 flutter::DlColor::kRed()};
185 std::vector<float> stops = {0.0, .5};
186 const auto gradient =
192 flutter::DlTileMode::kClamp,
196 std::vector<Color> converted_colors;
197 std::vector<Scalar> converted_stops;
208 TEST(SkiaConversionsTest, GradientStopGreaterThan1) {
209 std::vector<flutter::DlColor> colors = {flutter::DlColor::kBlue(),
210 flutter::DlColor::kGreen(),
211 flutter::DlColor::kRed()};
212 std::vector<float> stops = {0.0, 100, 1.0};
213 const auto gradient =
219 flutter::DlTileMode::kClamp,
223 std::vector<Color> converted_colors;
224 std::vector<Scalar> converted_stops;
234 TEST(SkiaConversionsTest, GradientConversionNonMonotonic) {
235 std::vector<flutter::DlColor> colors = {
236 flutter::DlColor::kBlue(), flutter::DlColor::kGreen(),
237 flutter::DlColor::kGreen(), flutter::DlColor::kRed()};
238 std::vector<float> stops = {0.0, 0.5, 0.4, 1.0};
239 const auto gradient =
245 flutter::DlTileMode::kClamp,
249 std::vector<Color> converted_colors;
250 std::vector<Scalar> converted_stops;
263 SkRRect::MakeRectXY(SkRect::MakeLTRB(0, 0, 10, 10), 10, 10)));
265 SkRRect::MakeRectXY(SkRect::MakeLTRB(0, 0, 10, 10), 10, 9.999)));
267 SkRRect::MakeRectXY(SkRect::MakeLTRB(0, 0, 10, 10), 10, 9)));
269 SkRRect::MakeRectXY(SkRect::MakeLTRB(0, 0, 10, 10), 10, 5)));
270 SkRect rect = SkRect::MakeLTRB(0, 0, 10, 10);
281 rrect.setRectRadii(rect, test.radii);
283 for (
int i = 0; i < 8; i++) {
284 auto save = test.values[i];
286 rrect.setRectRadii(rect, test.radii);
288 <<
"values[" << i <<
"] == " << test.values[i];
290 rrect.setRectRadii(rect, test.radii);
292 <<
"values[" << i <<
"] == " << test.values[i];
293 test.values[i] = save;
298 for (
auto i = 0; i < static_cast<int>(flutter::DlBlendMode::kLastMode); i++) {
Matrix ToMatrix(const SkMatrix &m)
BlendMode ToBlendMode(flutter::DlBlendMode mode)
void ConvertStops(const flutter::DlGradientColorSourceBase *gradient, std::vector< Color > &colors, std::vector< float > &stops)
Convert display list colors + stops into impeller colors and stops, taking care to ensure that the st...
Point ToPoint(const SkPoint &point)
Size ToSize(const SkPoint &point)
impeller::SamplerDescriptor ToSamplerDescriptor(const flutter::DlImageSampling options)
bool IsNearlySimpleRRect(const SkRRect &rr)
Like SkRRect.isSimple, but allows the corners to differ by kEhCloseEnough.
Color ToColor(const flutter::DlColor &color)
TEST(AllocationSizeTest, CanCreateTypedAllocations)
constexpr float kEhCloseEnough
@ kLinear
Sample from the two nearest mip levels and linearly interpolate.
@ kBase
The texture is sampled as if it only had a single mipmap level.
static impeller::SamplerDescriptor ToSamplerDescriptor(const flutter::DlFilterMode options)
constexpr bool ScalarNearlyEqual(Scalar x, Scalar y, Scalar tolerance=kEhCloseEnough)
@ kNearest
Select nearest to the sample point. Most widely supported.
A 4x4 matrix using column-major storage.
constexpr bool IsIdentity() const
constexpr bool IsTranslationScaleOnly() const
Returns true if the matrix has a scale-only basis and is non-projective. Note that an identity matrix...