auto import from //depot/cupcake/@135843
diff --git a/core/jni/android/graphics/MaskFilter.cpp b/core/jni/android/graphics/MaskFilter.cpp
new file mode 100644
index 0000000..e6048cd
--- /dev/null
+++ b/core/jni/android/graphics/MaskFilter.cpp
@@ -0,0 +1,61 @@
+#include "GraphicsJNI.h"
+#include "SkMaskFilter.h"
+#include "SkBlurMaskFilter.h"
+
+#include <jni.h>
+
+class SkMaskFilterGlue {
+public:
+ static void destructor(JNIEnv* env, jobject, SkMaskFilter* filter) {
+ SkASSERT(filter);
+ filter->unref();
+ }
+
+ static SkMaskFilter* createBlur(JNIEnv* env, jobject, float radius, int blurStyle) {
+ return SkBlurMaskFilter::Create(SkFloatToScalar(radius), (SkBlurMaskFilter::BlurStyle)blurStyle);
+ }
+
+ static SkMaskFilter* createEmboss(JNIEnv* env, jobject, jfloatArray dirArray, float ambient, float specular, float radius) {
+ SkScalar direction[3];
+
+ AutoJavaFloatArray autoDir(env, dirArray, 3);
+ float* values = autoDir.ptr();
+ for (int i = 0; i < 3; i++) {
+ direction[i] = SkFloatToScalar(values[i]);
+ }
+
+ return SkBlurMaskFilter::CreateEmboss(direction, SkFloatToScalar(ambient),
+ SkFloatToScalar(specular), SkFloatToScalar(radius));
+ }
+};
+
+static JNINativeMethod gMaskFilterMethods[] = {
+ { "nativeDestructor", "(I)V", (void*)SkMaskFilterGlue::destructor }
+};
+
+static JNINativeMethod gBlurMaskFilterMethods[] = {
+ { "nativeConstructor", "(FI)I", (void*)SkMaskFilterGlue::createBlur }
+};
+
+static JNINativeMethod gEmbossMaskFilterMethods[] = {
+ { "nativeConstructor", "([FFFF)I", (void*)SkMaskFilterGlue::createEmboss }
+};
+
+#include <android_runtime/AndroidRuntime.h>
+
+#define REG(env, name, array) \
+ result = android::AndroidRuntime::registerNativeMethods(env, name, array, SK_ARRAY_COUNT(array)); \
+ if (result < 0) return result
+
+int register_android_graphics_MaskFilter(JNIEnv* env);
+int register_android_graphics_MaskFilter(JNIEnv* env)
+{
+ int result;
+
+ REG(env, "android/graphics/MaskFilter", gMaskFilterMethods);
+ REG(env, "android/graphics/BlurMaskFilter", gBlurMaskFilterMethods);
+ REG(env, "android/graphics/EmbossMaskFilter", gEmbossMaskFilterMethods);
+
+ return 0;
+}
+