6 #include "fml/logging.h"
15 std::shared_ptr<FilterContents>
WrapInput(
const flutter::DlImageFilter* filter,
19 switch (filter->type()) {
20 case flutter::DlImageFilterType::kBlur: {
21 auto blur_filter = filter->asBlur();
22 FML_DCHECK(blur_filter);
26 Sigma(blur_filter->sigma_x()),
27 Sigma(blur_filter->sigma_y()),
32 case flutter::DlImageFilterType::kDilate: {
33 auto dilate_filter = filter->asDilate();
34 FML_DCHECK(dilate_filter);
38 Radius(dilate_filter->radius_x()),
39 Radius(dilate_filter->radius_y()),
43 case flutter::DlImageFilterType::kErode: {
44 auto erode_filter = filter->asErode();
45 FML_DCHECK(erode_filter);
49 Radius(erode_filter->radius_x()),
50 Radius(erode_filter->radius_y()),
54 case flutter::DlImageFilterType::kMatrix: {
55 auto matrix_filter = filter->asMatrix();
56 FML_DCHECK(matrix_filter);
63 case flutter::DlImageFilterType::kLocalMatrix: {
64 auto matrix_filter = filter->asLocalMatrix();
65 FML_DCHECK(matrix_filter);
66 FML_DCHECK(matrix_filter->image_filter());
71 WrapInput(matrix_filter->image_filter().get(), input)),
74 case flutter::DlImageFilterType::kColorFilter: {
75 auto image_color_filter = filter->asColorFilter();
76 FML_DCHECK(image_color_filter);
77 auto color_filter = image_color_filter->color_filter();
78 FML_DCHECK(color_filter);
87 case flutter::DlImageFilterType::kCompose: {
88 auto compose = filter->asCompose();
91 auto outer_dl_filter = compose->outer();
92 auto inner_dl_filter = compose->inner();
93 if (!outer_dl_filter) {
94 return WrapInput(inner_dl_filter.get(), input);
96 if (!inner_dl_filter) {
97 return WrapInput(outer_dl_filter.get(), input);
99 FML_DCHECK(outer_dl_filter && inner_dl_filter);
102 outer_dl_filter.get(),