From 3472fc39a24dec074906ecc1e0f7cb995be58359 Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Wed, 24 May 2023 12:54:37 -0700 Subject: [PATCH] [Impeller] Golden test for text with a shader and a transform See https://github.com/flutter/engine/pull/42142 --- impeller/aiks/aiks_unittests.cc | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/impeller/aiks/aiks_unittests.cc b/impeller/aiks/aiks_unittests.cc index 180729579c958..dd4f4f31ec1b6 100644 --- a/impeller/aiks/aiks_unittests.cc +++ b/impeller/aiks/aiks_unittests.cc @@ -2526,5 +2526,37 @@ TEST_P(AiksTest, CanDrawPointsWithTextureMap) { ASSERT_TRUE(OpenPlaygroundHere(canvas.EndRecordingAsPicture())); } +TEST_P(AiksTest, TextForegroundShaderWithTransform) { + auto mapping = OpenFixtureAsSkData("Roboto-Regular.ttf"); + ASSERT_NE(mapping, nullptr); + + Scalar font_size = 100; + SkFont sk_font(SkTypeface::MakeFromData(mapping), font_size); + + Paint text_paint; + text_paint.color = Color::Blue(); + + std::vector colors = {Color{0.9568, 0.2627, 0.2118, 1.0}, + Color{0.1294, 0.5882, 0.9529, 1.0}}; + std::vector stops = { + 0.0, + 1.0, + }; + text_paint.color_source = ColorSource::MakeLinearGradient( + {0, 0}, {100, 100}, std::move(colors), std::move(stops), + Entity::TileMode::kRepeat, {}); + + Canvas canvas; + canvas.Translate({100, 100}); + canvas.Rotate(Radians(kPi / 4)); + + auto blob = SkTextBlob::MakeFromString("Hello", sk_font); + ASSERT_NE(blob, nullptr); + auto frame = TextFrameFromTextBlob(blob); + canvas.DrawTextFrame(frame, Point(), text_paint); + + ASSERT_TRUE(OpenPlaygroundHere(canvas.EndRecordingAsPicture())); +} + } // namespace testing } // namespace impeller