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

Commit 7677d8f0 authored by Romain Guy's avatar Romain Guy
Browse files

Improve GLES20Canvas clip support

Remove UnsupportedOperationException
Add primitive support for clipPath/clipRegion
Add support for quickReject(Path, EdgeType)

Change-Id: Ie7a80df7f380f488710bac31103772a9eab21612
parent 01cc1d1e
Loading
Loading
Loading
Loading
+21 −6
Original line number Diff line number Diff line
@@ -61,6 +61,7 @@ class GLES20Canvas extends HardwareCanvas {
    private final float[] mLine = new float[4];
    
    private final Rect mClipBounds = new Rect();
    private final RectF mPathBounds = new RectF();

    private DrawFilter mFilter;

@@ -406,12 +407,18 @@ class GLES20Canvas extends HardwareCanvas {

    @Override
    public boolean clipPath(Path path) {
        throw new UnsupportedOperationException();
        // TODO: Implement
        path.computeBounds(mPathBounds, true);
        return nClipRect(mRenderer, mPathBounds.left, mPathBounds.top,
                mPathBounds.right, mPathBounds.bottom, Region.Op.INTERSECT.nativeInt);
    }

    @Override
    public boolean clipPath(Path path, Region.Op op) {
        throw new UnsupportedOperationException();
        // TODO: Implement
        path.computeBounds(mPathBounds, true);
        return nClipRect(mRenderer, mPathBounds.left, mPathBounds.top,
                mPathBounds.right, mPathBounds.bottom, op.nativeInt);
    }

    @Override
@@ -459,12 +466,18 @@ class GLES20Canvas extends HardwareCanvas {

    @Override
    public boolean clipRegion(Region region) {
        throw new UnsupportedOperationException();
        // TODO: Implement
        region.getBounds(mClipBounds);
        return nClipRect(mRenderer, mClipBounds.left, mClipBounds.top,
                mClipBounds.right, mClipBounds.bottom, Region.Op.INTERSECT.nativeInt);
    }

    @Override
    public boolean clipRegion(Region region, Region.Op op) {
        throw new UnsupportedOperationException();
        // TODO: Implement
        region.getBounds(mClipBounds);
        return nClipRect(mRenderer, mClipBounds.left, mClipBounds.top,
                mClipBounds.right, mClipBounds.bottom, op.nativeInt);
    }

    @Override
@@ -484,12 +497,14 @@ class GLES20Canvas extends HardwareCanvas {

    @Override
    public boolean quickReject(Path path, EdgeType type) {
        throw new UnsupportedOperationException();
        path.computeBounds(mPathBounds, true);
        return nQuickReject(mRenderer, mPathBounds.left, mPathBounds.top,
                mPathBounds.right, mPathBounds.bottom, type.nativeInt);
    }

    @Override
    public boolean quickReject(RectF rect, EdgeType type) {
        return quickReject(rect.left, rect.top, rect.right, rect.bottom, type);
        return nQuickReject(mRenderer, rect.left, rect.top, rect.right, rect.bottom, type.nativeInt);
    }

    ///////////////////////////////////////////////////////////////////////////