Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit a8f004a

Browse files
committed
Add test for set DlPaint
1 parent a1ea6c0 commit a8f004a

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

display_list/display_list_unittests.cc

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@
1111
#include "flutter/display_list/display_list_blend_mode.h"
1212
#include "flutter/display_list/display_list_builder.h"
1313
#include "flutter/display_list/display_list_canvas_recorder.h"
14+
#include "flutter/display_list/display_list_paint.h"
1415
#include "flutter/display_list/display_list_rtree.h"
1516
#include "flutter/display_list/display_list_utils.h"
17+
#include "flutter/fml/logging.h"
1618
#include "flutter/fml/math.h"
1719
#include "flutter/testing/display_list_testing.h"
1820
#include "flutter/testing/testing.h"
@@ -2565,6 +2567,61 @@ TEST(DisplayList, CollapseMultipleNestedSaveRestore) {
25652567
ASSERT_TRUE(DisplayListsEQ_Verbose(display_list1, display_list2));
25662568
}
25672569

2570+
TEST(DisplayList, RemoveUnnecessarySaveRestorePairsInSetPaint) {
2571+
SkRect build_bounds = SkRect::MakeLTRB(-100, -100, 200, 200);
2572+
SkRect rect = SkRect::MakeLTRB(30, 30, 70, 70);
2573+
// clang-format off
2574+
const float alpha_matrix[] = {
2575+
0, 0, 0, 0, 0,
2576+
0, 1, 0, 0, 0,
2577+
0, 0, 1, 0, 0,
2578+
0, 0, 0, 0, 1,
2579+
};
2580+
// clang-format on
2581+
DlMatrixColorFilter alpha_color_filter(alpha_matrix);
2582+
// Making sure hiding a problematic ColorFilter as an ImageFilter
2583+
// will generate the same behavior as setting it as a ColorFilter
2584+
2585+
DlColorFilterImageFilter color_filter_image_filter(alpha_color_filter);
2586+
{
2587+
DisplayListBuilder builder(build_bounds);
2588+
builder.save();
2589+
DlPaint paint;
2590+
paint.setImageFilter(&color_filter_image_filter);
2591+
builder.drawRect(rect, paint);
2592+
builder.restore();
2593+
sk_sp<DisplayList> display_list1 = builder.Build();
2594+
2595+
DisplayListBuilder builder2(build_bounds);
2596+
DlPaint paint2;
2597+
paint2.setImageFilter(&color_filter_image_filter);
2598+
builder2.drawRect(rect, paint2);
2599+
sk_sp<DisplayList> display_list2 = builder2.Build();
2600+
ASSERT_TRUE(DisplayListsEQ_Verbose(display_list1, display_list2));
2601+
}
2602+
2603+
{
2604+
DisplayListBuilder builder(build_bounds);
2605+
builder.save();
2606+
builder.saveLayer(&build_bounds, true);
2607+
DlPaint paint;
2608+
paint.setImageFilter(&color_filter_image_filter);
2609+
builder.drawRect(rect, paint);
2610+
builder.restore();
2611+
builder.restore();
2612+
sk_sp<DisplayList> display_list1 = builder.Build();
2613+
2614+
DisplayListBuilder builder2(build_bounds);
2615+
builder2.saveLayer(&build_bounds, true);
2616+
DlPaint paint2;
2617+
paint2.setImageFilter(&color_filter_image_filter);
2618+
builder2.drawRect(rect, paint2);
2619+
builder2.restore();
2620+
sk_sp<DisplayList> display_list2 = builder2.Build();
2621+
ASSERT_TRUE(DisplayListsEQ_Verbose(display_list1, display_list2));
2622+
}
2623+
}
2624+
25682625
TEST(DisplayList, CollapseNestedSaveAndSaveLayerRestore) {
25692626
// Translate
25702627
{

0 commit comments

Comments
 (0)