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

Commit ea481bed authored by Prashant Malani's avatar Prashant Malani
Browse files

Improve the circularMask for round displays

The mask was earlier drawn as a thin ring at the display periphery.
This had undesirable effects when screenshots were taken, as the ring
was seen, as well as display content beyond it.

This patch modifies the mask to be a black canvas with portions erased
to improve the screenshot image.

Bug: 18772987
Change-Id: I25ef6387879613354308e015446fe325ed8c4515
parent f61bc8a2
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.Point;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.view.Display;
import android.view.Surface;
@@ -35,7 +36,6 @@ import android.util.Slog;
class CircularDisplayMask {
    private static final String TAG = "CircularDisplayMask";

    private static final int STROKE_WIDTH = 2;
    // size of the chin
    private int mScreenOffset = 0;
    // Display dimensions
@@ -82,9 +82,7 @@ class CircularDisplayMask {
        mDrawNeeded = true;
        mPaint = new Paint();
        mPaint.setAntiAlias(true);
        mPaint.setStyle(Paint.Style.STROKE);
        mPaint.setColor(Color.BLACK);
        mPaint.setStrokeWidth(STROKE_WIDTH);
        mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
        mScreenOffset = screenOffset;
    }

@@ -104,7 +102,6 @@ class CircularDisplayMask {
        if (c == null) {
            return;
        }
        c.drawColor(Color.TRANSPARENT, PorterDuff.Mode.SRC);
        switch (mRotation) {
        case Surface.ROTATION_0:
        case Surface.ROTATION_90:
@@ -122,7 +119,10 @@ class CircularDisplayMask {
        }

        int circleRadius = mScreenSize.x / 2;
        c.drawCircle(circleRadius, circleRadius, circleRadius, mPaint);
        c.drawColor(Color.BLACK);

        // The radius is reduced by 1 to provide an anti aliasing effect on the display edges.
        c.drawCircle(circleRadius, circleRadius, circleRadius - 1, mPaint);
        mSurface.unlockCanvasAndPost(c);
    }