65TEST(DisplayListColorSource, ImageConstructor) {
71TEST(DisplayListColorSource, ImageShared) {
75 ASSERT_NE(source.
shared().get(), &source);
76 ASSERT_EQ(*source.
shared(), source);
79TEST(DisplayListColorSource, ImageAsImage) {
83 ASSERT_NE(source.
asImage(),
nullptr);
84 ASSERT_EQ(source.
asImage(), &source);
93TEST(DisplayListColorSource, ImageContents) {
105TEST(DisplayListColorSource, AlphaImageContents) {
117TEST(DisplayListColorSource, ImageEquals) {
127TEST(DisplayListColorSource, ImageNotEquals) {
163TEST(DisplayListColorSource, LinearGradientConstructor) {
169TEST(DisplayListColorSource, LinearGradientARGBConstructor) {
170 std::array<DlScalar, kTestStopCount * 4> colors;
181 ASSERT_TRUE(source->asLinearGradient());
182 EXPECT_EQ(source->asLinearGradient()->start_point(),
kTestPoints1[0]);
183 EXPECT_EQ(source->asLinearGradient()->end_point(),
kTestPoints1[1]);
184 EXPECT_EQ(source->asLinearGradient()->stop_count(),
kTestStopCount);
186 EXPECT_EQ(source->asLinearGradient()->colors()[
i],
188 EXPECT_EQ(source->asLinearGradient()->stops()[
i],
kTestStops[
i]);
191 EXPECT_EQ(source->asLinearGradient()->matrix(),
kTestMatrix1);
192 EXPECT_EQ(source->is_opaque(),
true);
195TEST(DisplayListColorSource, LinearGradientShared) {
199 ASSERT_NE(source->shared().get(), source.get());
200 ASSERT_EQ(*source->shared().get(), *source.get());
203TEST(DisplayListColorSource, LinearGradientAsLinear) {
207 ASSERT_NE(source->asLinearGradient(),
nullptr);
208 ASSERT_EQ(source->asLinearGradient(), source.get());
210 ASSERT_EQ(source->asImage(),
nullptr);
211 ASSERT_EQ(source->asRadialGradient(),
nullptr);
212 ASSERT_EQ(source->asConicalGradient(),
nullptr);
213 ASSERT_EQ(source->asSweepGradient(),
nullptr);
214 ASSERT_EQ(source->asRuntimeEffect(),
nullptr);
221 ASSERT_EQ(source->asLinearGradient()->start_point(),
kTestPoints1[0]);
222 ASSERT_EQ(source->asLinearGradient()->end_point(),
kTestPoints1[1]);
223 ASSERT_EQ(source->asLinearGradient()->stop_count(),
kTestStopCount);
225 ASSERT_EQ(source->asLinearGradient()->colors()[
i],
kTestColors[
i]);
226 ASSERT_EQ(source->asLinearGradient()->stops()[
i],
kTestStops[
i]);
229 ASSERT_EQ(source->asLinearGradient()->matrix(),
kTestMatrix1);
230 ASSERT_EQ(source->is_opaque(),
true);
233TEST(DisplayListColorSource, AlphaLinearGradientContents) {
237 ASSERT_EQ(source->asLinearGradient()->start_point(),
kTestPoints1[0]);
238 ASSERT_EQ(source->asLinearGradient()->end_point(),
kTestPoints1[1]);
239 ASSERT_EQ(source->asLinearGradient()->stop_count(),
kTestStopCount);
242 ASSERT_EQ(source->asLinearGradient()->stops()[
i],
kTestStops[
i]);
245 ASSERT_EQ(source->asLinearGradient()->matrix(),
kTestMatrix1);
246 ASSERT_EQ(source->is_opaque(),
false);
249TEST(DisplayListColorSource, LinearGradientEquals) {
259TEST(DisplayListColorSource, LinearGradientNotEquals) {
307TEST(DisplayListColorSource, RadialGradientConstructor) {
313TEST(DisplayListColorSource, RadialGradientARGBConstructor) {
314 std::array<DlScalar, kTestStopCount * 4> colors;
325 ASSERT_TRUE(source->asRadialGradient());
326 EXPECT_EQ(source->asRadialGradient()->center(),
kTestPoints1[0]);
327 EXPECT_EQ(source->asRadialGradient()->radius(), 10.f);
328 EXPECT_EQ(source->asRadialGradient()->stop_count(),
kTestStopCount);
330 EXPECT_EQ(source->asRadialGradient()->colors()[
i],
332 EXPECT_EQ(source->asRadialGradient()->stops()[
i],
kTestStops[
i]);
335 EXPECT_EQ(source->asRadialGradient()->matrix(),
kTestMatrix1);
336 EXPECT_EQ(source->is_opaque(),
true);
339TEST(DisplayListColorSource, RadialGradientShared) {
343 ASSERT_NE(source->shared().get(), source.get());
344 ASSERT_EQ(*source->shared().get(), *source.get());
347TEST(DisplayListColorSource, RadialGradientAsRadial) {
351 ASSERT_NE(source->asRadialGradient(),
nullptr);
352 ASSERT_EQ(source->asRadialGradient(), source.get());
354 ASSERT_EQ(source->asImage(),
nullptr);
355 ASSERT_EQ(source->asLinearGradient(),
nullptr);
356 ASSERT_EQ(source->asConicalGradient(),
nullptr);
357 ASSERT_EQ(source->asSweepGradient(),
nullptr);
358 ASSERT_EQ(source->asRuntimeEffect(),
nullptr);
365 ASSERT_EQ(source->asRadialGradient()->center(),
kTestPoints1[0]);
366 ASSERT_EQ(source->asRadialGradient()->radius(), 10.0);
367 ASSERT_EQ(source->asRadialGradient()->stop_count(),
kTestStopCount);
369 ASSERT_EQ(source->asRadialGradient()->colors()[
i],
kTestColors[
i]);
370 ASSERT_EQ(source->asRadialGradient()->stops()[
i],
kTestStops[
i]);
373 ASSERT_EQ(source->asRadialGradient()->matrix(),
kTestMatrix1);
374 ASSERT_EQ(source->is_opaque(),
true);
377TEST(DisplayListColorSource, AlphaRadialGradientContents) {
381 ASSERT_EQ(source->asRadialGradient()->center(),
kTestPoints1[0]);
382 ASSERT_EQ(source->asRadialGradient()->radius(), 10.0);
383 ASSERT_EQ(source->asRadialGradient()->stop_count(),
kTestStopCount);
386 ASSERT_EQ(source->asRadialGradient()->stops()[
i],
kTestStops[
i]);
389 ASSERT_EQ(source->asRadialGradient()->matrix(),
kTestMatrix1);
390 ASSERT_EQ(source->is_opaque(),
false);
393TEST(DisplayListColorSource, RadialGradientEquals) {
403TEST(DisplayListColorSource, RadialGradientNotEquals) {
451TEST(DisplayListColorSource, ConicalGradientConstructor) {
457TEST(DisplayListColorSource, ConicalGradientARGBConstructor) {
458 std::array<DlScalar, kTestStopCount * 4> colors;
469 ASSERT_TRUE(source->asConicalGradient());
470 EXPECT_EQ(source->asConicalGradient()->start_center(),
kTestPoints1[0]);
471 EXPECT_EQ(source->asConicalGradient()->start_radius(), 10.f);
472 EXPECT_EQ(source->asConicalGradient()->end_center(),
kTestPoints1[1]);
473 EXPECT_EQ(source->asConicalGradient()->end_radius(), 20.f);
474 EXPECT_EQ(source->asConicalGradient()->stop_count(),
kTestStopCount);
476 EXPECT_EQ(source->asConicalGradient()->colors()[
i],
478 EXPECT_EQ(source->asConicalGradient()->stops()[
i],
kTestStops[
i]);
481 EXPECT_EQ(source->asConicalGradient()->matrix(),
kTestMatrix1);
482 EXPECT_EQ(source->is_opaque(),
true);
485TEST(DisplayListColorSource, ConicalGradientShared) {
489 ASSERT_NE(source->shared().get(), source.get());
490 ASSERT_EQ(*source->shared().get(), *source.get());
493TEST(DisplayListColorSource, ConicalGradientAsConical) {
497 ASSERT_NE(source->asConicalGradient(),
nullptr);
498 ASSERT_EQ(source->asConicalGradient(), source.get());
500 ASSERT_EQ(source->asImage(),
nullptr);
501 ASSERT_EQ(source->asLinearGradient(),
nullptr);
502 ASSERT_EQ(source->asRadialGradient(),
nullptr);
503 ASSERT_EQ(source->asSweepGradient(),
nullptr);
504 ASSERT_EQ(source->asRuntimeEffect(),
nullptr);
511 ASSERT_EQ(source->asConicalGradient()->start_center(),
kTestPoints1[0]);
512 ASSERT_EQ(source->asConicalGradient()->start_radius(), 10.0);
513 ASSERT_EQ(source->asConicalGradient()->end_center(),
kTestPoints1[1]);
514 ASSERT_EQ(source->asConicalGradient()->end_radius(), 20.0);
515 ASSERT_EQ(source->asConicalGradient()->stop_count(),
kTestStopCount);
517 ASSERT_EQ(source->asConicalGradient()->colors()[
i],
kTestColors[
i]);
518 ASSERT_EQ(source->asConicalGradient()->stops()[
i],
kTestStops[
i]);
521 ASSERT_EQ(source->asConicalGradient()->matrix(),
kTestMatrix1);
522 ASSERT_EQ(source->is_opaque(),
true);
525TEST(DisplayListColorSource, AlphaConicalGradientContents) {
529 ASSERT_EQ(source->asConicalGradient()->start_center(),
kTestPoints1[0]);
530 ASSERT_EQ(source->asConicalGradient()->start_radius(), 10.0);
531 ASSERT_EQ(source->asConicalGradient()->end_center(),
kTestPoints1[1]);
532 ASSERT_EQ(source->asConicalGradient()->end_radius(), 20.0);
533 ASSERT_EQ(source->asConicalGradient()->stop_count(),
kTestStopCount);
536 ASSERT_EQ(source->asConicalGradient()->stops()[
i],
kTestStops[
i]);
539 ASSERT_EQ(source->asConicalGradient()->matrix(),
kTestMatrix1);
540 ASSERT_EQ(source->is_opaque(),
false);
543TEST(DisplayListColorSource, ConicalGradientEquals) {
553TEST(DisplayListColorSource, ConicalGradientNotEquals) {
613TEST(DisplayListColorSource, SweepGradientConstructor) {
619TEST(DisplayListColorSource, SweepGradientARGBConstructor) {
620 std::array<DlScalar, kTestStopCount * 4> colors;
631 ASSERT_TRUE(source->asSweepGradient());
632 EXPECT_EQ(source->asSweepGradient()->center(),
kTestPoints1[0]);
633 EXPECT_EQ(source->asSweepGradient()->start(), 10.f);
634 EXPECT_EQ(source->asSweepGradient()->end(), 20.f);
635 EXPECT_EQ(source->asSweepGradient()->stop_count(),
kTestStopCount);
637 EXPECT_EQ(source->asSweepGradient()->colors()[
i],
639 EXPECT_EQ(source->asSweepGradient()->stops()[
i],
kTestStops[
i]);
642 EXPECT_EQ(source->asSweepGradient()->matrix(),
kTestMatrix1);
643 EXPECT_EQ(source->is_opaque(),
true);
646TEST(DisplayListColorSource, SweepGradientShared) {
650 ASSERT_NE(source->shared().get(), source.get());
651 ASSERT_EQ(*source->shared().get(), *source.get());
654TEST(DisplayListColorSource, SweepGradientAsSweep) {
658 ASSERT_NE(source->asSweepGradient(),
nullptr);
659 ASSERT_EQ(source->asSweepGradient(), source.get());
661 ASSERT_EQ(source->asImage(),
nullptr);
662 ASSERT_EQ(source->asLinearGradient(),
nullptr);
663 ASSERT_EQ(source->asRadialGradient(),
nullptr);
664 ASSERT_EQ(source->asConicalGradient(),
nullptr);
665 ASSERT_EQ(source->asRuntimeEffect(),
nullptr);
672 ASSERT_EQ(source->asSweepGradient()->center(),
kTestPoints1[0]);
673 ASSERT_EQ(source->asSweepGradient()->start(), 10.0);
674 ASSERT_EQ(source->asSweepGradient()->end(), 20.0);
675 ASSERT_EQ(source->asSweepGradient()->stop_count(),
kTestStopCount);
677 ASSERT_EQ(source->asSweepGradient()->colors()[
i],
kTestColors[
i]);
678 ASSERT_EQ(source->asSweepGradient()->stops()[
i],
kTestStops[
i]);
681 ASSERT_EQ(source->asSweepGradient()->matrix(),
kTestMatrix1);
682 ASSERT_EQ(source->is_opaque(),
true);
685TEST(DisplayListColorSource, AlphaSweepGradientContents) {
689 ASSERT_EQ(source->asSweepGradient()->center(),
kTestPoints1[0]);
690 ASSERT_EQ(source->asSweepGradient()->start(), 10.0);
691 ASSERT_EQ(source->asSweepGradient()->end(), 20.0);
692 ASSERT_EQ(source->asSweepGradient()->stop_count(),
kTestStopCount);
695 ASSERT_EQ(source->asSweepGradient()->stops()[
i],
kTestStops[
i]);
698 ASSERT_EQ(source->asSweepGradient()->matrix(),
kTestMatrix1);
699 ASSERT_EQ(source->is_opaque(),
false);
702TEST(DisplayListColorSource, SweepGradientEquals) {
712TEST(DisplayListColorSource, SweepGradientNotEquals) {
766TEST(DisplayListColorSource, RuntimeEffect) {
772 nullptr, {}, std::make_shared<std::vector<uint8_t>>());
775 ASSERT_EQ(source1->asRuntimeEffect(), source1.get());
776 ASSERT_NE(source2->asRuntimeEffect(), source1.get());
778 ASSERT_EQ(source1->asImage(),
nullptr);
779 ASSERT_EQ(source1->asLinearGradient(),
nullptr);
780 ASSERT_EQ(source1->asRadialGradient(),
nullptr);
781 ASSERT_EQ(source1->asConicalGradient(),
nullptr);
782 ASSERT_EQ(source1->asSweepGradient(),
nullptr);
virtual const DlRuntimeEffectColorSource * asRuntimeEffect() const
static std::shared_ptr< DlColorSource > MakeSweep(DlPoint center, DlScalar start, DlScalar end, uint32_t stop_count, const DlColor *colors, const float *stops, DlTileMode tile_mode, const DlMatrix *matrix=nullptr)
static std::shared_ptr< DlColorSource > MakeLinear(const DlPoint start_point, const DlPoint end_point, uint32_t stop_count, const DlColor *colors, const float *stops, DlTileMode tile_mode, const DlMatrix *matrix=nullptr)
virtual const DlRadialGradientColorSource * asRadialGradient() const
virtual const DlLinearGradientColorSource * asLinearGradient() const
virtual const DlSweepGradientColorSource * asSweepGradient() const
static std::shared_ptr< DlColorSource > MakeRuntimeEffect(sk_sp< DlRuntimeEffect > runtime_effect, std::vector< std::shared_ptr< DlColorSource > > samplers, std::shared_ptr< std::vector< uint8_t > > uniform_data)
virtual const DlConicalGradientColorSource * asConicalGradient() const
static std::shared_ptr< DlColorSource > MakeConical(DlPoint start_center, DlScalar start_radius, DlPoint end_center, DlScalar end_radius, uint32_t stop_count, const DlColor *colors, const float *stops, DlTileMode tile_mode, const DlMatrix *matrix=nullptr)
static std::shared_ptr< DlColorSource > MakeRadial(DlPoint center, DlScalar radius, uint32_t stop_count, const DlColor *colors, const float *stops, DlTileMode tile_mode, const DlMatrix *matrix=nullptr)
std::shared_ptr< DlColorSource > shared() const override
DlImageSampling sampling() const
bool is_opaque() const override
DlTileMode vertical_tile_mode() const
const DlImageColorSource * asImage() const override
DlTileMode horizontal_tile_mode() const
sk_sp< const DlImage > image() const
const DlMatrix & matrix() const
static const DlMatrix kTestMatrix2
static constexpr float kTestStops2[kTestStopCount]
static const sk_sp< DlImage > kTestAlphaImage
static const sk_sp< DlRuntimeEffect > kTestRuntimeEffect1
static constexpr DlPoint kTestPoints1[2]
static constexpr int kTestStopCount
static constexpr float kTestStops[kTestStopCount]
static void TestEquals(const T &source1, const U &source2)
sk_sp< DlImage > MakeTestImage(int w, int h, int checker_size)
static const sk_sp< DlRuntimeEffect > kTestRuntimeEffect2
static void TestNotEquals(T &source1, U &source2, const std::string &label)
static constexpr DlPoint kTestPoints2[2]
TEST(NativeAssetsManagerTest, NoAvailableAssets)
static const DlColor kTestAlphaColors[kTestStopCount]
static const sk_sp< DlImage > kTestOpaqueImage
static constexpr DlColor kTestColors[kTestStopCount]
static const DlMatrix kTestMatrix1
static constexpr DlColor kBlue()
constexpr DlScalar getRedF() const
constexpr DlScalar getAlphaF() const
DlColor withColorSpace(DlColorSpace color_space) const
constexpr DlScalar getBlueF() const
constexpr DlScalar getGreenF() const
static constexpr DlColor kTransparent()
static constexpr DlColor kRed()
static constexpr DlColor kGreen()
DlColor withAlpha(uint8_t alpha) const
A 4x4 matrix using column-major storage.
static constexpr Matrix MakeRow(Scalar m0, Scalar m1, Scalar m2, Scalar m3, Scalar m4, Scalar m5, Scalar m6, Scalar m7, Scalar m8, Scalar m9, Scalar m10, Scalar m11, Scalar m12, Scalar m13, Scalar m14, Scalar m15)