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

Unified Diff: src/effects/SkEmbossMaskFilter.cpp

Issue 21835004: Blur refactoring (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: hide constant Created 7 years, 4 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/SkEmbossMaskFilter.cpp
===================================================================
--- src/effects/SkEmbossMaskFilter.cpp (revision 10522)
+++ src/effects/SkEmbossMaskFilter.cpp (working copy)
@@ -14,6 +14,10 @@
#include "SkFlattenableBuffers.h"
#include "SkString.h"
+#ifndef CLEAN_UP_WHEN_SKPS_ARE_CAPTURED_IN_V13
+#include "SkPicture.h"
+#endif
+
static inline int pin2byte(int n) {
if (n < 0) {
n = 0;
@@ -26,6 +30,13 @@
SkMaskFilter* SkBlurMaskFilter::CreateEmboss(const SkScalar direction[3],
SkScalar ambient, SkScalar specular,
SkScalar blurRadius) {
+ return SkBlurMaskFilter::CreateEmboss(direction, ambient, specular,
+ SkBlurMask::ConvertRadiusToSigma(blurRadius), true);
+}
+
+SkMaskFilter* SkBlurMaskFilter::CreateEmboss(const SkScalar direction[3],
+ SkScalar ambient, SkScalar specular,
+ SkScalar blurSigma, bool unused) {
if (direction == NULL) {
return NULL;
}
@@ -42,7 +53,7 @@
light.fAmbient = SkToU8(am);
light.fSpecular = SkToU8(sp);
- return SkNEW_ARGS(SkEmbossMaskFilter, (light, blurRadius));
+ return SkNEW_ARGS(SkEmbossMaskFilter, (light, blurSigma, unused));
}
///////////////////////////////////////////////////////////////////////////////
@@ -56,9 +67,16 @@
}
}
+SkEmbossMaskFilter::SkEmbossMaskFilter(const Light& light, SkScalar blurSigma, bool unused)
+ : fLight(light), fBlurSigma(blurSigma) {
+ normalize(fLight.fDirection);
+}
+
SkEmbossMaskFilter::SkEmbossMaskFilter(const Light& light, SkScalar blurRadius)
- : fLight(light), fBlurRadius(blurRadius) {
+ : fLight(light) {
normalize(fLight.fDirection);
+
+ fBlurSigma = SkBlurMask::ConvertRadiusToSigma(blurRadius);
}
SkMask::Format SkEmbossMaskFilter::getFormat() const {
@@ -66,17 +84,17 @@
}
bool SkEmbossMaskFilter::filterMask(SkMask* dst, const SkMask& src,
- const SkMatrix& matrix, SkIPoint* margin) const {
- SkScalar radius = matrix.mapRadius(fBlurRadius);
+ const SkMatrix& matrix, SkIPoint* margin) const {
+ SkScalar sigma = matrix.mapRadius(fBlurSigma);
- if (!SkBlurMask::Blur(dst, src, radius, SkBlurMask::kInner_Style,
- SkBlurMask::kLow_Quality)) {
+ if (!SkBlurMask::BoxBlur(dst, src, sigma, SkBlurMask::kInner_Style,
+ SkBlurMask::kLow_Quality, NULL, true)) {
return false;
}
dst->fFormat = SkMask::k3D_Format;
if (margin) {
- margin->set(SkScalarCeil(radius), SkScalarCeil(radius));
+ margin->set(SkScalarCeil(3*sigma), SkScalarCeil(3*sigma));
}
if (src.fImage == NULL) {
@@ -121,7 +139,15 @@
SkASSERT(buffer.getArrayCount() == sizeof(Light));
buffer.readByteArray(&fLight);
SkASSERT(fLight.fPad == 0); // for the font-cache lookup to be clean
- fBlurRadius = buffer.readScalar();
+#ifndef CLEAN_UP_WHEN_SKPS_ARE_CAPTURED_IN_V13
+ if (SkPicture::PICTURE_VERSION < 13) {
+ fBlurSigma = SkBlurMask::ConvertRadiusToSigma(buffer.readScalar());
+ } else {
+#endif
+ fBlurSigma = buffer.readScalar();
+#ifndef CLEAN_UP_WHEN_SKPS_ARE_CAPTURED_IN_V13
+ }
+#endif
}
void SkEmbossMaskFilter::flatten(SkFlattenableWriteBuffer& buffer) const {
@@ -130,7 +156,7 @@
Light tmpLight = fLight;
tmpLight.fPad = 0; // for the font-cache lookup to be clean
buffer.writeByteArray(&tmpLight, sizeof(tmpLight));
- buffer.writeScalar(fBlurRadius);
+ buffer.writeScalar(fBlurSigma);
}
#ifdef SK_DEVELOPER
@@ -148,8 +174,8 @@
str->appendf("ambient: %d specular: %d ",
fLight.fAmbient, fLight.fSpecular);
- str->append("blurRadius: ");
- str->appendScalar(fBlurRadius);
+ str->append("blurSigma: ");
+ str->appendScalar(fBlurSigma);
str->append(")");
}
#endif

Powered by Google App Engine
This is Rietveld 408576698