|
20 | 20 | #include "impeller/entity/contents/contents.h" |
21 | 21 | #include "impeller/entity/contents/filters/color_filter_contents.h" |
22 | 22 | #include "impeller/entity/contents/filters/filter_contents.h" |
| 23 | +#include "impeller/entity/contents/filters/gaussian_blur_filter_contents.h" |
23 | 24 | #include "impeller/entity/contents/filters/inputs/filter_input.h" |
24 | 25 | #include "impeller/entity/contents/linear_gradient_contents.h" |
25 | 26 | #include "impeller/entity/contents/radial_gradient_contents.h" |
@@ -991,7 +992,8 @@ TEST_P(EntityTest, GaussianBlurFilter) { |
991 | 992 | auto callback = [&](ContentContext& context, RenderPass& pass) -> bool { |
992 | 993 | const char* input_type_names[] = {"Texture", "Solid Color"}; |
993 | 994 | const char* blur_type_names[] = {"Image blur", "Mask blur"}; |
994 | | - const char* pass_variation_names[] = {"Two pass", "Directional"}; |
| 995 | + const char* pass_variation_names[] = {"New", "2D Directional", |
| 996 | + "Directional"}; |
995 | 997 | const char* blur_style_names[] = {"Normal", "Solid", "Outer", "Inner"}; |
996 | 998 | const char* tile_mode_names[] = {"Clamp", "Repeat", "Mirror", "Decal"}; |
997 | 999 | const FilterContents::BlurStyle blur_styles[] = { |
@@ -1083,16 +1085,26 @@ TEST_P(EntityTest, GaussianBlurFilter) { |
1083 | 1085 | } |
1084 | 1086 |
|
1085 | 1087 | std::shared_ptr<FilterContents> blur; |
1086 | | - if (selected_pass_variation == 0) { |
1087 | | - blur = FilterContents::MakeGaussianBlur( |
1088 | | - FilterInput::Make(input), blur_sigma_x, blur_sigma_y, |
1089 | | - blur_styles[selected_blur_style], tile_modes[selected_tile_mode]); |
1090 | | - } else { |
1091 | | - Vector2 blur_vector(blur_sigma_x.sigma, blur_sigma_y.sigma); |
1092 | | - blur = FilterContents::MakeDirectionalGaussianBlur( |
1093 | | - FilterInput::Make(input), Sigma{blur_vector.GetLength()}, |
1094 | | - blur_vector.Normalize()); |
1095 | | - } |
| 1088 | + switch (selected_pass_variation) { |
| 1089 | + case 0: |
| 1090 | + blur = std::make_shared<GaussianBlurFilterContents>( |
| 1091 | + blur_sigma_x.sigma, tile_modes[selected_tile_mode]); |
| 1092 | + blur->SetInputs({FilterInput::Make(input)}); |
| 1093 | + break; |
| 1094 | + case 1: |
| 1095 | + blur = FilterContents::MakeGaussianBlur( |
| 1096 | + FilterInput::Make(input), blur_sigma_x, blur_sigma_y, |
| 1097 | + blur_styles[selected_blur_style], tile_modes[selected_tile_mode]); |
| 1098 | + break; |
| 1099 | + case 2: { |
| 1100 | + Vector2 blur_vector(blur_sigma_x.sigma, blur_sigma_y.sigma); |
| 1101 | + blur = FilterContents::MakeDirectionalGaussianBlur( |
| 1102 | + FilterInput::Make(input), Sigma{blur_vector.GetLength()}, |
| 1103 | + blur_vector.Normalize()); |
| 1104 | + break; |
| 1105 | + } |
| 1106 | + }; |
| 1107 | + FML_CHECK(blur); |
1096 | 1108 |
|
1097 | 1109 | auto mask_blur = FilterContents::MakeBorderMaskBlur( |
1098 | 1110 | FilterInput::Make(input), blur_sigma_x, blur_sigma_y, |
|
0 commit comments