From adaa12cd9e421edf34e36de8cfacc3e3c334bb64 Mon Sep 17 00:00:00 2001 From: Xavier Ducrohet Date: Tue, 8 Mar 2011 11:50:21 -0800 Subject: LayoutLib: fix Capabilities and getDimensionPixelSize Commented out a Capability that is not in ADT 10. BridgeTypedArray.getDimensionPixelSize shouldn't call getDimension since most of the code is duplicated, and it prevents use from properly detecting malformed attribute values. Change-Id: I005b17061590dc0668729af16e896fad815f1973 --- .../bridge/src/android/graphics/Path_Delegate.java | 2 +- .../src/com/android/layoutlib/bridge/Bridge.java | 2 +- .../layoutlib/bridge/android/BridgeTypedArray.java | 31 +++++++++++++++------- 3 files changed, 23 insertions(+), 12 deletions(-) (limited to 'tools') diff --git a/tools/layoutlib/bridge/src/android/graphics/Path_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/Path_Delegate.java index 85bc785..db14e53 100644 --- a/tools/layoutlib/bridge/src/android/graphics/Path_Delegate.java +++ b/tools/layoutlib/bridge/src/android/graphics/Path_Delegate.java @@ -393,7 +393,7 @@ public final class Path_Delegate { for (int i = 0 ; i < 3 ; i++) { if (radii[i * 2] != radii[(i + 1) * 2] || radii[i * 2 + 1] != radii[(i + 1) * 2 + 1]) { Bridge.getLog().fidelityWarning(LayoutLog.TAG_UNSUPPORTED, - "Different corner size is not support in Path.addRoundRect.", + "Different corner sizes are not supported in Path.addRoundRect.", null, null /*data*/); break; } diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java index acc7379..e6e9647 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java @@ -192,7 +192,7 @@ public final class Bridge extends com.android.ide.common.rendering.api.Bridge { Capability.UNBOUND_RENDERING, Capability.CUSTOM_BACKGROUND_COLOR, Capability.RENDER, - Capability.LAYOUT_ONLY, + //Capability.LAYOUT_ONLY, // disable to run on ADT 10.0 which doesn't include this. Capability.EMBEDDED_LAYOUT, Capability.VIEW_MANIPULATION, Capability.PLAY_ANIMATION, diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeTypedArray.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeTypedArray.java index 77c1789..138a455 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeTypedArray.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeTypedArray.java @@ -488,18 +488,29 @@ public final class BridgeTypedArray extends TypedArray { return defValue; } - float f = getDimension(index, defValue); - final int res = (int)(f+0.5f); - if (res != 0) return res; - if (f == 0) return 0; - if (f > 0) return 1; // this is to support ]0;1[ range (since >=1 is handled 2 lines above) - if (f < 0) { - // negative values are not allowed in pixel dimensions - Bridge.getLog().error(LayoutLog.TAG_BROKEN, - "Negative pixel dimension: " + s, - null, null /*data*/); + if (ResourceHelper.stringToFloat(s, mValue)) { + float f = mValue.getDimension(mBridgeResources.mMetrics); + + if (f < 0) { + // negative values are not allowed in pixel dimensions + Bridge.getLog().error(LayoutLog.TAG_BROKEN, + "Negative pixel dimension: " + s, + null, null /*data*/); + return defValue; + } + + if (f == 0) return 0; + if (f < 1) return 1; + + return (int)(f+0.5f); } + // looks like we were unable to resolve the dimension value + Bridge.getLog().warning(LayoutLog.TAG_RESOURCES_FORMAT, + String.format( + "\"%1$s\" in attribute \"%2$s\" is not a valid format.", + s, mNames[index]), null /*data*/); + return defValue; } -- cgit v1.1