Skip to content

Commit f73ac7d

Browse files
authored
remove obsolete DlAttribute::From(SkObject) methods (flutter#40005)
remove obsolete DlAttribute::From(SkObject) methods
1 parent 23d2931 commit f73ac7d

27 files changed

+206
-1218
lines changed

display_list/display_list.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,28 +75,23 @@ namespace flutter {
7575
V(SetColor) \
7676
V(SetBlendMode) \
7777
\
78-
V(SetSkPathEffect) \
7978
V(SetPodPathEffect) \
8079
V(ClearPathEffect) \
8180
\
8281
V(ClearColorFilter) \
8382
V(SetPodColorFilter) \
84-
V(SetSkColorFilter) \
8583
\
8684
V(ClearColorSource) \
8785
V(SetPodColorSource) \
88-
V(SetSkColorSource) \
8986
V(SetImageColorSource) \
9087
V(SetRuntimeEffectColorSource) \
9188
\
9289
V(ClearImageFilter) \
9390
V(SetPodImageFilter) \
94-
V(SetSkImageFilter) \
9591
V(SetSharedImageFilter) \
9692
\
9793
V(ClearMaskFilter) \
9894
V(SetPodMaskFilter) \
99-
V(SetSkMaskFilter) \
10095
\
10196
V(Save) \
10297
V(SaveLayer) \

display_list/display_list_builder.cc

Lines changed: 11 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -212,9 +212,6 @@ void DisplayListBuilder::onSetColorSource(const DlColorSource* source) {
212212
break;
213213
}
214214
#endif // IMPELLER_ENABLE_3D
215-
case DlColorSourceType::kUnknown:
216-
Push<SetSkColorSourceOp>(0, 0, source->skia_object());
217-
break;
218215
}
219216
}
220217
}
@@ -259,10 +256,6 @@ void DisplayListBuilder::onSetImageFilter(const DlImageFilter* filter) {
259256
Push<SetSharedImageFilterOp>(0, 0, filter);
260257
break;
261258
}
262-
case DlImageFilterType::kUnknown: {
263-
Push<SetSkImageFilterOp>(0, 0, filter->skia_object());
264-
break;
265-
}
266259
}
267260
}
268261
}
@@ -297,10 +290,6 @@ void DisplayListBuilder::onSetColorFilter(const DlColorFilter* filter) {
297290
new (pod) DlLinearToSrgbGammaColorFilter();
298291
break;
299292
}
300-
case DlColorFilterType::kUnknown: {
301-
Push<SetSkColorFilterOp>(0, 0, filter->skia_object());
302-
break;
303-
}
304293
}
305294
}
306295
UpdateCurrentOpacityCompatibility();
@@ -318,10 +307,6 @@ void DisplayListBuilder::onSetPathEffect(const DlPathEffect* effect) {
318307
new (pod) DlDashPathEffect(dash_effect);
319308
break;
320309
}
321-
case DlPathEffectType::kUnknown: {
322-
Push<SetSkPathEffectOp>(0, 0, effect->skia_object());
323-
break;
324-
}
325310
}
326311
}
327312
}
@@ -339,9 +324,6 @@ void DisplayListBuilder::onSetMaskFilter(const DlMaskFilter* filter) {
339324
new (pod) DlBlurMaskFilter(blur_filter);
340325
break;
341326
}
342-
case DlMaskFilterType::kUnknown:
343-
Push<SetSkMaskFilterOp>(0, 0, filter->skia_object());
344-
break;
345327
}
346328
}
347329
}
@@ -1183,9 +1165,11 @@ bool DisplayListBuilder::AdjustBoundsForPaint(SkRect& bounds,
11831165
}
11841166

