From ea481beda699165a7050ddcc37b10841d33ed9e6 Mon Sep 17 00:00:00 2001 From: Prashant Malani Date: Wed, 7 Jan 2015 18:30:27 -0800 Subject: [PATCH] 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 --- .../com/android/server/wm/CircularDisplayMask.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/wm/CircularDisplayMask.java b/services/core/java/com/android/server/wm/CircularDisplayMask.java index a7d41faecec47..9fdfc47dfede8 100644 --- a/services/core/java/com/android/server/wm/CircularDisplayMask.java +++ b/services/core/java/com/android/server/wm/CircularDisplayMask.java @@ -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); }