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

Commit cc11f15f authored by Leon Scroggins's avatar Leon Scroggins Committed by Leon Scroggins III
Browse files

Update to call new Skia APIs.

I816129d49c0118453222916f3c818eccac33663d merges a new version of
Skia that updates various APIs. Call the new ones.

SkBitmap::copyTo now takes an SkColorType instead of an
SkBitmap::Config, so do the conversion with
SkBitmapConfigToColorType or use the enum when it makes sense.

Call SkImageDecoder::decodeSubset instead of (deprecated)
SkImageDecoder::decodeRegion.

Override SkCanvas::ClipVisitor::clipRRect in ClipCopier.

In Canvas::clip calls, call SkCanvas::isClipEmpty(), which was
previously called inside the clip call, to determine the return value.

For various SkPaint effects, call the new factories (as the constructors
have been made protected).

Implement SkJavaOutputStream::bytesWritten(), overriding a new pure
virtual function on SkWStream.

Update Matrix calls to always return true (since SkMatrix calls no
longer return a value).

Depends on I816129d49c0118453222916f3c818eccac33663d (skia).

Change-Id: I5cdcea827ebff587df0bbddc0965e3e0fbf48002
parent 35dec443
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -329,7 +329,7 @@ static jobject Bitmap_copy(JNIEnv* env, jobject, jlong srcHandle,
    SkBitmap            result;
    SkBitmap            result;
    JavaPixelAllocator  allocator(env);
    JavaPixelAllocator  allocator(env);


    if (!src->copyTo(&result, dstConfig, &allocator)) {
    if (!src->copyTo(&result, SkBitmapConfigToColorType(dstConfig), &allocator)) {
        return NULL;
        return NULL;
    }
    }
    return GraphicsJNI::createBitmap(env, new SkBitmap(result), allocator.getStorageObj(),
    return GraphicsJNI::createBitmap(env, new SkBitmap(result), allocator.getStorageObj(),
+1 −1
Original line number Original line Diff line number Diff line
@@ -151,7 +151,7 @@ static SkColorType colorTypeForScaledOutput(SkColorType colorType) {
    switch (colorType) {
    switch (colorType) {
        case kUnknown_SkColorType:
        case kUnknown_SkColorType:
        case kIndex_8_SkColorType:
        case kIndex_8_SkColorType:
            return kPMColor_SkColorType;
            return kNative_8888_SkColorType;
        default:
        default:
            break;
            break;
    }
    }
+1 −1
Original line number Original line Diff line number Diff line
@@ -62,7 +62,7 @@ public:
    bool decodeRegion(SkBitmap* bitmap, const SkIRect& rect,
    bool decodeRegion(SkBitmap* bitmap, const SkIRect& rect,
                      SkBitmap::Config pref, int sampleSize) {
                      SkBitmap::Config pref, int sampleSize) {
        fDecoder->setSampleSize(sampleSize);
        fDecoder->setSampleSize(sampleSize);
        return fDecoder->decodeRegion(bitmap, rect, pref);
        return fDecoder->decodeSubset(bitmap, rect, pref);
    }
    }


    SkImageDecoder* getDecoder() const { return fDecoder; }
    SkImageDecoder* getDecoder() const { return fDecoder; }
+27 −17
Original line number Original line Diff line number Diff line
@@ -65,6 +65,9 @@ public:
    virtual void clipRect(const SkRect& rect, SkRegion::Op op, bool antialias) {
    virtual void clipRect(const SkRect& rect, SkRegion::Op op, bool antialias) {
        m_dstCanvas->clipRect(rect, op, antialias);
        m_dstCanvas->clipRect(rect, op, antialias);
    }
    }
    virtual void clipRRect(const SkRRect& rrect, SkRegion::Op op, bool antialias) {
        m_dstCanvas->clipRRect(rrect, op, antialias);
    }
    virtual void clipPath(const SkPath& path, SkRegion::Op op, bool antialias) {
    virtual void clipPath(const SkPath& path, SkRegion::Op op, bool antialias) {
        m_dstCanvas->clipPath(path, op, antialias);
        m_dstCanvas->clipPath(path, op, antialias);
    }
    }
@@ -73,6 +76,12 @@ private:
    SkCanvas* m_dstCanvas;
    SkCanvas* m_dstCanvas;
};
};


// Returns true if the SkCanvas's clip is non-empty.
static jboolean hasNonEmptyClip(const SkCanvas& canvas) {
    bool emptyClip = canvas.isClipEmpty();
    return emptyClip ? JNI_FALSE : JNI_TRUE;
}

class SkCanvasGlue {
class SkCanvasGlue {
public:
public:


@@ -281,8 +290,8 @@ public:
        r.set(SkFloatToScalar(left), SkFloatToScalar(top),
        r.set(SkFloatToScalar(left), SkFloatToScalar(top),
              SkFloatToScalar(right), SkFloatToScalar(bottom));
              SkFloatToScalar(right), SkFloatToScalar(bottom));
        SkCanvas* c = GraphicsJNI::getNativeCanvas(env, jcanvas);
        SkCanvas* c = GraphicsJNI::getNativeCanvas(env, jcanvas);
        bool result = c->clipRect(r);
        c->clipRect(r);
        return result ? JNI_TRUE : JNI_FALSE;
        return hasNonEmptyClip(*c);
    }
    }


    static jboolean clipRect_IIII(JNIEnv* env, jobject jcanvas, jint left,
    static jboolean clipRect_IIII(JNIEnv* env, jobject jcanvas, jint left,
@@ -291,8 +300,9 @@ public:
        SkRect  r;
        SkRect  r;
        r.set(SkIntToScalar(left), SkIntToScalar(top),
        r.set(SkIntToScalar(left), SkIntToScalar(top),
              SkIntToScalar(right), SkIntToScalar(bottom));
              SkIntToScalar(right), SkIntToScalar(bottom));
        bool result = GraphicsJNI::getNativeCanvas(env, jcanvas)->clipRect(r);
        SkCanvas* c = GraphicsJNI::getNativeCanvas(env, jcanvas);
        return result ? JNI_TRUE : JNI_FALSE;
        c->clipRect(r);
        return hasNonEmptyClip(*c);
    }
    }


    static jboolean clipRect_RectF(JNIEnv* env, jobject jcanvas, jobject rectf) {
    static jboolean clipRect_RectF(JNIEnv* env, jobject jcanvas, jobject rectf) {
@@ -300,8 +310,8 @@ public:
        NPE_CHECK_RETURN_ZERO(env, rectf);
        NPE_CHECK_RETURN_ZERO(env, rectf);
        SkCanvas* c = GraphicsJNI::getNativeCanvas(env, jcanvas);
        SkCanvas* c = GraphicsJNI::getNativeCanvas(env, jcanvas);
        SkRect tmp;
        SkRect tmp;
        bool result = c->clipRect(*GraphicsJNI::jrectf_to_rect(env, rectf, &tmp));
        c->clipRect(*GraphicsJNI::jrectf_to_rect(env, rectf, &tmp));
        return result ? JNI_TRUE : JNI_FALSE;
        return hasNonEmptyClip(*c);
    }
    }


    static jboolean clipRect_Rect(JNIEnv* env, jobject jcanvas, jobject rect) {
    static jboolean clipRect_Rect(JNIEnv* env, jobject jcanvas, jobject rect) {
@@ -309,8 +319,8 @@ public:
        NPE_CHECK_RETURN_ZERO(env, rect);
        NPE_CHECK_RETURN_ZERO(env, rect);
        SkCanvas* c = GraphicsJNI::getNativeCanvas(env, jcanvas);
        SkCanvas* c = GraphicsJNI::getNativeCanvas(env, jcanvas);
        SkRect tmp;
        SkRect tmp;
        bool result = c->clipRect(*GraphicsJNI::jrect_to_rect(env, rect, &tmp));
        c->clipRect(*GraphicsJNI::jrect_to_rect(env, rect, &tmp));
        return result ? JNI_TRUE : JNI_FALSE;
        return hasNonEmptyClip(*c);


    }
    }


@@ -321,25 +331,24 @@ public:
        SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
        SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
        rect.set(SkFloatToScalar(left), SkFloatToScalar(top),
        rect.set(SkFloatToScalar(left), SkFloatToScalar(top),
                 SkFloatToScalar(right), SkFloatToScalar(bottom));
                 SkFloatToScalar(right), SkFloatToScalar(bottom));
        bool result = canvas->clipRect(rect, static_cast<SkRegion::Op>(op));
        canvas->clipRect(rect, static_cast<SkRegion::Op>(op));
        return result ? JNI_TRUE : JNI_FALSE;
        return hasNonEmptyClip(*canvas);

    }
    }


    static jboolean clipPath(JNIEnv* env, jobject, jlong canvasHandle,
    static jboolean clipPath(JNIEnv* env, jobject, jlong canvasHandle,
                             jlong pathHandle, jint op) {
                             jlong pathHandle, jint op) {
        SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
        SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
        bool result = canvas->clipPath(*reinterpret_cast<SkPath*>(pathHandle),
        canvas->clipPath(*reinterpret_cast<SkPath*>(pathHandle),
                static_cast<SkRegion::Op>(op));
                static_cast<SkRegion::Op>(op));
        return result ? JNI_TRUE : JNI_FALSE;
        return hasNonEmptyClip(*canvas);
    }
    }


    static jboolean clipRegion(JNIEnv* env, jobject, jlong canvasHandle,
    static jboolean clipRegion(JNIEnv* env, jobject, jlong canvasHandle,
                               jlong deviceRgnHandle, jint op) {
                               jlong deviceRgnHandle, jint op) {
        SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
        SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
        SkRegion* deviceRgn = reinterpret_cast<SkRegion*>(deviceRgnHandle);
        SkRegion* deviceRgn = reinterpret_cast<SkRegion*>(deviceRgnHandle);
        bool result = canvas->clipRegion(*deviceRgn, static_cast<SkRegion::Op>(op));
        canvas->clipRegion(*deviceRgn, static_cast<SkRegion::Op>(op));
        return result ? JNI_TRUE : JNI_FALSE;
        return hasNonEmptyClip(*canvas);
    }
    }


    static void setDrawFilter(JNIEnv* env, jobject, jlong canvasHandle,
    static void setDrawFilter(JNIEnv* env, jobject, jlong canvasHandle,
@@ -353,7 +362,8 @@ public:
        SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
        SkCanvas* canvas = reinterpret_cast<SkCanvas*>(canvasHandle);
        SkRect rect_;
        SkRect rect_;
        GraphicsJNI::jrectf_to_rect(env, rect, &rect_);
        GraphicsJNI::jrectf_to_rect(env, rect, &rect_);
        return canvas->quickReject(rect_);
        bool result = canvas->quickReject(rect_);
        return result ? JNI_TRUE : JNI_FALSE;
    }
    }


    static jboolean quickReject__Path(JNIEnv* env, jobject, jlong canvasHandle,
    static jboolean quickReject__Path(JNIEnv* env, jobject, jlong canvasHandle,
+1 −1
Original line number Original line Diff line number Diff line
@@ -51,7 +51,7 @@ public:
        const float* src = autoArray.ptr();
        const float* src = autoArray.ptr();


#ifdef SK_SCALAR_IS_FLOAT
#ifdef SK_SCALAR_IS_FLOAT
        return reinterpret_cast<jlong>(new SkColorMatrixFilter(src));
        return reinterpret_cast<jlong>(SkColorMatrixFilter::Create(src));
#else
#else
        SkASSERT(false);
        SkASSERT(false);
#endif
#endif
Loading