Transformation.java revision 10e23ab61b820fb3149b2f89003753d98ebd6a80
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.view.animation; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.Matrix; 20399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chungimport android.graphics.Rect; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 221d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackbornimport java.io.PrintWriter; 231d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Defines the transformation to be applied at 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * one point in time of an Animation. 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class Transformation { 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Indicates a transformation that has no effect (alpha = 1 and identity matrix.) 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 33fadd2081443dd2f59f8e8143256a34b7485fe72eRomain Guy public static final int TYPE_IDENTITY = 0x0; 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Indicates a transformation that applies an alpha only (uses an identity matrix.) 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 37fadd2081443dd2f59f8e8143256a34b7485fe72eRomain Guy public static final int TYPE_ALPHA = 0x1; 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Indicates a transformation that applies a matrix only (alpha = 1.) 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 41fadd2081443dd2f59f8e8143256a34b7485fe72eRomain Guy public static final int TYPE_MATRIX = 0x2; 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Indicates a transformation that applies an alpha and a matrix. 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 45fadd2081443dd2f59f8e8143256a34b7485fe72eRomain Guy public static final int TYPE_BOTH = TYPE_ALPHA | TYPE_MATRIX; 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected Matrix mMatrix; 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected float mAlpha; 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected int mTransformationType; 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 51399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung private boolean mHasClipRect; 52399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung private Rect mClipRect = new Rect(); 53399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Creates a new transformation with alpha = 1 and the identity matrix. 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Transformation() { 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project clear(); 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Reset the transformation to a state that leaves the object 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * being animated in an unmodified state. The transformation type is 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #TYPE_BOTH} by default. 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void clear() { 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mMatrix == null) { 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMatrix = new Matrix(); 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMatrix.reset(); 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 72399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung mClipRect.setEmpty(); 73399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung mHasClipRect = false; 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlpha = 1.0f; 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mTransformationType = TYPE_BOTH; 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Indicates the nature of this transformation. 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return {@link #TYPE_ALPHA}, {@link #TYPE_MATRIX}, 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #TYPE_BOTH} or {@link #TYPE_IDENTITY}. 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getTransformationType() { 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mTransformationType; 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets the transformation type. 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param transformationType One of {@link #TYPE_ALPHA}, 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #TYPE_MATRIX}, {@link #TYPE_BOTH} or 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #TYPE_IDENTITY}. 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setTransformationType(int transformationType) { 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mTransformationType = transformationType; 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Clones the specified transformation. 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param t The transformation to clone. 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void set(Transformation t) { 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlpha = t.getAlpha(); 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMatrix.set(t.getMatrix()); 107399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung if (t.mHasClipRect) { 108399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung setClipRect(t.getClipRect()); 109399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung } else { 110399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung mHasClipRect = false; 111399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung mClipRect.setEmpty(); 112399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung } 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mTransformationType = t.getTransformationType(); 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 115399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Apply this Transformation to an existing Transformation, e.g. apply 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a scale effect to something that has already been rotated. 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param t 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void compose(Transformation t) { 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlpha *= t.getAlpha(); 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMatrix.preConcat(t.getMatrix()); 124399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung if (t.mHasClipRect) { 12510e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase Rect bounds = t.getClipRect(); 12610e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase if (mHasClipRect) { 12710e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase setClipRect(mClipRect.left + bounds.left, mClipRect.top + bounds.top, 12810e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase mClipRect.right + bounds.right, mClipRect.bottom + bounds.bottom); 12910e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase } else { 13010e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase setClipRect(bounds); 13110e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase } 132399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung } 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1368078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * Like {@link #compose(Transformation)} but does this.postConcat(t) of 1378078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * the transformation matrix. 1388078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * @hide 1398078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn */ 1408078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public void postCompose(Transformation t) { 1418078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mAlpha *= t.getAlpha(); 1428078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mMatrix.postConcat(t.getMatrix()); 143399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung if (t.mHasClipRect) { 14410e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase Rect bounds = t.getClipRect(); 14510e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase if (mHasClipRect) { 14610e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase setClipRect(mClipRect.left + bounds.left, mClipRect.top + bounds.top, 14710e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase mClipRect.right + bounds.right, mClipRect.bottom + bounds.bottom); 14810e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase } else { 14910e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase setClipRect(bounds); 15010e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase } 151399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung } 1528078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 1538078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 1548078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The 3x3 Matrix representing the trnasformation to apply to the 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * coordinates of the object being animated 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Matrix getMatrix() { 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mMatrix; 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets the degree of transparency 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param alpha 1.0 means fully opaqe and 0.0 means fully transparent 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setAlpha(float alpha) { 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlpha = alpha; 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 171399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung * Sets the current Transform's clip rect 172399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung * @hide 173399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung */ 174399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung public void setClipRect(Rect r) { 175399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung setClipRect(r.left, r.top, r.right, r.bottom); 176399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung } 177399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung 178399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung /** 179399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung * Sets the current Transform's clip rect 180399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung * @hide 181399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung */ 182399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung public void setClipRect(int l, int t, int r, int b) { 183399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung mClipRect.set(l, t, r, b); 184399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung mHasClipRect = true; 185399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung } 186399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung 187399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung /** 188399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung * Returns the current Transform's clip rect 189399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung * @hide 190399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung */ 191399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung public Rect getClipRect() { 192399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung return mClipRect; 193399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung } 194399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung 195399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung /** 196399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung * Returns whether the current Transform's clip rect is set 197399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung * @hide 198399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung */ 199399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung public boolean hasClipRect() { 200399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung return mHasClipRect; 201399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung } 202399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung 203399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung /** 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The degree of transparency 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public float getAlpha() { 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mAlpha; 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String toString() { 2121d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn StringBuilder sb = new StringBuilder(64); 2131d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn sb.append("Transformation"); 2141d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn toShortString(sb); 2151d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn return sb.toString(); 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Return a string representation of the transformation in a compact form. 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String toShortString() { 2221d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn StringBuilder sb = new StringBuilder(64); 2231d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn toShortString(sb); 2241d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn return sb.toString(); 2251d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn } 2261d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn 2271d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn /** 2281d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn * @hide 2291d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn */ 2301d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn public void toShortString(StringBuilder sb) { 2311d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn sb.append("{alpha="); sb.append(mAlpha); 2321d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn sb.append(" matrix="); mMatrix.toShortString(sb); 2331d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn sb.append('}'); 2341d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn } 2351d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn 2361d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn /** 2371d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn * Print short string, to optimize dumping. 2381d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn * @hide 2391d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn */ 2401d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn public void printShortString(PrintWriter pw) { 2411d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn pw.print("{alpha="); pw.print(mAlpha); 2421d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn pw.print(" matrix="); 2431d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn mMatrix.printShortString(pw); 2441d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn pw.print('}'); 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 247