summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Diego Perez <diegoperez@google.com> 2016-03-03 11:52:25 +0000
committer Diego Perez <diegoperez@google.com> 2016-03-03 15:06:46 +0000
commit1b338cda4ed044691f0fe8ba59950bfc309d911d (patch)
tree39a38c62dabbe21df832f99661b490bea00bd2e7
parent34bfcf1fdfe26d510cd6a13ce77113a0b18b9ea4 (diff)
Add missing translate if the drawable top is not 0,0
If the vector drawable coordinates are not 0,0 we need to translate the canvas to that position. Change-Id: I3a829c427ec98061da3295e3cba8655f693d390c
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/drawable/VectorDrawable_Delegate.java37
1 files changed, 14 insertions, 23 deletions
diff --git a/tools/layoutlib/bridge/src/android/graphics/drawable/VectorDrawable_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/drawable/VectorDrawable_Delegate.java
index 22d15e148ba4..eef823565dd4 100644
--- a/tools/layoutlib/bridge/src/android/graphics/drawable/VectorDrawable_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/drawable/VectorDrawable_Delegate.java
@@ -16,7 +16,6 @@
package android.graphics.drawable;
-import com.android.internal.R;
import com.android.layoutlib.bridge.impl.DelegateManager;
import com.android.tools.layoutlib.annotations.LayoutlibDelegate;
@@ -136,7 +135,21 @@ public class VectorDrawable_Delegate {
VPathRenderer_Delegate nativePathRenderer =
getDelegate(rendererPtr);
+ Canvas_Delegate.native_save(canvasWrapperPtr, MATRIX_SAVE_FLAG | CLIP_SAVE_FLAG);
+ Canvas_Delegate.native_translate(canvasWrapperPtr, bounds.left, bounds.top);
+
+ if (needsMirroring) {
+ Canvas_Delegate.native_translate(canvasWrapperPtr, bounds.width(), 0);
+ Canvas_Delegate.native_scale(canvasWrapperPtr, -1.0f, 1.0f);
+ }
+
+ // At this point, canvas has been translated to the right position.
+ // And we use this bound for the destination rect for the drawBitmap, so
+ // we offset to (0, 0);
+ bounds.offsetTo(0, 0);
nativePathRenderer.draw(canvasWrapperPtr, colorFilterPtr, bounds.width(), bounds.height());
+
+ Canvas_Delegate.native_restore(canvasWrapperPtr, true);
}
@LayoutlibDelegate
@@ -492,28 +505,6 @@ public class VectorDrawable_Delegate {
super(copy);
}
- public void inflate(Resources r, AttributeSet attrs, Theme theme) {
- final TypedArray a = obtainAttributes(r, theme, attrs,
- R.styleable.VectorDrawableClipPath);
- updateStateFromTypedArray(a);
- a.recycle();
- }
-
- private void updateStateFromTypedArray(TypedArray a) {
- // Account for any configuration changes.
- mChangingConfigurations |= a.getChangingConfigurations();
-
- final String pathName = a.getString(R.styleable.VectorDrawableClipPath_name);
- if (pathName != null) {
- mPathName = pathName;
- }
-
- final String pathData = a.getString(R.styleable.VectorDrawableClipPath_pathData);
- if (pathData != null) {
- mNodes = PathParser_Delegate.createNodesFromPathData(pathData);
- }
- }
-
@Override
public boolean isClipPath() {
return true;