14#include "gtest/gtest.h"
24 const std::vector<std::unique_ptr<DlImage>>&
images) {
26 canvas->
Scale(content_scale.
x, content_scale.
y);
47 ASSERT_TRUE(OpenPlaygroundHere(builder.
Build()));
53 const std::vector<std::unique_ptr<DlImage>>&
images) {
55 canvas->
Scale(content_scale.
x, content_scale.
y);
76 ASSERT_TRUE(OpenPlaygroundHere(builder.
Build()));
87 auto draw = [&](
DlCanvas* canvas,
const std::vector<sk_sp<DlImage>>&
images,
90 canvas->
Scale(content_scale.
x, content_scale.
y);
99 canvas->
SaveLayer(save_layer_bounds,
nullptr, blur.get());
103 std::vector<sk_sp<DlImage>>
images;
104 images.emplace_back(CreateDlImageForFixture(
"boston.jpg"));
106 auto make_screenshot = [&](
float sigma) {
108 draw(&builder,
images, sigma);
110 std::unique_ptr<impeller::testing::Screenshot> screenshot =
111 MakeScreenshot(builder.
Build());
115 float start_sigma = 10.0f;
116 std::unique_ptr<impeller::testing::Screenshot> left =
117 make_screenshot(start_sigma);
119 GTEST_SKIP() <<
"making screenshots not supported.";
122 double average_rmse = 0.0;
123 const int32_t sample_count = 200;
124 for (
int i = 1;
i <= sample_count; ++
i) {
125 float sigma = start_sigma + (
i / 2.f);
126 std::unique_ptr<impeller::testing::Screenshot> right =
127 make_screenshot(sigma);
128 double rmse =
RMSE(left.get(), right.get());
129 average_rmse += rmse;
144 left = std::move(right);
147 average_rmse = average_rmse / sample_count;
154 EXPECT_TRUE(average_rmse < 1.0) <<
"average_rmse: " << average_rmse;
156 EXPECT_TRUE(average_rmse >= 0.0) <<
"average_rmse: " << average_rmse;
173 builder.
Scale(content_scale.
x, content_scale.
y);
179 ASSERT_TRUE(OpenPlaygroundHere(builder.
Build()));
187 auto draw = [&](
DlCanvas* canvas,
const std::vector<sk_sp<DlImage>>&
images) {
188 canvas->
Scale(content_scale.
x, content_scale.
y);
192 canvas->
Scale(0.25, 0.25);
211 ASSERT_TRUE(OpenPlaygroundHere(builder.
Build()));
void DrawRoundRect(const DlRoundRect &rrect, const DlPaint &paint) override
void DrawColor(DlColor color, DlBlendMode mode) override
void Scale(DlScalar sx, DlScalar sy) override
sk_sp< DisplayList > Build()
static std::shared_ptr< DlMaskFilter > Make(DlBlurStyle style, SkScalar sigma, bool respect_ctm=true)
Developer-facing API for rendering anything within the engine.
virtual void ClipRect(const DlRect &rect, DlClipOp clip_op=DlClipOp::kIntersect, bool is_aa=false)=0
virtual void DrawCircle(const DlPoint ¢er, DlScalar radius, const DlPaint &paint)=0
virtual void SaveLayer(const std::optional< DlRect > &bounds, const DlPaint *paint=nullptr, const DlImageFilter *backdrop=nullptr, std::optional< int64_t > backdrop_id=std::nullopt)=0
virtual void DrawImage(const sk_sp< DlImage > &image, const DlPoint &point, DlImageSampling sampling, const DlPaint *paint=nullptr)=0
virtual void DrawColor(DlColor color, DlBlendMode mode=DlBlendMode::kSrcOver)=0
virtual void Scale(DlScalar sx, DlScalar sy)=0
static std::shared_ptr< DlImageFilter > MakeBlur(DlScalar sigma_x, DlScalar sigma_y, DlTileMode tile_mode)
DlPaint & setColor(DlColor color)
DlPaint & setStrokeWidth(float width)
DlPaint & setMaskFilter(std::nullptr_t filter)
DlPaint & setDrawStyle(DlDrawStyle style)
Describes a typeface along with any modifications to its intrinsic properties.
std::array< MockImage, 3 > images
double RMSE(const impeller::testing::Screenshot *left, const impeller::testing::Screenshot *right)
TEST_P(DlGoldenTest, TextBlurMaskFilterRespectCTM)
absl::StatusOr< DlRect > RenderTextInCanvasSkia(DlCanvas *canvas, const std::string &text, const std::string_view &font_fixture, DlPoint position, const TextRenderOptions &options)
@ kStroke
strokes boundary of shapes
@ kNormal
fuzzy inside and outside
static constexpr DlColor kBlue()
static constexpr DlColor kYellow()
static constexpr DlColor kRed()
std::shared_ptr< DlMaskFilter > mask_filter
static RoundRect MakeRectRadius(const Rect &rect, Scalar radius)
RoundRect Shift(Scalar dx, Scalar dy) const
Returns a new round rectangle translated by the given offset.
static constexpr TRect MakeXYWH(Type x, Type y, Type width, Type height)
static constexpr TRect MakeLTRB(Type left, Type top, Type right, Type bottom)