From a98c21a662040a8afa75a35bd882c292f7ed8414 Mon Sep 17 00:00:00 2001 From: Prashant Malani Date: Tue, 10 Feb 2015 19:09:39 -0800 Subject: [PATCH] Make circular mask thickness configurable Obtain the circular mask thickness as a dimension so that it can be customized per-device. Change-Id: Ied88f91424c5cf4f25dd1e78cf22f0fd7ea7b0a4 Signed-off-by: Prashant Malani --- core/res/res/values/dimens.xml | 4 ++++ core/res/res/values/symbols.xml | 1 + .../java/com/android/server/wm/CircularDisplayMask.java | 8 +++++--- .../java/com/android/server/wm/WindowManagerService.java | 4 +++- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml index 30ea7c1e18c49..181bdf249b409 100644 --- a/core/res/res/values/dimens.xml +++ b/core/res/res/values/dimens.xml @@ -414,6 +414,10 @@ to 0 --> 0px + + 1px + 3dp 12dp 28dp diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 464e4d3be68f2..e7bd90afc1bf5 100755 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -420,6 +420,7 @@ + diff --git a/services/core/java/com/android/server/wm/CircularDisplayMask.java b/services/core/java/com/android/server/wm/CircularDisplayMask.java index 9fdfc47dfede8..7c2da2dc292e5 100644 --- a/services/core/java/com/android/server/wm/CircularDisplayMask.java +++ b/services/core/java/com/android/server/wm/CircularDisplayMask.java @@ -50,9 +50,10 @@ class CircularDisplayMask { private int mRotation; private boolean mVisible; private boolean mDimensionsUnequal = false; + private int mMaskThickness; public CircularDisplayMask(Display display, SurfaceSession session, int zOrder, - int screenOffset) { + int screenOffset, int maskThickness) { mScreenSize = new Point(); display.getSize(mScreenSize); if (mScreenSize.x != mScreenSize.y) { @@ -84,6 +85,7 @@ class CircularDisplayMask { mPaint.setAntiAlias(true); mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); mScreenOffset = screenOffset; + mMaskThickness = maskThickness; } private void drawIfNeeded() { @@ -121,8 +123,8 @@ class CircularDisplayMask { int circleRadius = mScreenSize.x / 2; 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); + // The radius is reduced by mMaskThickness to provide an anti aliasing effect on the display edges. + c.drawCircle(circleRadius, circleRadius, circleRadius - mMaskThickness, mPaint); mSurface.unlockCanvasAndPost(c); } diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 5ca9ef72529c6..0cda6fd3cf46a 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -5944,13 +5944,15 @@ public class WindowManagerService extends IWindowManager.Stub if (mCircularDisplayMask == null) { int screenOffset = mContext.getResources().getDimensionPixelSize( com.android.internal.R.dimen.circular_display_mask_offset); + int maskThickness = mContext.getResources().getDimensionPixelSize( + com.android.internal.R.dimen.circular_display_mask_thickness); mCircularDisplayMask = new CircularDisplayMask( getDefaultDisplayContentLocked().getDisplay(), mFxSession, mPolicy.windowTypeToLayerLw( WindowManager.LayoutParams.TYPE_POINTER) - * TYPE_LAYER_MULTIPLIER + 10, screenOffset); + * TYPE_LAYER_MULTIPLIER + 10, screenOffset, maskThickness); } mCircularDisplayMask.setVisibility(true); } else if (mCircularDisplayMask != null) {