Deals with translation and scaling in layoutlib

am: ded4d14e33

* commit 'ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043':
  Deals with translation and scaling in layoutlib
This commit is contained in:
Jerome Gaillard
2016-01-21 13:16:02 +00:00
committed by android-build-merger
2 changed files with 129 additions and 13 deletions

View File

@@ -38,10 +38,15 @@ public class RenderNode_Delegate {
private float mLift;
private float mTranslationX;
private float mTranslationY;
private float mTranslationZ;
private float mRotation;
private float mScaleX = 1;
private float mScaleY = 1;
private float mPivotX;
private float mPivotY;
private boolean mPivotExplicitelySet;
private boolean mPivotExplicitlySet;
private int mLeft;
private int mRight;
private int mTop;
@@ -80,6 +85,63 @@ public class RenderNode_Delegate {
return 0f;
}
@LayoutlibDelegate
/*package*/ static boolean nSetTranslationX(long renderNode, float translationX) {
RenderNode_Delegate delegate = sManager.getDelegate(renderNode);
if (delegate != null && delegate.mTranslationX != translationX) {
delegate.mTranslationX = translationX;
return true;
}
return false;
}
@LayoutlibDelegate
/*package*/ static float nGetTranslationX(long renderNode) {
RenderNode_Delegate delegate = sManager.getDelegate(renderNode);
if (delegate != null) {
return delegate.mTranslationX;
}
return 0f;
}
@LayoutlibDelegate
/*package*/ static boolean nSetTranslationY(long renderNode, float translationY) {
RenderNode_Delegate delegate = sManager.getDelegate(renderNode);
if (delegate != null && delegate.mTranslationY != translationY) {
delegate.mTranslationY = translationY;
return true;
}
return false;
}
@LayoutlibDelegate
/*package*/ static float nGetTranslationY(long renderNode) {
RenderNode_Delegate delegate = sManager.getDelegate(renderNode);
if (delegate != null) {
return delegate.mTranslationY;
}
return 0f;
}
@LayoutlibDelegate
/*package*/ static boolean nSetTranslationZ(long renderNode, float translationZ) {
RenderNode_Delegate delegate = sManager.getDelegate(renderNode);
if (delegate != null && delegate.mTranslationZ != translationZ) {
delegate.mTranslationZ = translationZ;
return true;
}
return false;
}
@LayoutlibDelegate
/*package*/ static float nGetTranslationZ(long renderNode) {
RenderNode_Delegate delegate = sManager.getDelegate(renderNode);
if (delegate != null) {
return delegate.mTranslationZ;
}
return 0f;
}
@LayoutlibDelegate
/*package*/ static boolean nSetRotation(long renderNode, float rotation) {
RenderNode_Delegate delegate = sManager.getDelegate(renderNode);
@@ -103,8 +165,17 @@ public class RenderNode_Delegate {
/*package*/ static void getMatrix(RenderNode renderNode, Matrix outMatrix) {
outMatrix.reset();
if (renderNode != null) {
outMatrix.preRotate(renderNode.getRotation(), renderNode.getPivotX(),
renderNode.getPivotY());
float rotation = renderNode.getRotation();
float translationX = renderNode.getTranslationX();
float translationY = renderNode.getTranslationY();
float pivotX = renderNode.getPivotX();
float pivotY = renderNode.getPivotY();
float scaleX = renderNode.getScaleX();
float scaleY = renderNode.getScaleY();
outMatrix.setTranslate(translationX, translationY);
outMatrix.preRotate(rotation, pivotX, pivotY);
outMatrix.preScale(scaleX, scaleY, pivotX, pivotY);
}
}
@@ -166,18 +237,15 @@ public class RenderNode_Delegate {
@LayoutlibDelegate
/*package*/ static boolean nIsPivotExplicitlySet(long renderNode) {
RenderNode_Delegate delegate = sManager.getDelegate(renderNode);
if (delegate != null) {
return delegate.mPivotExplicitelySet;
}
return false;
return delegate != null && delegate.mPivotExplicitlySet;
}
@LayoutlibDelegate
/*package*/ static boolean nSetPivotX(long renderNode, float pivotX) {
RenderNode_Delegate delegate = sManager.getDelegate(renderNode);
if (delegate != null && delegate.mPivotX != pivotX) {
if (delegate != null) {
delegate.mPivotX = pivotX;
delegate.mPivotExplicitelySet = true;
delegate.mPivotExplicitlySet = true;
return true;
}
return false;
@@ -187,7 +255,7 @@ public class RenderNode_Delegate {
/*package*/ static float nGetPivotX(long renderNode) {
RenderNode_Delegate delegate = sManager.getDelegate(renderNode);
if (delegate != null) {
if (delegate.mPivotExplicitelySet) {
if (delegate.mPivotExplicitlySet) {
return delegate.mPivotX;
} else {
return (delegate.mRight - delegate.mLeft) / 2.0f;
@@ -199,9 +267,9 @@ public class RenderNode_Delegate {
@LayoutlibDelegate
/*package*/ static boolean nSetPivotY(long renderNode, float pivotY) {
RenderNode_Delegate delegate = sManager.getDelegate(renderNode);
if (delegate != null && delegate.mPivotY != pivotY) {
if (delegate != null) {
delegate.mPivotY = pivotY;
delegate.mPivotExplicitelySet = true;
delegate.mPivotExplicitlySet = true;
return true;
}
return false;
@@ -211,7 +279,7 @@ public class RenderNode_Delegate {
/*package*/ static float nGetPivotY(long renderNode) {
RenderNode_Delegate delegate = sManager.getDelegate(renderNode);
if (delegate != null) {
if (delegate.mPivotExplicitelySet) {
if (delegate.mPivotExplicitlySet) {
return delegate.mPivotY;
} else {
return (delegate.mBottom - delegate.mTop) / 2.0f;
@@ -219,4 +287,42 @@ public class RenderNode_Delegate {
}
return 0f;
}
@LayoutlibDelegate
/*package*/ static boolean nSetScaleX(long renderNode, float scaleX) {
RenderNode_Delegate delegate = sManager.getDelegate(renderNode);
if (delegate != null && delegate.mScaleX != scaleX) {
delegate.mScaleX = scaleX;
return true;
}
return false;
}
@LayoutlibDelegate
/*package*/ static float nGetScaleX(long renderNode) {
RenderNode_Delegate delegate = sManager.getDelegate(renderNode);
if (delegate != null) {
return delegate.mScaleX;
}
return 0f;
}
@LayoutlibDelegate
/*package*/ static boolean nSetScaleY(long renderNode, float scaleY) {
RenderNode_Delegate delegate = sManager.getDelegate(renderNode);
if (delegate != null && delegate.mScaleY != scaleY) {
delegate.mScaleY = scaleY;
return true;
}
return false;
}
@LayoutlibDelegate
/*package*/ static float nGetScaleY(long renderNode) {
RenderNode_Delegate delegate = sManager.getDelegate(renderNode);
if (delegate != null) {
return delegate.mScaleY;
}
return 0f;
}
}

View File

@@ -192,6 +192,12 @@ public final class CreateInfo implements ICreateInfo {
"android.view.RenderNode#nDestroyRenderNode",
"android.view.RenderNode#nSetElevation",
"android.view.RenderNode#nGetElevation",
"android.view.RenderNode#nSetTranslationX",
"android.view.RenderNode#nGetTranslationX",
"android.view.RenderNode#nSetTranslationY",
"android.view.RenderNode#nGetTranslationY",
"android.view.RenderNode#nSetTranslationZ",
"android.view.RenderNode#nGetTranslationZ",
"android.view.RenderNode#nSetRotation",
"android.view.RenderNode#nGetRotation",
"android.view.RenderNode#getMatrix",
@@ -204,6 +210,10 @@ public final class CreateInfo implements ICreateInfo {
"android.view.RenderNode#nGetPivotX",
"android.view.RenderNode#nSetPivotY",
"android.view.RenderNode#nGetPivotY",
"android.view.RenderNode#nSetScaleX",
"android.view.RenderNode#nGetScaleX",
"android.view.RenderNode#nSetScaleY",
"android.view.RenderNode#nGetScaleY",
"android.view.RenderNode#nIsPivotExplicitlySet",
"android.view.ViewGroup#drawChild",
"android.widget.SimpleMonthView#getTitle",