11851167
if (flags.is_geometric()) {
1168+
bool is_stroked = flags.is_stroked(current_.getDrawStyle());
1169+
11861170
// Path effect occurs before stroking...
11871171
DisplayListSpecialGeometryFlags special_flags =
1188-
flags.WithPathEffect(current_.getPathEffectPtr());
1172+
flags.WithPathEffect(current_.getPathEffectPtr(), is_stroked);
11891173
if (current_.getPathEffect()) {
11901174
auto effect_bounds = current_.getPathEffect()->effect_bounds(bounds);
11911175
if (!effect_bounds.has_value()) {
@@ -1194,7 +1178,7 @@ bool DisplayListBuilder::AdjustBoundsForPaint(SkRect& bounds,
11941178
bounds = effect_bounds.value();
11951179
}
11961180

1197-
if (flags.is_stroked(current_.getDrawStyle())) {
1181+
if (is_stroked) {
11981182
// Determine the max multiplier to the stroke width first.
11991183
SkScalar pad = 1.0f;
12001184
if (current_.getStrokeJoin() == DlStrokeJoin::kMiter &&
@@ -1212,18 +1196,14 @@ bool DisplayListBuilder::AdjustBoundsForPaint(SkRect& bounds,
12121196
}
12131197

12141198
if (flags.applies_mask_filter()) {
1215-
if (current_.getMaskFilter()) {
1216-
const DlBlurMaskFilter* blur_filter = current_.getMaskFilter()->asBlur();
1217-
if (blur_filter) {
1218-
SkScalar mask_sigma_pad = blur_filter->sigma() * 3.0;
1219-
bounds.outset(mask_sigma_pad, mask_sigma_pad);
1220-
} else {
1221-
SkPaint p;
1222-
p.setMaskFilter(current_.getMaskFilter()->skia_object());
1223-
if (!p.canComputeFastBounds()) {
1224-
return false;
1199+
auto filter = current_.getMaskFilter();
1200+
if (filter) {
1201+
switch (filter->type()) {
1202+
case DlMaskFilterType::kBlur: {
1203+
FML_DCHECK(filter->asBlur());
1204+
SkScalar mask_sigma_pad = filter->asBlur()->sigma() * 3.0;
1205+
bounds.outset(mask_sigma_pad, mask_sigma_pad);
12251206
}
1226-
bounds = p.computeFastBounds(bounds, &bounds);
12271207
}
12281208
}
12291209
}

display_list/display_list_canvas_unittests.cc

Lines changed: 38 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,6 @@
1717
#include "flutter/testing/testing.h"
1818
#include "third_party/skia/include/core/SkPictureRecorder.h"
1919
#include "third_party/skia/include/core/SkSurface.h"
20-
#include "third_party/skia/include/effects/SkDashPathEffect.h"
21-
#include "third_party/skia/include/effects/SkDiscretePathEffect.h"
22-
#include "third_party/skia/include/effects/SkGradientShader.h"
23-
#include "third_party/skia/include/effects/SkImageFilters.h"
2420

2521
namespace flutter {
2622
namespace testing {
@@ -668,21 +664,22 @@ class TestParameters {
668664
return false;
669665
}
670666

667+
bool is_stroked = flags_.is_stroked(attr.getDrawStyle());
668+
if (flags_.is_stroked(ref_attr.getDrawStyle()) != is_stroked) {
669+
return false;
670+
}
671671
DisplayListSpecialGeometryFlags geo_flags =
672-
flags_.WithPathEffect(attr.getPathEffect().get());
672+
flags_.WithPathEffect(attr.getPathEffect().get(), is_stroked);
673673
if (flags_.applies_path_effect() && //
674674
ref_attr.getPathEffect() != attr.getPathEffect()) {
675-
if (attr.getPathEffect()->asDash() == nullptr) {
676-
return false;
677-
}
678-
if (!ignores_dashes()) {
679-
return false;
675+
switch (attr.getPathEffect()->type()) {
676+
case DlPathEffectType::kDash: {
677+
if (is_stroked && !ignores_dashes()) {
678+
return false;
679+
}
680+
}
680681
}
681682
}
682-
bool is_stroked = flags_.is_stroked(ref_attr.getDrawStyle());
683-
if (flags_.is_stroked(attr.getDrawStyle()) != is_stroked) {
684-
return false;
685-
}
686683
if (!is_stroked) {
687684
return true;
688685
}
@@ -766,7 +763,7 @@ class TestParameters {
766763
auto path_effect = paint.getPathEffect();
767764

768765
DisplayListSpecialGeometryFlags geo_flags =
769-
flags_.WithPathEffect(path_effect.get());
766+
flags_.WithPathEffect(path_effect.get(), true);
770767
if (paint.getStrokeCap() == DlStrokeCap::kButt &&
771768
!geo_flags.butt_cap_becomes_square()) {
772769
adjust = std::max(adjust, half_width);
@@ -1117,10 +1114,18 @@ class CanvasCompareTester {
11171114
.with_restore(sk_safe_restore, dl_safe_restore, true));
11181115
}
11191116
}
1117+
11201118
{
1121-
sk_sp<SkImageFilter> sk_filter = SkImageFilters::Arithmetic(
1122-
0.1, 0.1, 0.1, 0.25, true, nullptr, nullptr);
1123-
DlUnknownImageFilter filter(sk_filter);
1119+
// clang-format off
1120+
constexpr float color_matrix[20] = {
1121+
0.5, 0, 0, 0, 0.5,
1122+
0, 0.5, 0, 0, 0.5,
1123+
0, 0, 0.5, 0, 0.5,
1124+
0, 0, 0, 1, 0,
1125+
};
1126+
// clang-format on
1127+
DlMatrixColorFilter color_filter(color_matrix);
1128+
DlColorFilterImageFilter filter(color_filter);
11241129
{
11251130
RenderWith(testP, env, tolerance,
11261131
CaseParameters(
@@ -1463,67 +1468,6 @@ class CanvasCompareTester {
14631468
}
14641469
}
14651470

1466-
{
1467-
sk_sp<SkPathEffect> effect = SkDiscretePathEffect::Make(3, 5);
1468-
{
1469-
// Discrete path effects need a stroke width for drawPointsAsPoints
1470-
// to do something realistic
1471-
// And a Discrete(3, 5) effect produces miters that are near
1472-
// maximal for a miter limit of 3.0.
1473-
BoundsTolerance discrete_tolerance =
1474-
tolerance
1475-
// register the discrete offset so adjusters can compensate
1476-
.addDiscreteOffset(5)
1477-
// the miters in the 3-5 discrete effect don't always fill
1478-
// their conservative bounds, so tolerate a couple of pixels
1479-
.addBoundsPadding(2, 2);
1480-
RenderWith(testP, env, discrete_tolerance,
1481-
CaseParameters(
1482-
"PathEffect == Discrete-3-5",
1483-
[=](SkCanvas*, SkPaint& p) {
1484-
p.setStrokeWidth(5.0);
1485-
p.setStrokeMiter(3.0);
1486-
p.setPathEffect(effect);
1487-
},
1488-
[=](DlCanvas*, DlPaint& p) {
1489-
p.setStrokeWidth(5.0);
1490-
p.setStrokeMiter(3.0);
1491-
p.setPathEffect(DlPathEffect::From(effect));
1492-
}));
1493-
}
1494-
EXPECT_TRUE(testP.is_draw_text_blob() || effect->unique())
1495-
<< "PathEffect == Discrete-3-5 Cleanup";
1496-
effect = SkDiscretePathEffect::Make(2, 3);
1497-
{
1498-
// Discrete path effects need a stroke width for drawPointsAsPoints
1499-
// to do something realistic
1500-
// And a Discrete(2, 3) effect produces miters that are near
1501-
// maximal for a miter limit of 2.5.
1502-
BoundsTolerance discrete_tolerance =
1503-
tolerance
1504-
// register the discrete offset so adjusters can compensate
1505-
.addDiscreteOffset(3)
1506-
// the miters in the 3-5 discrete effect don't always fill
1507-
// their conservative bounds, so tolerate a couple of pixels
1508-
.addBoundsPadding(2, 2);
1509-
RenderWith(testP, env, discrete_tolerance,
1510-
CaseParameters(
1511-
"PathEffect == Discrete-2-3",
1512-
[=](SkCanvas*, SkPaint& p) {
1513-
p.setStrokeWidth(5.0);
1514-
p.setStrokeMiter(2.5);
1515-
p.setPathEffect(effect);
1516-
},
1517-
[=](DlCanvas*, DlPaint& p) {
1518-
p.setStrokeWidth(5.0);
1519-
p.setStrokeMiter(2.5);
1520-
p.setPathEffect(DlPathEffect::From(effect));
1521-
}));
1522-
}
1523-
EXPECT_TRUE(testP.is_draw_text_blob() || effect->unique())
1524-
<< "PathEffect == Discrete-2-3 Cleanup";
1525-
}
1526-
15271471
{
15281472
const DlBlurMaskFilter filter(kNormal_SkBlurStyle, 5.0);
15291473
BoundsTolerance blur_5_tolerance = tolerance.addBoundsPadding(4, 4);
@@ -1754,6 +1698,21 @@ class CanvasCompareTester {
17541698
const SkScalar test_dashes_1[] = {29.0, 2.0};
17551699
const SkScalar test_dashes_2[] = {17.0, 1.5};
17561700
auto effect = DlDashPathEffect::Make(test_dashes_1, 2, 0.0f);
1701+
{
1702+
RenderWith(testP, stroke_base_env, tolerance,
1703+
CaseParameters(
1704+
"PathEffect without forced stroking == Dash-29-2",
1705+
[=](SkCanvas*, SkPaint& p) {
1706+
// Provide some non-trivial stroke size to get dashed
1707+
p.setStrokeWidth(5.0);
1708+
p.setPathEffect(effect->skia_object());
1709+
},
1710+
[=](DlCanvas*, DlPaint& p) {
1711+
// Provide some non-trivial stroke size to get dashed
1712+
p.setStrokeWidth(5.0);
1713+
p.setPathEffect(effect);
1714+
}));
1715+
}
17571716
{
17581717
RenderWith(testP, stroke_base_env, tolerance,
17591718
CaseParameters(

display_list/display_list_color_filter.cc

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -8,34 +8,6 @@
88

99
namespace flutter {
1010

11-
std::shared_ptr<DlColorFilter> DlColorFilter::From(SkColorFilter* sk_filter) {
12-
if (sk_filter == nullptr) {
13-
return nullptr;
14-
}
15-
if (sk_filter == DlSrgbToLinearGammaColorFilter::sk_filter_.get()) {
16-
// Skia implements these filters as a singleton.
17-
return DlSrgbToLinearGammaColorFilter::instance;
18-
}
19-
if (sk_filter == DlLinearToSrgbGammaColorFilter::sk_filter_.get()) {
20-
// Skia implements these filters as a singleton.
21-
return DlLinearToSrgbGammaColorFilter::instance;
22-
}
23-
{
24-
SkColor color;
25-
SkBlendMode mode;
26-
if (sk_filter->asAColorMode(&color, &mode)) {
27-
return std::make_shared<DlBlendColorFilter>(color, ToDl(mode));
28-
}
29-
}
30-
{
31-
float matrix[20];
32-
if (sk_filter->asAColorMatrix(matrix)) {
33-
return std::make_shared<DlMatrixColorFilter>(matrix);
34-
}
35-
}
36-
return std::make_shared<DlUnknownColorFilter>(sk_ref_sp(sk_filter));
37-
}
38-
3911
const std::shared_ptr<DlSrgbToLinearGammaColorFilter>
4012
DlSrgbToLinearGammaColorFilter::instance =
4113
std::make_shared<DlSrgbToLinearGammaColorFilter>();

0 commit comments

Comments
 (0)