Index: src/effects/SkBlurImageFilter.cpp |
diff --git a/src/effects/SkBlurImageFilter.cpp b/src/effects/SkBlurImageFilter.cpp |
index 5efef0ba50169ccf723592eb9884b6162f154281..933a8eb7e69c4994dc6e0689cf79cf22440b0457 100644 |
--- a/src/effects/SkBlurImageFilter.cpp |
+++ b/src/effects/SkBlurImageFilter.cpp |
@@ -18,26 +18,26 @@ |
SkBlurImageFilter::SkBlurImageFilter(SkFlattenableReadBuffer& buffer) |
: INHERITED(1, buffer) { |
- fSigma.fWidth = buffer.readScalar(); |
- fSigma.fHeight = buffer.readScalar(); |
- buffer.validate(SkScalarIsFinite(fSigma.fWidth) && |
- SkScalarIsFinite(fSigma.fHeight) && |
- (fSigma.fWidth >= 0) && |
- (fSigma.fHeight >= 0)); |
+ fSigma.fX = buffer.readScalar(); |
+ fSigma.fY = buffer.readScalar(); |
+ buffer.validate(SkScalarIsFinite(fSigma.fX) && |
+ SkScalarIsFinite(fSigma.fY) && |
+ (fSigma.fX >= 0) && |
+ (fSigma.fY >= 0)); |
} |
SkBlurImageFilter::SkBlurImageFilter(SkScalar sigmaX, |
SkScalar sigmaY, |
SkImageFilter* input, |
const CropRect* cropRect) |
- : INHERITED(input, cropRect), fSigma(SkSize::Make(sigmaX, sigmaY)) { |
+ : INHERITED(input, cropRect), fSigma(SkVector::Make(sigmaX, sigmaY)) { |
SkASSERT(sigmaX >= 0 && sigmaY >= 0); |
} |
void SkBlurImageFilter::flatten(SkFlattenableWriteBuffer& buffer) const { |
this->INHERITED::flatten(buffer); |
- buffer.writeScalar(fSigma.fWidth); |
- buffer.writeScalar(fSigma.fHeight); |
+ buffer.writeScalar(fSigma.fX); |
+ buffer.writeScalar(fSigma.fY); |
} |
enum BlurDirection { |
@@ -165,10 +165,13 @@ bool SkBlurImageFilter::onFilterImage(Proxy* proxy, |
return false; |
} |
+ SkVector sigma; |
+ ctm.mapVectors(&sigma, &fSigma, 1); |
+ |
int kernelSizeX, kernelSizeX3, lowOffsetX, highOffsetX; |
int kernelSizeY, kernelSizeY3, lowOffsetY, highOffsetY; |
- getBox3Params(fSigma.width(), &kernelSizeX, &kernelSizeX3, &lowOffsetX, &highOffsetX); |
- getBox3Params(fSigma.height(), &kernelSizeY, &kernelSizeY3, &lowOffsetY, &highOffsetY); |
+ getBox3Params(sigma.x(), &kernelSizeX, &kernelSizeX3, &lowOffsetX, &highOffsetX); |
+ getBox3Params(sigma.y(), &kernelSizeY, &kernelSizeY3, &lowOffsetY, &highOffsetY); |
if (kernelSizeX < 0 || kernelSizeY < 0) { |
return false; |
@@ -235,13 +238,15 @@ bool SkBlurImageFilter::filterImageGPU(Proxy* proxy, const SkBitmap& src, const |
if (!this->applyCropRect(&rect, ctm)) { |
return false; |
} |
+ SkVector sigma; |
+ ctm.mapVectors(&sigma, &fSigma, 1); |
SkAutoTUnref<GrTexture> tex(SkGpuBlurUtils::GaussianBlur(source->getContext(), |
source, |
false, |
SkRect::Make(rect), |
true, |
- fSigma.width(), |
- fSigma.height())); |
+ sigma.x(), |
+ sigma.y())); |
offset->fX = rect.fLeft; |
offset->fY = rect.fTop; |
return SkImageFilterUtils::WrapTexture(tex, rect.width(), rect.height(), result); |