diff options
| author | 2016-03-03 11:52:25 +0000 | |
|---|---|---|
| committer | 2016-03-03 15:06:46 +0000 | |
| commit | 1b338cda4ed044691f0fe8ba59950bfc309d911d (patch) | |
| tree | 39a38c62dabbe21df832f99661b490bea00bd2e7 | |
| parent | 34bfcf1fdfe26d510cd6a13ce77113a0b18b9ea4 (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.java | 37 |
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; |