Hide setDrawLooper -- deprecate loopers
Guarded with SK_SUPPORT_LEGACY_DRAWLOOPER
Bug: skia:4783
Change-Id: I4a47513624bc5c09816f44e107917dc8028adb94
Reviewed-on: https://skia-review.googlesource.com/c/189871
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
diff --git a/bench/BlurRoundRectBench.cpp b/bench/BlurRoundRectBench.cpp
index 085a8eb..5b7bcd8 100644
--- a/bench/BlurRoundRectBench.cpp
+++ b/bench/BlurRoundRectBench.cpp
@@ -62,7 +62,9 @@
dullPaint.setAntiAlias(true);
SkPaint loopedPaint;
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
loopedPaint.setLooper(looperBuilder.detach());
+#endif
loopedPaint.setAntiAlias(true);
loopedPaint.setColor(SK_ColorCYAN);
diff --git a/bench/RectoriBench.cpp b/bench/RectoriBench.cpp
index c0d2155..990a8a9 100644
--- a/bench/RectoriBench.cpp
+++ b/bench/RectoriBench.cpp
@@ -52,7 +52,9 @@
SkScalar translate = 2.0f * size;
SkPaint paint;
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
paint.setLooper(this->createLooper(-translate, blurSigma));
+#endif
paint.setColor(0xff000000 | Random.nextU());
paint.setAntiAlias(true);
diff --git a/gm/blurroundrect.cpp b/gm/blurroundrect.cpp
index b7d0800..4116638 100644
--- a/gm/blurroundrect.cpp
+++ b/gm/blurroundrect.cpp
@@ -69,7 +69,9 @@
SkPaint paint;
canvas->drawRect(fRRect.rect(), paint);
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
paint.setLooper(looperBuilder.detach());
+#endif
paint.setColor(SK_ColorCYAN);
paint.setAntiAlias(true);
diff --git a/gm/circles.cpp b/gm/circles.cpp
index 9127c0a..0c87469 100644
--- a/gm/circles.cpp
+++ b/gm/circles.cpp
@@ -70,6 +70,7 @@
fPaints.push_back(p);
}
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
{
// AA with blur
SkPaint p;
@@ -79,6 +80,7 @@
SkIntToScalar(5), SkIntToScalar(10)));
fPaints.push_back(p);
}
+#endif
{
// AA with stroke style
diff --git a/gm/drawlooper.cpp b/gm/drawlooper.cpp
index a9fe09f..017ec26 100644
--- a/gm/drawlooper.cpp
+++ b/gm/drawlooper.cpp
@@ -37,7 +37,9 @@
SkPaint paint;
paint.setAntiAlias(true);
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
paint.setLooper(fLooper);
+#endif
SkFont font(sk_tool_utils::create_portable_typeface(), 72);
diff --git a/gm/megalooper.cpp b/gm/megalooper.cpp
index e2e53e7..16c07ae 100644
--- a/gm/megalooper.cpp
+++ b/gm/megalooper.cpp
@@ -130,7 +130,9 @@
for (int i = 0; i < 4; ++i) {
SkPaint loopPaint;
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
loopPaint.setLooper(create1Looper(-kOffsetToOutsideClip, 0, gColors[i]));
+#endif
loopPaint.setAntiAlias(true);
SkRect outerClip = {
@@ -191,7 +193,9 @@
SkPaint paint;
paint.setAntiAlias(true);
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
paint.setLooper(create4Looper(-kOffsetToOutsideClip-kHalfSquareSize, 0));
+#endif
canvas->save();
canvas->clipRect(outerClip, kIntersect_SkClipOp);
diff --git a/gm/rects.cpp b/gm/rects.cpp
index 2786be7..1da6878 100644
--- a/gm/rects.cpp
+++ b/gm/rects.cpp
@@ -85,6 +85,7 @@
fPaints.push_back(p);
}
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
{
// AA with blur
SkPaint p;
@@ -95,6 +96,7 @@
SkIntToScalar(5), SkIntToScalar(10)));
fPaints.push_back(p);
}
+#endif
{
// AA with stroke style
diff --git a/gm/shadows.cpp b/gm/shadows.cpp
index 1160e49..e0a2d01 100644
--- a/gm/shadows.cpp
+++ b/gm/shadows.cpp
@@ -88,7 +88,9 @@
for (size_t i = 0; i < SK_ARRAY_COUNT(shadowLoopers); ++i) {
SkAutoCanvasRestore acr(canvas, true);
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
paint.setLooper(shadowLoopers[i]);
+#endif
canvas->translate(SkIntToScalar((unsigned int)i*40), SkIntToScalar(0));
setup(&paint, gRec[0].fColor, gRec[0].fStrokeWidth);
diff --git a/gm/textbloblooper.cpp b/gm/textbloblooper.cpp
index 51e8155..b2764fa 100644
--- a/gm/textbloblooper.cpp
+++ b/gm/textbloblooper.cpp
@@ -230,7 +230,9 @@
int y = 0;
for (int looper = 0; looper < fLoopers.count(); looper++) {
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
paint.setLooper(fLoopers[looper]);
+#endif
canvas->save();
canvas->translate(0, SkIntToScalar(y));
canvas->drawTextBlob(fBlob, 0, 0, paint);
diff --git a/include/core/SkPaint.h b/include/core/SkPaint.h
index 3d6a938..babed4b 100644
--- a/include/core/SkPaint.h
+++ b/include/core/SkPaint.h
@@ -561,6 +561,7 @@
*/
SkDrawLooper* getLooper() const { return fDrawLooper.get(); }
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
/** Sets SkDrawLooper to drawLooper, decreasing SkRefCnt of the previous
drawLooper. Pass nullptr to clear SkDrawLooper and leave SkDrawLooper effect on
drawing unaltered.
@@ -575,6 +576,7 @@
(see skbug.com/6259)
*/
void setLooper(sk_sp<SkDrawLooper> drawLooper);
+#endif
/** Returns true if SkPaint prevents all drawing;
otherwise, the SkPaint may or may not allow drawing.
diff --git a/samplecode/SampleTiling.cpp b/samplecode/SampleTiling.cpp
index 14e40c4..21d3cb6 100644
--- a/samplecode/SampleTiling.cpp
+++ b/samplecode/SampleTiling.cpp
@@ -107,7 +107,9 @@
SkPaint p;
SkString str;
p.setDither(true);
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
p.setLooper(fLooper);
+#endif
str.printf("[%s,%s]", gModeNames[kx], gModeNames[ky]);
SkTextUtils::DrawString(textCanvas, str.c_str(), x + r.width()/2, y, SkFont(), p,
@@ -139,7 +141,9 @@
}
if (textCanvas) {
SkPaint p;
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
p.setLooper(fLooper);
+#endif
textCanvas->drawString(
SkStringPrintf("%s, %s", gConfigNames[i], gFilterNames[j]),
x, y + r.height() * 2 / 3, SkFont(), p);
diff --git a/samplecode/SampleUnpremul.cpp b/samplecode/SampleUnpremul.cpp
index da7e42d..e2b34da 100644
--- a/samplecode/SampleUnpremul.cpp
+++ b/samplecode/SampleUnpremul.cpp
@@ -81,7 +81,9 @@
auto looper(
SkBlurDrawLooper::Make(SK_ColorBLUE, SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(2)),
0, 0));
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
paint.setLooper(looper);
+#endif
SkScalar height = font.getMetrics(nullptr);
if (!fDecodeSucceeded) {
SkString failure;
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index bf9b690..12f0ea3 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -472,8 +472,10 @@
SkPaint* paint = fLazyPaintPerLooper.set(fLazyPaintInit.isValid() ?
*fLazyPaintInit.get() : fOrigPaint);
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
// never want our downstream clients (i.e. devices) to see loopers
paint->setDrawLooper(nullptr);
+#endif
if (fTempLayerForImageFilter) {
paint->setImageFilter(nullptr);
diff --git a/src/core/SkColorSpaceXformer.cpp b/src/core/SkColorSpaceXformer.cpp
index 09f399c..d31b0c5 100644
--- a/src/core/SkColorSpaceXformer.cpp
+++ b/src/core/SkColorSpaceXformer.cpp
@@ -169,9 +169,11 @@
dst.setColorFilter(this->apply(cf));
}
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
if (auto looper = src.getDrawLooper()) {
dst.setDrawLooper(looper->makeColorSpace(this));
}
+#endif
if (auto imageFilter = src.getImageFilter()) {
dst.setImageFilter(this->apply(imageFilter));
diff --git a/src/core/SkDrawLooper.cpp b/src/core/SkDrawLooper.cpp
index db6bd54..8b1a3b5 100644
--- a/src/core/SkDrawLooper.cpp
+++ b/src/core/SkDrawLooper.cpp
@@ -20,7 +20,9 @@
for (;;) {
SkPaint p(paint);
if (context->next(&canvas, &p)) {
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
p.setLooper(nullptr);
+#endif
if (!p.canComputeFastBounds()) {
return false;
}
@@ -47,7 +49,9 @@
if (context->next(&canvas, &p)) {
SkRect r(src);
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
p.setLooper(nullptr);
+#endif
p.computeFastBounds(r, &r);
canvas.getTotalMatrix().mapRect(&r);
diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp
index 150fcce..85dc6ca 100644
--- a/src/core/SkPaint.cpp
+++ b/src/core/SkPaint.cpp
@@ -243,9 +243,14 @@
MOVE_FIELD(ColorFilter)
MOVE_FIELD(PathEffect)
MOVE_FIELD(MaskFilter)
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
MOVE_FIELD(DrawLooper)
+#endif
#undef MOVE_FIELD
+
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
void SkPaint::setLooper(sk_sp<SkDrawLooper> looper) { fDrawLooper = std::move(looper); }
+#endif
///////////////////////////////////////////////////////////////////////////////
@@ -449,14 +454,20 @@
paint->setMaskFilter(buffer.readMaskFilter());
paint->setColorFilter(buffer.readColorFilter());
(void)buffer.read32(); // use to be SkRasterizer
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
paint->setLooper(buffer.readDrawLooper());
+#else
+ (void)buffer.readDrawLooper();
+#endif
paint->setImageFilter(buffer.readImageFilter());
} else {
paint->setPathEffect(nullptr);
paint->setShader(nullptr);
paint->setMaskFilter(nullptr);
paint->setColorFilter(nullptr);
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
paint->setLooper(nullptr);
+#endif
paint->setImageFilter(nullptr);
}
@@ -489,14 +500,20 @@
paint->setShader(buffer.readShader());
paint->setMaskFilter(buffer.readMaskFilter());
paint->setColorFilter(buffer.readColorFilter());
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
paint->setLooper(buffer.readDrawLooper());
+#else
+ (void)buffer.readDrawLooper();
+#endif
paint->setImageFilter(buffer.readImageFilter());
} else {
paint->setPathEffect(nullptr);
paint->setShader(nullptr);
paint->setMaskFilter(nullptr);
paint->setColorFilter(nullptr);
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
paint->setLooper(nullptr);
+#endif
paint->setImageFilter(nullptr);
}
diff --git a/tests/PaintTest.cpp b/tests/PaintTest.cpp
index 762cf1f..20187ec 100644
--- a/tests/PaintTest.cpp
+++ b/tests/PaintTest.cpp
@@ -135,7 +135,9 @@
paint.setStrokeWidth(SkIntToScalar(2));
// set a few pointers
SkLayerDrawLooper::Builder looperBuilder;
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
paint.setLooper(looperBuilder.detach());
+#endif
paint.setMaskFilter(SkMaskFilter::MakeBlur(kNormal_SkBlurStyle,
SkBlurMask::ConvertRadiusToSigma(1)));
@@ -263,7 +265,9 @@
SkPaint paint;
paint.setColor(0x00AABBCC);
paint.setBlendMode(SkBlendMode::kModulate);
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
paint.setLooper(nullptr); // Default value, ignored.
+#endif
SkBinaryWriteBuffer writer;
SkPaintPriv::Flatten(paint, writer);
diff --git a/tests/QuickRejectTest.cpp b/tests/QuickRejectTest.cpp
index 4bffe13..02752bf 100644
--- a/tests/QuickRejectTest.cpp
+++ b/tests/QuickRejectTest.cpp
@@ -80,6 +80,7 @@
canvas.drawBitmap(src, SkIntToScalar(-10), 0, &paint);
REPORTER_ASSERT(reporter, 0 == *dst.getAddr32(5, 5));
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
// now install our looper, which will draw, since it internally translates
// to the left. The test is to ensure that canvas' quickReject machinary
// allows us through, even though sans-looper we would look like we should
@@ -87,6 +88,7 @@
paint.setLooper(sk_make_sp<TestLooper>());
canvas.drawBitmap(src, SkIntToScalar(-10), 0, &paint);
REPORTER_ASSERT(reporter, 0xFFFFFFFF == *dst.getAddr32(5, 5));
+#endif
}
static void test_layers(skiatest::Reporter* reporter) {
@@ -171,6 +173,7 @@
canvas.quickReject(SkRect::MakeWH(100.0f, 100.0f));
}
+#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
#include "SkLayerDrawLooper.h"
#include "SkSurface.h"
DEF_TEST(looper_nothingtodraw, reporter) {
@@ -196,3 +199,4 @@
// See https://skia-review.googlesource.com/c/skia/+/121220
surf->getCanvas()->drawRect({1, 1, 10, 10}, paint);
}
+#endif