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