diff options
author | Xavier Ducrohet <xav@google.com> | 2010-01-19 00:02:15 -0800 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2010-01-19 00:02:15 -0800 |
commit | 28039a6f7430bed46de5d8273be583f729c31b79 (patch) | |
tree | 8d1c2051537f6015b3817d9b35827668c466043b /tools/layoutlib | |
parent | 3e22d199a0434a6450eccc5f75a1ad8141878de0 (diff) | |
parent | 1da2735c5862d48712706c2052a34e10e3dea43b (diff) | |
download | frameworks_base-28039a6f7430bed46de5d8273be583f729c31b79.zip frameworks_base-28039a6f7430bed46de5d8273be583f729c31b79.tar.gz frameworks_base-28039a6f7430bed46de5d8273be583f729c31b79.tar.bz2 |
am 1da2735c: am f73bd14a: Merge "ADT/Layoutlib: implement Canvas.concat(Matrix)" into eclair
Merge commit '1da2735c5862d48712706c2052a34e10e3dea43b'
* commit '1da2735c5862d48712706c2052a34e10e3dea43b':
ADT/Layoutlib: implement Canvas.concat(Matrix)
Diffstat (limited to 'tools/layoutlib')
-rw-r--r-- | tools/layoutlib/bridge/src/android/graphics/Canvas.java | 44 | ||||
-rw-r--r-- | tools/layoutlib/bridge/src/android/graphics/Matrix.java | 8 |
2 files changed, 34 insertions, 18 deletions
diff --git a/tools/layoutlib/bridge/src/android/graphics/Canvas.java b/tools/layoutlib/bridge/src/android/graphics/Canvas.java index 4986c77..02e3220 100644 --- a/tools/layoutlib/bridge/src/android/graphics/Canvas.java +++ b/tools/layoutlib/bridge/src/android/graphics/Canvas.java @@ -236,10 +236,15 @@ public class Canvas extends _Original_Canvas { */ @Override public int save() { + // get the current save count + int count = mGraphicsStack.size(); + + // create a new graphics and add it to the stack Graphics2D g = (Graphics2D)getGraphics2d().create(); mGraphicsStack.push(g); - return mGraphicsStack.size() - 1; + // return the old save count + return count; } /* (non-Javadoc) @@ -274,10 +279,9 @@ public class Canvas extends _Original_Canvas { */ @Override public int getSaveCount() { - return mGraphicsStack.size() - 1; + return mGraphicsStack.size(); } - /* (non-Javadoc) * @see android.graphics.Canvas#clipRect(float, float, float, float, android.graphics.Region.Op) */ @@ -953,10 +957,6 @@ public class Canvas extends _Original_Canvas { */ @Override public void setMatrix(Matrix matrix) { - // since SetMatrix *replaces* all the other transformation, we have to restore/save - restore(); - save(); - // get the new current graphics Graphics2D g = getGraphics2d(); @@ -968,6 +968,27 @@ public class Canvas extends _Original_Canvas { } } + /* (non-Javadoc) + * @see android.graphics.Canvas#concat(android.graphics.Matrix) + */ + @Override + public void concat(Matrix matrix) { + // get the current top graphics2D object. + Graphics2D g = getGraphics2d(); + + // get its current matrix + AffineTransform currentTx = g.getTransform(); + // get the AffineTransform of the given matrix + AffineTransform matrixTx = matrix.getTransform(); + + // combine them so that the given matrix is applied after. + currentTx.preConcatenate(matrixTx); + + // give it to the graphics2D as a new matrix replacing all previous transform + g.setTransform(currentTx); + } + + // -------------------- /* (non-Javadoc) @@ -1008,15 +1029,6 @@ public class Canvas extends _Original_Canvas { } /* (non-Javadoc) - * @see android.graphics.Canvas#concat(android.graphics.Matrix) - */ - @Override - public void concat(Matrix matrix) { - // TODO Auto-generated method stub - super.concat(matrix); - } - - /* (non-Javadoc) * @see android.graphics.Canvas#drawArc(android.graphics.RectF, float, float, boolean, android.graphics.Paint) */ @Override diff --git a/tools/layoutlib/bridge/src/android/graphics/Matrix.java b/tools/layoutlib/bridge/src/android/graphics/Matrix.java index 3974e08..522415c 100644 --- a/tools/layoutlib/bridge/src/android/graphics/Matrix.java +++ b/tools/layoutlib/bridge/src/android/graphics/Matrix.java @@ -87,8 +87,12 @@ public class Matrix extends _Original_Matrix { } public AffineTransform getTransform() { - return new AffineTransform(mValues[0], mValues[1], mValues[2], - mValues[3], mValues[4], mValues[5]); + // the AffineTransform constructor takes the value in a different order + // for a matrix [ 0 1 2 ] + // [ 3 4 5 ] + // the order is 0, 3, 1, 4, 2, 5... + return new AffineTransform(mValues[0], mValues[3], mValues[1], + mValues[4], mValues[2], mValues[5]); } public boolean hasPerspective() { |