diff options
Diffstat (limited to 'tools/layoutlib/bridge/src/android/graphics/Canvas.java')
-rw-r--r-- | tools/layoutlib/bridge/src/android/graphics/Canvas.java | 44 |
1 files changed, 28 insertions, 16 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 |