From 58945975b256739fdfe78435d7846d1e2fd29da1 Mon Sep 17 00:00:00 2001 From: Chris Craik Date: Tue, 24 Jun 2014 12:19:00 -0700 Subject: [PATCH] Outline support in DrawableContainer and LayerDrawable bug:14445484 Change-Id: I26a45b0115b976d0dbcc351a208dc0956bc52e96 --- .../android/graphics/drawable/DrawableContainer.java | 10 ++++++++++ .../android/graphics/drawable/LayerDrawable.java | 12 ++++++++++++ 2 files changed, 22 insertions(+) diff --git a/graphics/java/android/graphics/drawable/DrawableContainer.java b/graphics/java/android/graphics/drawable/DrawableContainer.java index 38b8aafe824dc..ed44cde4d632b 100644 --- a/graphics/java/android/graphics/drawable/DrawableContainer.java +++ b/graphics/java/android/graphics/drawable/DrawableContainer.java @@ -16,12 +16,14 @@ package android.graphics.drawable; +import android.annotation.NonNull; import android.content.res.ColorStateList; import android.content.res.Resources; import android.content.res.Resources.Theme; import android.graphics.Canvas; import android.graphics.ColorFilter; import android.graphics.Insets; +import android.graphics.Outline; import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.PorterDuff.Mode; @@ -122,6 +124,14 @@ public class DrawableContainer extends Drawable implements Drawable.Callback { return Insets.NONE; } + @Override + public boolean getOutline(@NonNull Outline outline) { + if (mCurrDrawable != null) { + return mCurrDrawable.getOutline(outline); + } + return false; + } + @Override public void setAlpha(int alpha) { if (!mHasAlpha || mAlpha != alpha) { diff --git a/graphics/java/android/graphics/drawable/LayerDrawable.java b/graphics/java/android/graphics/drawable/LayerDrawable.java index 5cea7c9263041..2f223927c5c77 100644 --- a/graphics/java/android/graphics/drawable/LayerDrawable.java +++ b/graphics/java/android/graphics/drawable/LayerDrawable.java @@ -16,12 +16,14 @@ package android.graphics.drawable; +import android.annotation.NonNull; import android.content.res.ColorStateList; import android.content.res.Resources; import android.content.res.Resources.Theme; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.ColorFilter; +import android.graphics.Outline; import android.graphics.PixelFormat; import android.graphics.PorterDuff.Mode; import android.graphics.Rect; @@ -563,6 +565,16 @@ public class LayerDrawable extends Drawable implements Drawable.Callback { } } + /** + * Builds an Outline from the first child Drawable, if present. + */ + @Override + public boolean getOutline(@NonNull Outline outline) { + if (mLayerState.mNum < 1) return false; + final Drawable firstChild = mLayerState.mChildren[0].mDrawable; + return firstChild.getOutline(outline); + } + @Override public void setHotspot(float x, float y) { final ChildDrawable[] array = mLayerState.mChildren;