Patch by Mike Lawther (mikelawther@chromium.org).
The HTML5 canvas client of BlurDrawLooper needs the option to not apply the
canvas transform to the blur offset.
see
http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-elemen...
- "The shadowOffsetX and shadowOffsetY attributes specify the distance that the
shadow will be offset in the positive horizontal and positive vertical distance
respectively. Their values are in coordinate space units. They are not affected
by the current transformation matrix."
This patch is part of fixing
http://code.google.com/p/chromium/issues/detail?id=64647.
Review URL: http://codereview.appspot.com/3391041/
git-svn-id: http://skia.googlecode.com/svn/trunk@631 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/include/effects/SkBlurDrawLooper.h b/include/effects/SkBlurDrawLooper.h
index 028b2eb..6f96ff6 100644
--- a/include/effects/SkBlurDrawLooper.h
+++ b/include/effects/SkBlurDrawLooper.h
@@ -29,7 +29,19 @@
*/
class SkBlurDrawLooper : public SkDrawLooper {
public:
- SkBlurDrawLooper(SkScalar radius, SkScalar dx, SkScalar dy, SkColor color);
+ enum BlurFlags {
+ kNone_BlurFlag = 0x00,
+ /**
+ The blur layer's dx/dy/radius aren't affected by the canvas
+ transform.
+ */
+ kIgnoreTransform_BlurFlag = 0x01,
+ /** mask for all blur flags */
+ kAll_BlurFlag = 0x01
+ };
+
+ SkBlurDrawLooper(SkScalar radius, SkScalar dx, SkScalar dy, SkColor color,
+ uint32_t flags = kNone_BlurFlag);
virtual ~SkBlurDrawLooper();
// overrides from SkDrawLooper
@@ -41,6 +53,7 @@
return SkNEW_ARGS(SkBlurDrawLooper, (buffer));
}
+
protected:
SkBlurDrawLooper(SkFlattenableReadBuffer&);
// overrides from SkFlattenable
@@ -55,6 +68,7 @@
SkColor fBlurColor;
SkColor fSavedColor; // remember the original
int fSaveCount;
+ uint32_t fBlurFlags;
enum State {
kBeforeEdge,