diff options
author | Chris Craik <ccraik@google.com> | 2014-09-05 14:08:08 -0700 |
---|---|---|
committer | Chris Craik <ccraik@google.com> | 2014-09-05 15:23:08 -0700 |
commit | 5c75c52e048a01c23b18f4e31ae624b5fe43e23c (patch) | |
tree | e507692fd4fd667356cf7c22cecc64733dcb3969 | |
parent | f634c08b57256bf236c00ce1e917f6299d34e8a1 (diff) |
Add shadow/clipping properties to HierarchyViewer
bug:15777980
Change-Id: Ic3d24326f585d2d2b9889486f0ed322eb98b5af8
-rw-r--r-- | core/java/android/view/RenderNode.java | 5 | ||||
-rw-r--r-- | core/java/android/view/View.java | 12 | ||||
-rw-r--r-- | core/java/android/view/ViewGroup.java | 2 | ||||
-rw-r--r-- | core/jni/android_view_RenderNode.cpp | 7 | ||||
-rw-r--r-- | libs/hwui/RenderProperties.h | 4 |
5 files changed, 30 insertions, 0 deletions
diff --git a/core/java/android/view/RenderNode.java b/core/java/android/view/RenderNode.java index 9dc9766abedf..47f72a87b914 100644 --- a/core/java/android/view/RenderNode.java +++ b/core/java/android/view/RenderNode.java @@ -367,6 +367,10 @@ public class RenderNode { throw new IllegalArgumentException("Unrecognized outline?"); } + public boolean hasShadow() { + return nHasShadow(mNativeRenderNode); + } + /** * Enables or disables clipping to the outline. * @@ -861,6 +865,7 @@ public class RenderNode { float alpha); private static native boolean nSetOutlineEmpty(long renderNode); private static native boolean nSetOutlineNone(long renderNode); + private static native boolean nHasShadow(long renderNode); private static native boolean nSetClipToOutline(long renderNode, boolean clipToOutline); private static native boolean nSetRevealClip(long renderNode, boolean shouldClip, float x, float y, float radius); diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 92ad4e83349e..770e78cd788c 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -10224,6 +10224,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * * @return true if the content in this view might overlap, false otherwise. */ + @ViewDebug.ExportedProperty(category = "drawing") public boolean hasOverlappingRendering() { return true; } @@ -10926,6 +10927,17 @@ public class View implements Drawable.Callback, KeyEvent.Callback, invalidateViewProperty(false, false); } + /** + * HierarchyViewer only + * + * @hide + */ + @ViewDebug.ExportedProperty(category = "drawing") + public boolean hasShadow() { + return mRenderNode.hasShadow(); + } + + /** @hide */ public void setRevealClip(boolean shouldClip, float x, float y, float radius) { mRenderNode.setRevealClip(shouldClip, x, y, radius); diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index 974fe4e0c89f..ac1b6a97f30f 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -3301,6 +3301,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager * @return True if the group's children will be clipped to their bounds, * false otherwise. */ + @ViewDebug.ExportedProperty(category = "drawing") public boolean getClipChildren() { return ((mGroupFlags & FLAG_CLIP_CHILDREN) != 0); } @@ -3349,6 +3350,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager * * @attr ref android.R.styleable#ViewGroup_clipToPadding */ + @ViewDebug.ExportedProperty(category = "drawing") public boolean getClipToPadding() { return hasBooleanFlag(FLAG_CLIP_TO_PADDING); } diff --git a/core/jni/android_view_RenderNode.cpp b/core/jni/android_view_RenderNode.cpp index 949f4ff2066f..050037ebada5 100644 --- a/core/jni/android_view_RenderNode.cpp +++ b/core/jni/android_view_RenderNode.cpp @@ -173,6 +173,12 @@ static jboolean android_view_RenderNode_setOutlineNone(JNIEnv* env, return true; } +static jboolean android_view_RenderNode_hasShadow(JNIEnv* env, + jobject clazz, jlong renderNodePtr) { + RenderNode* renderNode = reinterpret_cast<RenderNode*>(renderNodePtr); + return renderNode->stagingProperties().hasShadow(); +} + static jboolean android_view_RenderNode_setClipToOutline(JNIEnv* env, jobject clazz, jlong renderNodePtr, jboolean clipToOutline) { RenderNode* renderNode = reinterpret_cast<RenderNode*>(renderNodePtr); @@ -491,6 +497,7 @@ static JNINativeMethod gMethods[] = { { "nSetOutlineConvexPath", "(JJF)Z", (void*) android_view_RenderNode_setOutlineConvexPath }, { "nSetOutlineEmpty", "(J)Z", (void*) android_view_RenderNode_setOutlineEmpty }, { "nSetOutlineNone", "(J)Z", (void*) android_view_RenderNode_setOutlineNone }, + { "nHasShadow", "(J)Z", (void*) android_view_RenderNode_hasShadow }, { "nSetClipToOutline", "(JZ)Z", (void*) android_view_RenderNode_setClipToOutline }, { "nSetRevealClip", "(JZFFF)Z", (void*) android_view_RenderNode_setRevealClip }, diff --git a/libs/hwui/RenderProperties.h b/libs/hwui/RenderProperties.h index 0c8d07f83e28..46eeb6afa444 100644 --- a/libs/hwui/RenderProperties.h +++ b/libs/hwui/RenderProperties.h @@ -569,6 +569,10 @@ public: return getClipToBounds() && (getZ() <= 0 || getOutline().isEmpty()); } + bool hasShadow() const { + return getZ() >= 0.0f && getOutline().getPath() != NULL; + } + private: // Rendering properties struct PrimitiveFields { |