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

Commit d182046e authored by Romain Guy's avatar Romain Guy Committed by Android (Google) Code Review
Browse files

Merge "Add support for ovals and stroked rectangles." into honeycomb

parents 9dbf1351 c1cd9ba3
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -525,7 +525,7 @@ class GLES20Canvas extends HardwareCanvas {
    @Override
    public void drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter,
            Paint paint) {
        throw new UnsupportedOperationException();
        // TODO: Implement
    }

    @Override
@@ -705,9 +705,14 @@ class GLES20Canvas extends HardwareCanvas {

    @Override
    public void drawOval(RectF oval, Paint paint) {
        throw new UnsupportedOperationException();
        boolean hasModifier = setupModifiers(paint);
        nDrawOval(mRenderer, oval.left, oval.top, oval.right, oval.bottom, paint.mNativePaint);
        if (hasModifier) nResetModifiers(mRenderer); 
    }

    private native void nDrawOval(int renderer, float left, float top, float right, float bottom,
            int paint);

    @Override
    public void drawPaint(Paint paint) {
        final Rect r = mClipBounds;
@@ -765,12 +770,12 @@ class GLES20Canvas extends HardwareCanvas {

    @Override
    public void drawPosText(char[] text, int index, int count, float[] pos, Paint paint) {
        throw new UnsupportedOperationException();
        // TODO: Implement
    }

    @Override
    public void drawPosText(String text, float[] pos, Paint paint) {
        throw new UnsupportedOperationException();
        // TODO: Implement
    }

    @Override
@@ -879,12 +884,12 @@ class GLES20Canvas extends HardwareCanvas {
    @Override
    public void drawTextOnPath(char[] text, int index, int count, Path path, float hOffset,
            float vOffset, Paint paint) {
        throw new UnsupportedOperationException();
        // TODO: Implement
    }

    @Override
    public void drawTextOnPath(String text, Path path, float hOffset, float vOffset, Paint paint) {
        throw new UnsupportedOperationException();
        // TODO: Implement
    }

    @Override
+7 −0
Original line number Diff line number Diff line
@@ -326,6 +326,12 @@ static void android_view_GLES20Canvas_drawCircle(JNIEnv* env, jobject canvas,
    renderer->drawCircle(x, y, radius, paint);
}

static void android_view_GLES20Canvas_drawOval(JNIEnv* env, jobject canvas,
        OpenGLRenderer* renderer, jfloat left, jfloat top, jfloat right, jfloat bottom,
        SkPaint* paint) {
    renderer->drawOval(left, top, right, bottom, paint);
}

static void android_view_GLES20Canvas_drawRects(JNIEnv* env, jobject canvas,
        OpenGLRenderer* renderer, SkRegion* region, SkPaint* paint) {
    SkRegion::Iterator it(*region);
@@ -602,6 +608,7 @@ static JNINativeMethod gMethods[] = {
    { "nDrawRects",         "(III)V",          (void*) android_view_GLES20Canvas_drawRects },
    { "nDrawRoundRect",     "(IFFFFFFI)V",     (void*) android_view_GLES20Canvas_drawRoundRect },
    { "nDrawCircle",        "(IFFFI)V",        (void*) android_view_GLES20Canvas_drawCircle },
    { "nDrawOval",          "(IFFFFI)V",       (void*) android_view_GLES20Canvas_drawOval },
    { "nDrawPath",          "(III)V",          (void*) android_view_GLES20Canvas_drawPath },
    { "nDrawLines",         "(I[FIII)V",       (void*) android_view_GLES20Canvas_drawLines },

+2 −0
Original line number Diff line number Diff line
@@ -162,6 +162,8 @@ public:
    PathCache pathCache;
    RoundRectShapeCache roundRectShapeCache;
    CircleShapeCache circleShapeCache;
    OvalShapeCache ovalShapeCache;
    RectShapeCache rectShapeCache;
    PatchCache patchCache;
    TextDropShadowCache dropShadowCache;
    FboCache fboCache;
+12 −0
Original line number Diff line number Diff line
@@ -107,6 +107,7 @@ const char* DisplayList::OP_NAMES[] = {
    "DrawRect",
    "DrawRoundRect",
    "DrawCircle",
    "DrawOval",
    "DrawPath",
    "DrawLines",
    "DrawText",
@@ -358,6 +359,10 @@ void DisplayList::replay(OpenGLRenderer& renderer, uint32_t level) {
                renderer.drawCircle(getFloat(), getFloat(), getFloat(), getPaint());
            }
            break;
            case DrawOval: {
                renderer.drawOval(getFloat(), getFloat(), getFloat(), getFloat(), getPaint());
            }
            break;
            case DrawPath: {
                renderer.drawPath(getPath(), getPaint());
            }
@@ -663,6 +668,13 @@ void DisplayListRenderer::drawCircle(float x, float y, float radius, SkPaint* pa
    addPaint(paint);
}

void DisplayListRenderer::drawOval(float left, float top, float right, float bottom,
        SkPaint* paint) {
    addOp(DisplayList::DrawOval);
    addBounds(left, top, right, bottom);
    addPaint(paint);
}

void DisplayListRenderer::drawPath(SkPath* path, SkPaint* paint) {
    addOp(DisplayList::DrawPath);
    addPath(path);
+2 −0
Original line number Diff line number Diff line
@@ -113,6 +113,7 @@ public:
        DrawRect,
        DrawRoundRect,
        DrawCircle,
        DrawOval,
        DrawPath,
        DrawLines,
        DrawText,
@@ -279,6 +280,7 @@ public:
    void drawRoundRect(float left, float top, float right, float bottom,
            float rx, float ry, SkPaint* paint);
    void drawCircle(float x, float y, float radius, SkPaint* paint);
    void drawOval(float left, float top, float right, float bottom, SkPaint* paint);
    void drawPath(SkPath* path, SkPaint* paint);
    void drawLines(float* points, int count, SkPaint* paint);
    void drawText(const char* text, int bytesCount, int count, float x, float y, SkPaint* paint);
Loading