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 19b3ec733bb830f2d4425825d93f9ed95f284e9145Tor Norbyeimport android.annotation.FloatRange; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.Matrix; 21399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chungimport android.graphics.Rect; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 231d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackbornimport java.io.PrintWriter; 241d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Defines the transformation to be applied at 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * one point in time of an Animation. 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class Transformation { 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Indicates a transformation that has no effect (alpha = 1 and identity matrix.) 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 34fadd2081443dd2f59f8e8143256a34b7485fe72eRomain Guy public static final int TYPE_IDENTITY = 0x0; 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Indicates a transformation that applies an alpha only (uses an identity matrix.) 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 38fadd2081443dd2f59f8e8143256a34b7485fe72eRomain Guy public static final int TYPE_ALPHA = 0x1; 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Indicates a transformation that applies a matrix only (alpha = 1.) 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 42fadd2081443dd2f59f8e8143256a34b7485fe72eRomain Guy public static final int TYPE_MATRIX = 0x2; 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Indicates a transformation that applies an alpha and a matrix. 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 46fadd2081443dd2f59f8e8143256a34b7485fe72eRomain Guy public static final int TYPE_BOTH = TYPE_ALPHA | TYPE_MATRIX; 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected Matrix mMatrix; 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected float mAlpha; 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected int mTransformationType; 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 52399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung private boolean mHasClipRect; 53399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung private Rect mClipRect = new Rect(); 54399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Creates a new transformation with alpha = 1 and the identity matrix. 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Transformation() { 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project clear(); 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Reset the transformation to a state that leaves the object 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * being animated in an unmodified state. The transformation type is 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #TYPE_BOTH} by default. 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void clear() { 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mMatrix == null) { 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMatrix = new Matrix(); 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMatrix.reset(); 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 73399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung mClipRect.setEmpty(); 74399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung mHasClipRect = false; 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlpha = 1.0f; 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mTransformationType = TYPE_BOTH; 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Indicates the nature of this transformation. 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return {@link #TYPE_ALPHA}, {@link #TYPE_MATRIX}, 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #TYPE_BOTH} or {@link #TYPE_IDENTITY}. 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getTransformationType() { 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mTransformationType; 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets the transformation type. 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param transformationType One of {@link #TYPE_ALPHA}, 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #TYPE_MATRIX}, {@link #TYPE_BOTH} or 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #TYPE_IDENTITY}. 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setTransformationType(int transformationType) { 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mTransformationType = transformationType; 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Clones the specified transformation. 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param t The transformation to clone. 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void set(Transformation t) { 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlpha = t.getAlpha(); 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMatrix.set(t.getMatrix()); 108399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung if (t.mHasClipRect) { 109399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung setClipRect(t.getClipRect()); 110399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung } else { 111399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung mHasClipRect = false; 112399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung mClipRect.setEmpty(); 113399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung } 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mTransformationType = t.getTransformationType(); 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 116399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Apply this Transformation to an existing Transformation, e.g. apply 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a scale effect to something that has already been rotated. 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param t 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void compose(Transformation t) { 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlpha *= t.getAlpha(); 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMatrix.preConcat(t.getMatrix()); 125399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung if (t.mHasClipRect) { 12610e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase Rect bounds = t.getClipRect(); 12710e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase if (mHasClipRect) { 12810e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase setClipRect(mClipRect.left + bounds.left, mClipRect.top + bounds.top, 12910e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase mClipRect.right + bounds.right, mClipRect.bottom + bounds.bottom); 13010e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase } else { 13110e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase setClipRect(bounds); 13210e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase } 133399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung } 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1378078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * Like {@link #compose(Transformation)} but does this.postConcat(t) of 1388078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * the transformation matrix. 1398078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn * @hide 1408078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn */ 1418078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn public void postCompose(Transformation t) { 1428078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mAlpha *= t.getAlpha(); 1438078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn mMatrix.postConcat(t.getMatrix()); 144399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung if (t.mHasClipRect) { 14510e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase Rect bounds = t.getClipRect(); 14610e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase if (mHasClipRect) { 14710e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase setClipRect(mClipRect.left + bounds.left, mClipRect.top + bounds.top, 14810e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase mClipRect.right + bounds.right, mClipRect.bottom + bounds.bottom); 14910e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase } else { 15010e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase setClipRect(bounds); 15110e23ab61b820fb3149b2f89003753d98ebd6a80Chet Haase } 152399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung } 1538078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn } 1548078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn 1558078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn /** 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The 3x3 Matrix representing the trnasformation to apply to the 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * coordinates of the object being animated 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Matrix getMatrix() { 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mMatrix; 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets the degree of transparency 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param alpha 1.0 means fully opaqe and 0.0 means fully transparent 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 167b3ec733bb830f2d4425825d93f9ed95f284e9145Tor Norbye public void setAlpha(@FloatRange(from=0.0, to=1.0) float alpha) { 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlpha = alpha; 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 172399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung * Sets the current Transform's clip rect 173399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung * @hide 174399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung */ 175399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung public void setClipRect(Rect r) { 176399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung setClipRect(r.left, r.top, r.right, r.bottom); 177399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung } 178399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung 179399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung /** 180399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung * Sets the current Transform's clip rect 181399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung * @hide 182399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung */ 183399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung public void setClipRect(int l, int t, int r, int b) { 184399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung mClipRect.set(l, t, r, b); 185399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung mHasClipRect = true; 186399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung } 187399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung 188399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung /** 189399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung * Returns the current Transform's clip rect 190399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung * @hide 191399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung */ 192399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung public Rect getClipRect() { 193399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung return mClipRect; 194399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung } 195399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung 196399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung /** 197399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung * Returns whether the current Transform's clip rect is set 198399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung * @hide 199399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung */ 200399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung public boolean hasClipRect() { 201399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung return mHasClipRect; 202399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung } 203399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung 204399f62052a88e5e7628b7312637ae54fbbaa4becWinson Chung /** 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The degree of transparency 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public float getAlpha() { 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mAlpha; 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String toString() { 2131d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn StringBuilder sb = new StringBuilder(64); 2141d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn sb.append("Transformation"); 2151d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn toShortString(sb); 2161d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn return sb.toString(); 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Return a string representation of the transformation in a compact form. 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String toShortString() { 2231d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn StringBuilder sb = new StringBuilder(64); 2241d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn toShortString(sb); 2251d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn return sb.toString(); 2261d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn } 2271d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn 2281d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn /** 2291d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn * @hide 2301d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn */ 2311d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn public void toShortString(StringBuilder sb) { 2321d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn sb.append("{alpha="); sb.append(mAlpha); 2331d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn sb.append(" matrix="); mMatrix.toShortString(sb); 2341d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn sb.append('}'); 2351d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn } 2361d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn 2371d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn /** 2381d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn * Print short string, to optimize dumping. 2391d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn * @hide 2401d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn */ 2411d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn public void printShortString(PrintWriter pw) { 2421d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn pw.print("{alpha="); pw.print(mAlpha); 2431d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn pw.print(" matrix="); 2441d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn mMatrix.printShortString(pw); 2451d442e0d990b581357f33f5463c7c5cb49b551e8Dianne Hackborn pw.print('}'); 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 248