Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1227)

Unified Diff: src/effects/SkBlurDrawLooper.cpp

Issue 155513012: [WIP] Add Context to SkDrawLooper. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Make methods const. Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/effects/SkBlurDrawLooper.cpp
diff --git a/src/effects/SkBlurDrawLooper.cpp b/src/effects/SkBlurDrawLooper.cpp
index 3a5c6973715704d837222ef77fb1a1670a9e91a9..7bc42073ec57196d0592939fc49e5aca6be8a528 100644
--- a/src/effects/SkBlurDrawLooper.cpp
+++ b/src/effects/SkBlurDrawLooper.cpp
@@ -33,7 +33,6 @@ void SkBlurDrawLooper::init(SkScalar sigma, SkScalar dx, SkScalar dy,
fDy = dy;
fBlurColor = color;
fBlurFlags = flags;
- fState = kDone;
SkASSERT(flags <= kAll_BlurFlag);
if (sigma > 0) {
@@ -90,16 +89,20 @@ void SkBlurDrawLooper::flatten(SkWriteBuffer& buffer) const {
buffer.writeUInt(fBlurFlags);
}
-void SkBlurDrawLooper::init(SkCanvas*) {
- fState = kBeforeEdge;
+SkDrawLooper::DrawContext* SkBlurDrawLooper::init(SkCanvas*) const {
+ return new SkBlurDrawLooperContext;
scroggo 2014/02/06 17:57:13 SkNEW
}
-bool SkBlurDrawLooper::next(SkCanvas* canvas, SkPaint* paint) {
- switch (fState) {
+bool SkBlurDrawLooper::next_internal(SkCanvas* canvas, SkPaint* paint,
+ SkDrawLooper::DrawContext* context) {
+ SkBlurDrawLooperContext* blurContext =
+ static_cast<SkBlurDrawLooperContext*>(context);
+
+ switch (blurContext->fState) {
case kBeforeEdge:
// we do nothing if a maskfilter is already installed
if (paint->getMaskFilter()) {
- fState = kDone;
+ blurContext->fState = kDone;
return false;
}
#ifdef SK_BUILD_FOR_ANDROID
@@ -122,18 +125,21 @@ bool SkBlurDrawLooper::next(SkCanvas* canvas, SkPaint* paint) {
} else {
canvas->translate(fDx, fDy);
}
- fState = kAfterEdge;
+ blurContext->fState = kAfterEdge;
return true;
case kAfterEdge:
canvas->restore();
- fState = kDone;
+ blurContext->fState = kDone;
return true;
default:
- SkASSERT(kDone == fState);
+ SkASSERT(kDone == blurContext->fState);
return false;
}
}
+SkBlurDrawLooper::SkBlurDrawLooperContext::SkBlurDrawLooperContext()
+ : fState(SkBlurDrawLooper::kBeforeEdge) {}
+
#ifdef SK_DEVELOPER
void SkBlurDrawLooper::toString(SkString* str) const {
str->append("SkBlurDrawLooper: ");

Powered by Google App Engine
This is Rietveld 408576698