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

Commit 4d1c1538 authored by Chris Craik's avatar Chris Craik
Browse files

Add floats-only drawRoundRect to Canvas

Change-Id: Ib0033a2d2486a808a44984ec4adf7fef76d9ea17
parent 717f39c7
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -9709,6 +9709,7 @@ package android.graphics {
    method public void drawRect(android.graphics.Rect, android.graphics.Paint);
    method public void drawRect(android.graphics.Rect, android.graphics.Paint);
    method public void drawRect(float, float, float, float, android.graphics.Paint);
    method public void drawRect(float, float, float, float, android.graphics.Paint);
    method public void drawRoundRect(android.graphics.RectF, float, float, android.graphics.Paint);
    method public void drawRoundRect(android.graphics.RectF, float, float, android.graphics.Paint);
    method public void drawRoundRect(float, float, float, float, float, float, android.graphics.Paint);
    method public void drawText(char[], int, int, float, float, android.graphics.Paint);
    method public void drawText(char[], int, int, float, float, android.graphics.Paint);
    method public void drawText(java.lang.String, float, float, android.graphics.Paint);
    method public void drawText(java.lang.String, float, float, android.graphics.Paint);
    method public void drawText(java.lang.String, int, int, float, float, android.graphics.Paint);
    method public void drawText(java.lang.String, int, int, float, float, android.graphics.Paint);
+3 −3
Original line number Original line Diff line number Diff line
@@ -1117,11 +1117,11 @@ class GLES20Canvas extends HardwareCanvas {
    }
    }


    @Override
    @Override
    public void drawRoundRect(RectF rect, float rx, float ry, Paint paint) {
    public void drawRoundRect(float left, float top, float right, float bottom, float rx, float ry,
            Paint paint) {
        int modifiers = setupModifiers(paint, MODIFIER_SHADER);
        int modifiers = setupModifiers(paint, MODIFIER_SHADER);
        try {
        try {
            nDrawRoundRect(mRenderer, rect.left, rect.top, rect.right, rect.bottom,
            nDrawRoundRect(mRenderer, left, top, right, bottom, rx, ry, paint.mNativePaint);
                    rx, ry, paint.mNativePaint);
        } finally {
        } finally {
            if (modifiers != MODIFIER_NONE) nResetModifiers(mRenderer, modifiers);
            if (modifiers != MODIFIER_NONE) nResetModifiers(mRenderer, modifiers);
        }
        }
+4 −5
Original line number Original line Diff line number Diff line
@@ -509,12 +509,11 @@ public:
    }
    }


    static void drawRoundRect(JNIEnv* env, jobject, jlong canvasHandle,
    static void drawRoundRect(JNIEnv* env, jobject, jlong canvasHandle,
                              jobject jrect, jfloat rx, jfloat ry,
            jfloat left, jfloat top, jfloat right, jfloat bottom, jfloat rx, jfloat ry,
            jlong paintHandle) {
            jlong paintHandle) {
        SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
        SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
        SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
        SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle);
        SkRect rect;
        SkRect rect = SkRect::MakeLTRB(left, top, right, bottom);
        GraphicsJNI::jrectf_to_rect(env, jrect, &rect);
        canvas->drawRoundRect(rect, rx, ry, *paint);
        canvas->drawRoundRect(rect, rx, ry, *paint);
    }
    }


@@ -1176,7 +1175,7 @@ static JNINativeMethod gCanvasMethods[] = {
    {"native_drawCircle","(JFFFJ)V", (void*) SkCanvasGlue::drawCircle},
    {"native_drawCircle","(JFFFJ)V", (void*) SkCanvasGlue::drawCircle},
    {"native_drawArc","(JLandroid/graphics/RectF;FFZJ)V",
    {"native_drawArc","(JLandroid/graphics/RectF;FFZJ)V",
        (void*) SkCanvasGlue::drawArc},
        (void*) SkCanvasGlue::drawArc},
    {"native_drawRoundRect","(JLandroid/graphics/RectF;FFJ)V",
    {"native_drawRoundRect","(JFFFFFFJ)V",
        (void*) SkCanvasGlue::drawRoundRect},
        (void*) SkCanvasGlue::drawRoundRect},
    {"native_drawPath","(JJJ)V", (void*) SkCanvasGlue::drawPath},
    {"native_drawPath","(JJJ)V", (void*) SkCanvasGlue::drawPath},
    {"native_drawBitmap","(JJFFJIII)V",
    {"native_drawBitmap","(JJFFJIII)V",
+16 −7
Original line number Original line Diff line number Diff line
@@ -1075,11 +1075,20 @@ public class Canvas {
     * @param paint The paint used to draw the roundRect
     * @param paint The paint used to draw the roundRect
     */
     */
    public void drawRoundRect(RectF rect, float rx, float ry, Paint paint) {
    public void drawRoundRect(RectF rect, float rx, float ry, Paint paint) {
        if (rect == null) {
        drawRoundRect(rect.left, rect.top, rect.right, rect.bottom, rx, ry, paint);
            throw new NullPointerException();
    }
    }
        native_drawRoundRect(mNativeCanvas, rect, rx, ry,

                             paint.mNativePaint);
    /**
     * Draw the specified round-rect using the specified paint. The roundrect
     * will be filled or framed based on the Style in the paint.
     *
     * @param rx    The x-radius of the oval used to round the corners
     * @param ry    The y-radius of the oval used to round the corners
     * @param paint The paint used to draw the roundRect
     */
    public void drawRoundRect(float left, float top, float right, float bottom, float rx, float ry,
            Paint paint) {
        native_drawRoundRect(mNativeCanvas, left, top, right, bottom, rx, ry, paint.mNativePaint);
    }
    }


    /**
    /**
@@ -1816,8 +1825,8 @@ public class Canvas {
                                              boolean useCenter,
                                              boolean useCenter,
                                              long nativePaint);
                                              long nativePaint);
    private static native void native_drawRoundRect(long nativeCanvas,
    private static native void native_drawRoundRect(long nativeCanvas,
                                                    RectF rect, float rx,
            float left, float top, float right, float bottom,
                                                    float ry, long nativePaint);
            float rx, float ry, long nativePaint);
    private static native void native_drawPath(long nativeCanvas,
    private static native void native_drawPath(long nativeCanvas,
                                               long nativePath,
                                               long nativePath,
                                               long nativePaint);
                                               long nativePaint);