Index: src/effects/SkBlurMask.h |
diff --git a/src/effects/SkBlurMask.h b/src/effects/SkBlurMask.h |
index e0b8d54ce1e11f94b821e166709457e9147da87b..f95c110c90a9c59a0312bd83a8189ec2435546e3 100644 |
--- a/src/effects/SkBlurMask.h |
+++ b/src/effects/SkBlurMask.h |
@@ -62,6 +62,41 @@ public: |
SkIPoint* margin = NULL); |
static SkScalar ConvertRadiusToSigma(SkScalar radius); |
+ |
+ /* Helper functions for analytic rectangle blurs */ |
+ |
+ /** Look up the intensity of the (one dimnensional) blurred half-plane. |
+ @param profile The precomputed 1D blur profile; memory allocated by and managed by |
+ ComputeBlurProfile below. |
+ @param loc the location to look up; The lookup will clamp invalid inputs, but |
+ meaningful data are available between 0 and blurred_width |
+ @param blurred_width The width of the final, blurred rectangle |
+ @param sharp_width The width of the original, unblurred rectangle. |
+ */ |
+ static uint8_t ProfileLookup(const uint8_t* profile, int loc, int blurred_width, int sharp_width); |
+ |
+ /** Allocate memory for and populate the profile of a 1D blurred halfplane. The caller |
+ must free the memory. The amount of memory allocated will be exactly 6*sigma bytes. |
+ @param sigma The standard deviation of the gaussian blur kernel |
+ @param profile_out The location to store the allocated profile curve |
+ */ |
+ |
+ static void ComputeBlurProfile(SkScalar sigma, uint8_t** profile_out); |
+ |
+ /** Compute an entire scanline of a blurred step function. This is a 1D helper that |
+ will produce both the horizontal and vertical profiles of the blurry rectangle. |
+ @param pixels Location to store the resulting pixel data; allocated and managed by caller |
+ @param profile Precomputed blur profile computed by ComputeBlurProfile above. |
+ @param width Size of the pixels array. |
+ @param sigma Standard deviation of the gaussian blur kernel used to compute the profile; |
+ this implicitly gives the size of the pixels array. |
+ */ |
+ |
+ static void ComputeBlurredScanline(uint8_t* pixels, const uint8_t* profile, |
+ unsigned int width, SkScalar sigma); |
+ |
+ |
+ |
}; |
#endif |