1796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta/* 2796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * Copyright (C) 2014 The Android Open Source Project 3796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * 4796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * Licensed under the Apache License, Version 2.0 (the "License"); 5796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * you may not use this file except in compliance with the License. 6796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * You may obtain a copy of the License at 7796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * 8796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * http://www.apache.org/licenses/LICENSE-2.0 9796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * 10796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * Unless required by applicable law or agreed to in writing, software 11796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * distributed under the License is distributed on an "AS IS" BASIS, 12796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * See the License for the specific language governing permissions and 14796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * limitations under the License. 15796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta */ 16796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta 17796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Guptapackage android.view; 18796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta 19796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Guptaimport com.android.layoutlib.bridge.impl.DelegateManager; 20796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Guptaimport com.android.tools.layoutlib.annotations.LayoutlibDelegate; 21796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta 22c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillardimport android.graphics.Matrix; 23c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard 24796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta/** 25796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * Delegate implementing the native methods of {@link RenderNode} 26796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * <p/> 27796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * Through the layoutlib_create tool, some native methods of RenderNode have been replaced by calls 28796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * to methods of the same name in this delegate class. 29796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * 30796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta * @see DelegateManager 31796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta */ 32796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Guptapublic class RenderNode_Delegate { 33796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta 34796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta 35796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta // ---- delegate manager ---- 36796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta private static final DelegateManager<RenderNode_Delegate> sManager = 37796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta new DelegateManager<RenderNode_Delegate>(RenderNode_Delegate.class); 38796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta 39796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta 40796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta private float mLift; 41ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard private float mTranslationX; 42ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard private float mTranslationY; 43ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard private float mTranslationZ; 44c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard private float mRotation; 45ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard private float mScaleX = 1; 46ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard private float mScaleY = 1; 47c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard private float mPivotX; 48c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard private float mPivotY; 49ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard private boolean mPivotExplicitlySet; 50c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard private int mLeft; 51c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard private int mRight; 52c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard private int mTop; 53c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard private int mBottom; 54796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta @SuppressWarnings("UnusedDeclaration") 55796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta private String mName; 56796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta 57796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta @LayoutlibDelegate 588f43dfef2bf4581fa97705ffaabf66b7568b9544Diego Perez /*package*/ static long nCreate(RenderNode thisRenderNode, String name) { 59796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta RenderNode_Delegate renderNodeDelegate = new RenderNode_Delegate(); 60796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta renderNodeDelegate.mName = name; 61796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta return sManager.addNewDelegate(renderNodeDelegate); 62796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta } 63796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta 64796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta @LayoutlibDelegate 65796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta /*package*/ static void nDestroyRenderNode(long renderNode) { 66796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta sManager.removeJavaReferenceFor(renderNode); 67796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta } 68796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta 69796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta @LayoutlibDelegate 70796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta /*package*/ static boolean nSetElevation(long renderNode, float lift) { 71796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta RenderNode_Delegate delegate = sManager.getDelegate(renderNode); 72796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta if (delegate != null && delegate.mLift != lift) { 73796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta delegate.mLift = lift; 74796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta return true; 75796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta } 76796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta return false; 77796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta } 78796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta 79796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta @LayoutlibDelegate 80796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta /*package*/ static float nGetElevation(long renderNode) { 81796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta RenderNode_Delegate delegate = sManager.getDelegate(renderNode); 82796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta if (delegate != null) { 83796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta return delegate.mLift; 84796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta } 85796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta return 0f; 86796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta } 87c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard 88c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard @LayoutlibDelegate 89ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard /*package*/ static boolean nSetTranslationX(long renderNode, float translationX) { 90ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard RenderNode_Delegate delegate = sManager.getDelegate(renderNode); 91ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard if (delegate != null && delegate.mTranslationX != translationX) { 92ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard delegate.mTranslationX = translationX; 93ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard return true; 94ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard } 95ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard return false; 96ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard } 97ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard 98ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard @LayoutlibDelegate 99ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard /*package*/ static float nGetTranslationX(long renderNode) { 100ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard RenderNode_Delegate delegate = sManager.getDelegate(renderNode); 101ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard if (delegate != null) { 102ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard return delegate.mTranslationX; 103ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard } 104ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard return 0f; 105ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard } 106ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard 107ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard @LayoutlibDelegate 108ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard /*package*/ static boolean nSetTranslationY(long renderNode, float translationY) { 109ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard RenderNode_Delegate delegate = sManager.getDelegate(renderNode); 110ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard if (delegate != null && delegate.mTranslationY != translationY) { 111ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard delegate.mTranslationY = translationY; 112ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard return true; 113ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard } 114ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard return false; 115ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard } 116ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard 117ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard @LayoutlibDelegate 118ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard /*package*/ static float nGetTranslationY(long renderNode) { 119ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard RenderNode_Delegate delegate = sManager.getDelegate(renderNode); 120ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard if (delegate != null) { 121ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard return delegate.mTranslationY; 122ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard } 123ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard return 0f; 124ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard } 125ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard 126ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard @LayoutlibDelegate 127ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard /*package*/ static boolean nSetTranslationZ(long renderNode, float translationZ) { 128ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard RenderNode_Delegate delegate = sManager.getDelegate(renderNode); 129ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard if (delegate != null && delegate.mTranslationZ != translationZ) { 130ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard delegate.mTranslationZ = translationZ; 131ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard return true; 132ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard } 133ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard return false; 134ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard } 135ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard 136ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard @LayoutlibDelegate 137ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard /*package*/ static float nGetTranslationZ(long renderNode) { 138ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard RenderNode_Delegate delegate = sManager.getDelegate(renderNode); 139ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard if (delegate != null) { 140ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard return delegate.mTranslationZ; 141ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard } 142ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard return 0f; 143ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard } 144ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard 145ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard @LayoutlibDelegate 146c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard /*package*/ static boolean nSetRotation(long renderNode, float rotation) { 147c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard RenderNode_Delegate delegate = sManager.getDelegate(renderNode); 148c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard if (delegate != null && delegate.mRotation != rotation) { 149c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard delegate.mRotation = rotation; 150c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard return true; 151c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 152c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard return false; 153c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 154c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard 155c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard @LayoutlibDelegate 156c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard /*package*/ static float nGetRotation(long renderNode) { 157c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard RenderNode_Delegate delegate = sManager.getDelegate(renderNode); 158c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard if (delegate != null) { 159c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard return delegate.mRotation; 160c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 161c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard return 0f; 162c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 163c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard 164c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard @LayoutlibDelegate 165c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard /*package*/ static void getMatrix(RenderNode renderNode, Matrix outMatrix) { 166c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard outMatrix.reset(); 167c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard if (renderNode != null) { 168ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard float rotation = renderNode.getRotation(); 169ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard float translationX = renderNode.getTranslationX(); 170ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard float translationY = renderNode.getTranslationY(); 171ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard float pivotX = renderNode.getPivotX(); 172ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard float pivotY = renderNode.getPivotY(); 173ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard float scaleX = renderNode.getScaleX(); 174ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard float scaleY = renderNode.getScaleY(); 175ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard 176ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard outMatrix.setTranslate(translationX, translationY); 177ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard outMatrix.preRotate(rotation, pivotX, pivotY); 178ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard outMatrix.preScale(scaleX, scaleY, pivotX, pivotY); 179c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 180c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 181c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard 182c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard @LayoutlibDelegate 183c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard /*package*/ static boolean nSetLeft(long renderNode, int left) { 184c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard RenderNode_Delegate delegate = sManager.getDelegate(renderNode); 185c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard if (delegate != null && delegate.mLeft != left) { 186c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard delegate.mLeft = left; 187c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard return true; 188c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 189c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard return false; 190c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 191c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard 192c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard @LayoutlibDelegate 193c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard /*package*/ static boolean nSetTop(long renderNode, int top) { 194c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard RenderNode_Delegate delegate = sManager.getDelegate(renderNode); 195c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard if (delegate != null && delegate.mTop != top) { 196c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard delegate.mTop = top; 197c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard return true; 198c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 199c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard return false; 200c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 201c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard 202c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard @LayoutlibDelegate 203c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard /*package*/ static boolean nSetRight(long renderNode, int right) { 204c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard RenderNode_Delegate delegate = sManager.getDelegate(renderNode); 205c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard if (delegate != null && delegate.mRight != right) { 206c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard delegate.mRight = right; 207c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard return true; 208c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 209c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard return false; 210c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 211c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard 212c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard @LayoutlibDelegate 213c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard /*package*/ static boolean nSetBottom(long renderNode, int bottom) { 214c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard RenderNode_Delegate delegate = sManager.getDelegate(renderNode); 215c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard if (delegate != null && delegate.mBottom != bottom) { 216c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard delegate.mBottom = bottom; 217c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard return true; 218c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 219c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard return false; 220c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 221c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard 222c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard @LayoutlibDelegate 223c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard /*package*/ static boolean nSetLeftTopRightBottom(long renderNode, int left, int top, int right, 224c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard int bottom) { 225c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard RenderNode_Delegate delegate = sManager.getDelegate(renderNode); 226c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard if (delegate != null && (delegate.mLeft != left || delegate.mTop != top || delegate 227c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard .mRight != right || delegate.mBottom != bottom)) { 228c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard delegate.mLeft = left; 229c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard delegate.mTop = top; 230c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard delegate.mRight = right; 231c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard delegate.mBottom = bottom; 232c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard return true; 233c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 234c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard return false; 235c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 236c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard 237c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard @LayoutlibDelegate 238c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard /*package*/ static boolean nIsPivotExplicitlySet(long renderNode) { 239c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard RenderNode_Delegate delegate = sManager.getDelegate(renderNode); 240ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard return delegate != null && delegate.mPivotExplicitlySet; 241c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 242c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard 243c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard @LayoutlibDelegate 244c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard /*package*/ static boolean nSetPivotX(long renderNode, float pivotX) { 245c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard RenderNode_Delegate delegate = sManager.getDelegate(renderNode); 246ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard if (delegate != null) { 247c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard delegate.mPivotX = pivotX; 248ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard delegate.mPivotExplicitlySet = true; 249c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard return true; 250c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 251c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard return false; 252c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 253c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard 254c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard @LayoutlibDelegate 255c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard /*package*/ static float nGetPivotX(long renderNode) { 256c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard RenderNode_Delegate delegate = sManager.getDelegate(renderNode); 257c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard if (delegate != null) { 258ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard if (delegate.mPivotExplicitlySet) { 259c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard return delegate.mPivotX; 260c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } else { 261c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard return (delegate.mRight - delegate.mLeft) / 2.0f; 262c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 263c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 264c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard return 0f; 265c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 266c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard 267c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard @LayoutlibDelegate 268c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard /*package*/ static boolean nSetPivotY(long renderNode, float pivotY) { 269c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard RenderNode_Delegate delegate = sManager.getDelegate(renderNode); 270ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard if (delegate != null) { 271c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard delegate.mPivotY = pivotY; 272ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard delegate.mPivotExplicitlySet = true; 273c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard return true; 274c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 275c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard return false; 276c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 277c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard 278c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard @LayoutlibDelegate 279c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard /*package*/ static float nGetPivotY(long renderNode) { 280c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard RenderNode_Delegate delegate = sManager.getDelegate(renderNode); 281c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard if (delegate != null) { 282ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard if (delegate.mPivotExplicitlySet) { 283c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard return delegate.mPivotY; 284c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } else { 285c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard return (delegate.mBottom - delegate.mTop) / 2.0f; 286c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 287c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 288c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard return 0f; 289c92d70dff716a8b38982b3d6ec05427ad66497faJerome Gaillard } 290ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard 291ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard @LayoutlibDelegate 292ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard /*package*/ static boolean nSetScaleX(long renderNode, float scaleX) { 293ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard RenderNode_Delegate delegate = sManager.getDelegate(renderNode); 294ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard if (delegate != null && delegate.mScaleX != scaleX) { 295ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard delegate.mScaleX = scaleX; 296ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard return true; 297ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard } 298ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard return false; 299ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard } 300ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard 301ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard @LayoutlibDelegate 302ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard /*package*/ static float nGetScaleX(long renderNode) { 303ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard RenderNode_Delegate delegate = sManager.getDelegate(renderNode); 304ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard if (delegate != null) { 305ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard return delegate.mScaleX; 306ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard } 307ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard return 0f; 308ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard } 309ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard 310ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard @LayoutlibDelegate 311ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard /*package*/ static boolean nSetScaleY(long renderNode, float scaleY) { 312ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard RenderNode_Delegate delegate = sManager.getDelegate(renderNode); 313ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard if (delegate != null && delegate.mScaleY != scaleY) { 314ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard delegate.mScaleY = scaleY; 315ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard return true; 316ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard } 317ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard return false; 318ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard } 319ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard 320ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard @LayoutlibDelegate 321ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard /*package*/ static float nGetScaleY(long renderNode) { 322ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard RenderNode_Delegate delegate = sManager.getDelegate(renderNode); 323ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard if (delegate != null) { 324ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard return delegate.mScaleY; 325ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard } 326ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard return 0f; 327ded4d14e3348ebb0cdfa3498a53d3fbfc58b2043Jerome Gaillard } 328796e9b7f9910f2ba8133cdb6f137107585b2e5faDeepanshu Gupta} 329