Loading core/java/android/view/GLES20Canvas.java +0 −15 Original line number Diff line number Diff line Loading @@ -43,7 +43,6 @@ import android.text.TextUtils; class GLES20Canvas extends HardwareCanvas { // Must match modifiers used in the JNI layer private static final int MODIFIER_NONE = 0; private static final int MODIFIER_SHADOW = 1; private static final int MODIFIER_SHADER = 2; private final boolean mOpaque; Loading Loading @@ -1297,12 +1296,6 @@ class GLES20Canvas extends HardwareCanvas { private int setupModifiers(Paint paint) { int modifiers = MODIFIER_NONE; if (paint.hasShadow) { nSetupShadow(mRenderer, paint.shadowRadius, paint.shadowDx, paint.shadowDy, paint.shadowColor); modifiers |= MODIFIER_SHADOW; } final Shader shader = paint.getShader(); if (shader != null) { nSetupShader(mRenderer, shader.native_shader); Loading @@ -1315,12 +1308,6 @@ class GLES20Canvas extends HardwareCanvas { private int setupModifiers(Paint paint, int flags) { int modifiers = MODIFIER_NONE; if (paint.hasShadow && (flags & MODIFIER_SHADOW) != 0) { nSetupShadow(mRenderer, paint.shadowRadius, paint.shadowDx, paint.shadowDy, paint.shadowColor); modifiers |= MODIFIER_SHADOW; } final Shader shader = paint.getShader(); if (shader != null && (flags & MODIFIER_SHADER) != 0) { nSetupShader(mRenderer, shader.native_shader); Loading @@ -1331,8 +1318,6 @@ class GLES20Canvas extends HardwareCanvas { } private static native void nSetupShader(long renderer, long shader); private static native void nSetupShadow(long renderer, float radius, float dx, float dy, int color); private static native void nResetModifiers(long renderer, int modifiers); } core/java/android/widget/TextView.java +4 −1 Original line number Diff line number Diff line Loading @@ -289,6 +289,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener private Spannable.Factory mSpannableFactory = Spannable.Factory.getInstance(); private float mShadowRadius, mShadowDx, mShadowDy; private int mShadowColor; private boolean mPreDrawRegistered; Loading Loading @@ -2755,6 +2757,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener mShadowRadius = radius; mShadowDx = dx; mShadowDy = dy; mShadowColor = color; // Will change text clip region if (mEditor != null) mEditor.invalidateTextDisplayList(); Loading Loading @@ -2804,7 +2807,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener * @attr ref android.R.styleable#TextView_shadowColor */ public int getShadowColor() { return mTextPaint.shadowColor; return mShadowColor; } /** Loading core/jni/android/graphics/Paint.cpp +12 −6 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ #include "SkXfermode.h" #include "unicode/uloc.h" #include "unicode/ushape.h" #include "utils/Blur.h" #include "TextLayout.h" // temporary for debugging Loading Loading @@ -776,19 +777,23 @@ public: env->ReleaseStringChars(text, textArray); } static void setShadowLayer(JNIEnv* env, jobject jpaint, jfloat radius, static void setShadowLayer(JNIEnv* env, jobject clazz, jlong paintHandle, jfloat radius, jfloat dx, jfloat dy, jint color) { NPE_CHECK_RETURN_VOID(env, jpaint); SkPaint* paint = GraphicsJNI::getNativePaint(env, jpaint); SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle); if (radius <= 0) { paint->setLooper(NULL); } else { paint->setLooper(new SkBlurDrawLooper(radius, dx, dy, (SkColor)color))->unref(); SkScalar sigma = android::uirenderer::Blur::convertRadiusToSigma(radius); paint->setLooper(new SkBlurDrawLooper((SkColor)color, sigma, dx, dy))->unref(); } } static jboolean hasShadowLayer(JNIEnv* env, jobject clazz, jlong paintHandle) { SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle); return paint->getLooper() && paint->getLooper()->asABlurShadow(NULL); } static int breakText(JNIEnv* env, SkPaint& paint, const jchar text[], int count, float maxWidth, jint bidiFlags, jfloatArray jmeasured, SkPaint::TextBufferDirection tbd) { Loading Loading @@ -968,7 +973,8 @@ static JNINativeMethod methods[] = { (void*) SkPaintGlue::getStringBounds }, {"nativeGetCharArrayBounds", "(J[CIIILandroid/graphics/Rect;)V", (void*) SkPaintGlue::getCharArrayBounds }, {"nSetShadowLayer", "(FFFI)V", (void*)SkPaintGlue::setShadowLayer} {"native_setShadowLayer", "(JFFFI)V", (void*)SkPaintGlue::setShadowLayer}, {"native_hasShadowLayer", "(J)Z", (void*)SkPaintGlue::hasShadowLayer} }; static jfieldID req_fieldID(jfieldID id) { Loading core/jni/android_view_GLES20Canvas.cpp +0 −9 Original line number Diff line number Diff line Loading @@ -79,7 +79,6 @@ using namespace uirenderer; #define RENDERER_LOGD(...) #endif #define MODIFIER_SHADOW 1 #define MODIFIER_SHADER 2 // ---------------------------------------------------------------------------- Loading Loading @@ -617,7 +616,6 @@ static void android_view_GLES20Canvas_drawLines(JNIEnv* env, jobject clazz, static void android_view_GLES20Canvas_resetModifiers(JNIEnv* env, jobject clazz, jlong rendererPtr, jint modifiers) { OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererPtr); if (modifiers & MODIFIER_SHADOW) renderer->resetShadow(); if (modifiers & MODIFIER_SHADER) renderer->resetShader(); } Loading @@ -629,12 +627,6 @@ static void android_view_GLES20Canvas_setupShader(JNIEnv* env, jobject clazz, } static void android_view_GLES20Canvas_setupShadow(JNIEnv* env, jobject clazz, jlong rendererPtr, jfloat radius, jfloat dx, jfloat dy, jint color) { OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererPtr); renderer->setupShadow(radius, dx, dy, color); } // ---------------------------------------------------------------------------- // Draw filters // ---------------------------------------------------------------------------- Loading Loading @@ -1032,7 +1024,6 @@ static JNINativeMethod gMethods[] = { { "nResetModifiers", "(JI)V", (void*) android_view_GLES20Canvas_resetModifiers }, { "nSetupShader", "(JJ)V", (void*) android_view_GLES20Canvas_setupShader }, { "nSetupShadow", "(JFFFI)V", (void*) android_view_GLES20Canvas_setupShadow }, { "nSetupPaintFilter", "(JII)V", (void*) android_view_GLES20Canvas_setupPaintFilter }, { "nResetPaintFilter", "(J)V", (void*) android_view_GLES20Canvas_resetPaintFilter }, Loading graphics/java/android/graphics/Paint.java +16 −43 Original line number Diff line number Diff line Loading @@ -52,27 +52,6 @@ public class Paint { private Locale mLocale; /** * @hide */ public boolean hasShadow; /** * @hide */ public float shadowDx; /** * @hide */ public float shadowDy; /** * @hide */ public float shadowRadius; /** * @hide */ public int shadowColor; /** * @hide */ Loading Loading @@ -492,12 +471,6 @@ public class Paint { mCompatScaling = 1; mInvCompatScaling = 1; hasShadow = false; shadowDx = 0; shadowDy = 0; shadowRadius = 0; shadowColor = 0; mBidiFlags = BIDI_DEFAULT_LTR; setTextLocale(Locale.getDefault()); setElegantTextHeight(false); Loading Loading @@ -538,12 +511,6 @@ public class Paint { mCompatScaling = paint.mCompatScaling; mInvCompatScaling = paint.mInvCompatScaling; hasShadow = paint.hasShadow; shadowDx = paint.shadowDx; shadowDy = paint.shadowDy; shadowRadius = paint.shadowRadius; shadowColor = paint.shadowColor; mBidiFlags = paint.mBidiFlags; mLocale = paint.mLocale; } Loading Loading @@ -1135,22 +1102,24 @@ public class Paint { * layer is removed. */ public void setShadowLayer(float radius, float dx, float dy, int color) { hasShadow = radius > 0.0f; shadowRadius = radius; shadowDx = dx; shadowDy = dy; shadowColor = color; nSetShadowLayer(radius, dx, dy, color); native_setShadowLayer(mNativePaint, radius, dx, dy, color); } private native void nSetShadowLayer(float radius, float dx, float dy, int color); /** * Clear the shadow layer. */ public void clearShadowLayer() { hasShadow = false; nSetShadowLayer(0, 0, 0, 0); setShadowLayer(0, 0, 0, 0); } /** * Checks if the paint has a shadow layer attached * * @return true if the paint has a shadow layer attached and false otherwise * @hide */ public boolean hasShadowLayer() { return native_hasShadowLayer(mNativePaint); } /** Loading Loading @@ -2295,4 +2264,8 @@ public class Paint { private static native void nativeGetCharArrayBounds(long nativePaint, char[] text, int index, int count, int bidiFlags, Rect bounds); private static native void finalizer(long nativePaint); private static native void native_setShadowLayer(long native_object, float radius, float dx, float dy, int color); private static native boolean native_hasShadowLayer(long native_object); } Loading
core/java/android/view/GLES20Canvas.java +0 −15 Original line number Diff line number Diff line Loading @@ -43,7 +43,6 @@ import android.text.TextUtils; class GLES20Canvas extends HardwareCanvas { // Must match modifiers used in the JNI layer private static final int MODIFIER_NONE = 0; private static final int MODIFIER_SHADOW = 1; private static final int MODIFIER_SHADER = 2; private final boolean mOpaque; Loading Loading @@ -1297,12 +1296,6 @@ class GLES20Canvas extends HardwareCanvas { private int setupModifiers(Paint paint) { int modifiers = MODIFIER_NONE; if (paint.hasShadow) { nSetupShadow(mRenderer, paint.shadowRadius, paint.shadowDx, paint.shadowDy, paint.shadowColor); modifiers |= MODIFIER_SHADOW; } final Shader shader = paint.getShader(); if (shader != null) { nSetupShader(mRenderer, shader.native_shader); Loading @@ -1315,12 +1308,6 @@ class GLES20Canvas extends HardwareCanvas { private int setupModifiers(Paint paint, int flags) { int modifiers = MODIFIER_NONE; if (paint.hasShadow && (flags & MODIFIER_SHADOW) != 0) { nSetupShadow(mRenderer, paint.shadowRadius, paint.shadowDx, paint.shadowDy, paint.shadowColor); modifiers |= MODIFIER_SHADOW; } final Shader shader = paint.getShader(); if (shader != null && (flags & MODIFIER_SHADER) != 0) { nSetupShader(mRenderer, shader.native_shader); Loading @@ -1331,8 +1318,6 @@ class GLES20Canvas extends HardwareCanvas { } private static native void nSetupShader(long renderer, long shader); private static native void nSetupShadow(long renderer, float radius, float dx, float dy, int color); private static native void nResetModifiers(long renderer, int modifiers); }
core/java/android/widget/TextView.java +4 −1 Original line number Diff line number Diff line Loading @@ -289,6 +289,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener private Spannable.Factory mSpannableFactory = Spannable.Factory.getInstance(); private float mShadowRadius, mShadowDx, mShadowDy; private int mShadowColor; private boolean mPreDrawRegistered; Loading Loading @@ -2755,6 +2757,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener mShadowRadius = radius; mShadowDx = dx; mShadowDy = dy; mShadowColor = color; // Will change text clip region if (mEditor != null) mEditor.invalidateTextDisplayList(); Loading Loading @@ -2804,7 +2807,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener * @attr ref android.R.styleable#TextView_shadowColor */ public int getShadowColor() { return mTextPaint.shadowColor; return mShadowColor; } /** Loading
core/jni/android/graphics/Paint.cpp +12 −6 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ #include "SkXfermode.h" #include "unicode/uloc.h" #include "unicode/ushape.h" #include "utils/Blur.h" #include "TextLayout.h" // temporary for debugging Loading Loading @@ -776,19 +777,23 @@ public: env->ReleaseStringChars(text, textArray); } static void setShadowLayer(JNIEnv* env, jobject jpaint, jfloat radius, static void setShadowLayer(JNIEnv* env, jobject clazz, jlong paintHandle, jfloat radius, jfloat dx, jfloat dy, jint color) { NPE_CHECK_RETURN_VOID(env, jpaint); SkPaint* paint = GraphicsJNI::getNativePaint(env, jpaint); SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle); if (radius <= 0) { paint->setLooper(NULL); } else { paint->setLooper(new SkBlurDrawLooper(radius, dx, dy, (SkColor)color))->unref(); SkScalar sigma = android::uirenderer::Blur::convertRadiusToSigma(radius); paint->setLooper(new SkBlurDrawLooper((SkColor)color, sigma, dx, dy))->unref(); } } static jboolean hasShadowLayer(JNIEnv* env, jobject clazz, jlong paintHandle) { SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle); return paint->getLooper() && paint->getLooper()->asABlurShadow(NULL); } static int breakText(JNIEnv* env, SkPaint& paint, const jchar text[], int count, float maxWidth, jint bidiFlags, jfloatArray jmeasured, SkPaint::TextBufferDirection tbd) { Loading Loading @@ -968,7 +973,8 @@ static JNINativeMethod methods[] = { (void*) SkPaintGlue::getStringBounds }, {"nativeGetCharArrayBounds", "(J[CIIILandroid/graphics/Rect;)V", (void*) SkPaintGlue::getCharArrayBounds }, {"nSetShadowLayer", "(FFFI)V", (void*)SkPaintGlue::setShadowLayer} {"native_setShadowLayer", "(JFFFI)V", (void*)SkPaintGlue::setShadowLayer}, {"native_hasShadowLayer", "(J)Z", (void*)SkPaintGlue::hasShadowLayer} }; static jfieldID req_fieldID(jfieldID id) { Loading
core/jni/android_view_GLES20Canvas.cpp +0 −9 Original line number Diff line number Diff line Loading @@ -79,7 +79,6 @@ using namespace uirenderer; #define RENDERER_LOGD(...) #endif #define MODIFIER_SHADOW 1 #define MODIFIER_SHADER 2 // ---------------------------------------------------------------------------- Loading Loading @@ -617,7 +616,6 @@ static void android_view_GLES20Canvas_drawLines(JNIEnv* env, jobject clazz, static void android_view_GLES20Canvas_resetModifiers(JNIEnv* env, jobject clazz, jlong rendererPtr, jint modifiers) { OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererPtr); if (modifiers & MODIFIER_SHADOW) renderer->resetShadow(); if (modifiers & MODIFIER_SHADER) renderer->resetShader(); } Loading @@ -629,12 +627,6 @@ static void android_view_GLES20Canvas_setupShader(JNIEnv* env, jobject clazz, } static void android_view_GLES20Canvas_setupShadow(JNIEnv* env, jobject clazz, jlong rendererPtr, jfloat radius, jfloat dx, jfloat dy, jint color) { OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererPtr); renderer->setupShadow(radius, dx, dy, color); } // ---------------------------------------------------------------------------- // Draw filters // ---------------------------------------------------------------------------- Loading Loading @@ -1032,7 +1024,6 @@ static JNINativeMethod gMethods[] = { { "nResetModifiers", "(JI)V", (void*) android_view_GLES20Canvas_resetModifiers }, { "nSetupShader", "(JJ)V", (void*) android_view_GLES20Canvas_setupShader }, { "nSetupShadow", "(JFFFI)V", (void*) android_view_GLES20Canvas_setupShadow }, { "nSetupPaintFilter", "(JII)V", (void*) android_view_GLES20Canvas_setupPaintFilter }, { "nResetPaintFilter", "(J)V", (void*) android_view_GLES20Canvas_resetPaintFilter }, Loading
graphics/java/android/graphics/Paint.java +16 −43 Original line number Diff line number Diff line Loading @@ -52,27 +52,6 @@ public class Paint { private Locale mLocale; /** * @hide */ public boolean hasShadow; /** * @hide */ public float shadowDx; /** * @hide */ public float shadowDy; /** * @hide */ public float shadowRadius; /** * @hide */ public int shadowColor; /** * @hide */ Loading Loading @@ -492,12 +471,6 @@ public class Paint { mCompatScaling = 1; mInvCompatScaling = 1; hasShadow = false; shadowDx = 0; shadowDy = 0; shadowRadius = 0; shadowColor = 0; mBidiFlags = BIDI_DEFAULT_LTR; setTextLocale(Locale.getDefault()); setElegantTextHeight(false); Loading Loading @@ -538,12 +511,6 @@ public class Paint { mCompatScaling = paint.mCompatScaling; mInvCompatScaling = paint.mInvCompatScaling; hasShadow = paint.hasShadow; shadowDx = paint.shadowDx; shadowDy = paint.shadowDy; shadowRadius = paint.shadowRadius; shadowColor = paint.shadowColor; mBidiFlags = paint.mBidiFlags; mLocale = paint.mLocale; } Loading Loading @@ -1135,22 +1102,24 @@ public class Paint { * layer is removed. */ public void setShadowLayer(float radius, float dx, float dy, int color) { hasShadow = radius > 0.0f; shadowRadius = radius; shadowDx = dx; shadowDy = dy; shadowColor = color; nSetShadowLayer(radius, dx, dy, color); native_setShadowLayer(mNativePaint, radius, dx, dy, color); } private native void nSetShadowLayer(float radius, float dx, float dy, int color); /** * Clear the shadow layer. */ public void clearShadowLayer() { hasShadow = false; nSetShadowLayer(0, 0, 0, 0); setShadowLayer(0, 0, 0, 0); } /** * Checks if the paint has a shadow layer attached * * @return true if the paint has a shadow layer attached and false otherwise * @hide */ public boolean hasShadowLayer() { return native_hasShadowLayer(mNativePaint); } /** Loading Loading @@ -2295,4 +2264,8 @@ public class Paint { private static native void nativeGetCharArrayBounds(long nativePaint, char[] text, int index, int count, int bidiFlags, Rect bounds); private static native void finalizer(long nativePaint); private static native void native_setShadowLayer(long native_object, float radius, float dx, float dy, int color); private static native boolean native_hasShadowLayer(long native_object); }