Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1e45aae5 authored by Romain Guy's avatar Romain Guy
Browse files

Add drop shadows.

Change-Id: Ic6a72409d4785968d1fbdff229f17ee5c00b240b
parent 029a74a3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -73993,7 +73993,7 @@
<method name="setShadowLayer"
 return="void"
 abstract="false"
 native="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
+9 −1
Original line number Diff line number Diff line
@@ -756,6 +756,12 @@ class GLES20Canvas extends Canvas {
    private boolean setupModifiers(Paint paint) {
        boolean hasModifier = false;

        if (paint.hasShadow) {
            nSetupShadow(mRenderer, paint.shadowRadius, paint.shadowDx, paint.shadowDy,
                    paint.shadowColor);
            hasModifier = true;
        }

        final Shader shader = paint.getShader();
        if (shader != null) {
            nSetupShader(mRenderer, shader.native_shader);
@@ -782,5 +788,7 @@ class GLES20Canvas extends Canvas {
    
    private native void nSetupShader(int renderer, int shader);
    private native void nSetupColorFilter(int renderer, int colorFilter);
    private native void nSetupShadow(int renderer, float radius, float dx, float dy, int color);

    private native void nResetModifiers(int renderer);
}
+1 −1
Original line number Diff line number Diff line
@@ -738,7 +738,7 @@ static JNINativeMethod methods[] = {
                                        (void*) SkPaintGlue::getStringBounds },
    {"nativeGetCharArrayBounds", "(I[CIILandroid/graphics/Rect;)V",
                                    (void*) SkPaintGlue::getCharArrayBounds },
    {"setShadowLayer", "(FFFI)V", (void*)SkPaintGlue::setShadowLayer}
    {"nSetShadowLayer", "(FFFI)V", (void*)SkPaintGlue::setShadowLayer}
};

static jfieldID req_fieldID(jfieldID id) {
+7 −0
Original line number Diff line number Diff line
@@ -259,6 +259,7 @@ static void android_view_GLES20Canvas_resetModifiers(JNIEnv* env, jobject canvas
        OpenGLRenderer* renderer) {
    renderer->resetShader();
    renderer->resetColorFilter();
    renderer->resetShadow();
}

static void android_view_GLES20Canvas_setupShader(JNIEnv* env, jobject canvas,
@@ -271,6 +272,11 @@ static void android_view_GLES20Canvas_setupColorFilter(JNIEnv* env, jobject canv
    renderer->setupColorFilter(filter);
}

static void android_view_GLES20Canvas_setupShadow(JNIEnv* env, jobject canvas,
        OpenGLRenderer* renderer, jfloat radius, jfloat dx, jfloat dy, jint color) {
    renderer->setupShadow(radius, dx, dy, color);
}

// ----------------------------------------------------------------------------
// Text
// ----------------------------------------------------------------------------
@@ -402,6 +408,7 @@ static JNINativeMethod gMethods[] = {
    { "nResetModifiers",    "(I)V",            (void*) android_view_GLES20Canvas_resetModifiers },
    { "nSetupShader",       "(II)V",           (void*) android_view_GLES20Canvas_setupShader },
    { "nSetupColorFilter",  "(II)V",           (void*) android_view_GLES20Canvas_setupColorFilter },
    { "nSetupShadow",       "(IFFFI)V",        (void*) android_view_GLES20Canvas_setupShadow },

    { "nDrawText",          "(I[CIIFFII)V",    (void*) android_view_GLES20Canvas_drawTextArray },
    { "nDrawText",          "(ILjava/lang/String;IIFFII)V",
+34 −2
Original line number Diff line number Diff line
@@ -43,6 +43,28 @@ public class Paint {
    private boolean     mHasCompatScaling;
    private float       mCompatScaling;
    private float       mInvCompatScaling;

    /**
     * @hide
     */
    public boolean hasShadow;
    /**
     * @hide
     */
    public float shadowDx;
    /**
     * @hide
     */
    public float shadowDy;
    /**
     * @hide
     */
    public float shadowRadius;
    /**
     * @hide
     */
    public int shadowColor;

    /**
     * @hide
     */
@@ -935,13 +957,23 @@ public class Paint {
     * offset and color, and blur radius. If radius is 0, then the shadow
     * layer is removed.
     */
    public native void setShadowLayer(float radius, float dx, float dy, int color);
    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);
    }
    
    private native void nSetShadowLayer(float radius, float dx, float dy, int color);

    /**
     * Clear the shadow layer.
     */
    public void clearShadowLayer() {
        setShadowLayer(0, 0, 0, 0);
        hasShadow = false;
        nSetShadowLayer(0, 0, 0, 0);
    }

    /**
Loading