| Index: src/core/SkCanvas.cpp
|
| diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
|
| index cd2065bd30daaa135d98507edd2b1f5b48c0b091..4d8aac59afc453942270d6dd5983010f721bfec2 100644
|
| --- a/src/core/SkCanvas.cpp
|
| +++ b/src/core/SkCanvas.cpp
|
| @@ -1271,32 +1271,32 @@ void SkCanvas::drawSprite(const SkBitmap& bitmap, int x, int y,
|
| }
|
|
|
| /////////////////////////////////////////////////////////////////////////////
|
| -void SkCanvas::didTranslate(SkScalar, SkScalar) {
|
| - // Do nothing. Subclasses may do something.
|
| -}
|
| -
|
| void SkCanvas::translate(SkScalar dx, SkScalar dy) {
|
| + if (!dx && !dy) {
|
| + return;
|
| + }
|
| +
|
| fDeviceCMDirty = true;
|
| fCachedLocalClipBoundsDirty = true;
|
| fMCRec->fMatrix->preTranslate(dx, dy);
|
|
|
| - this->didTranslate(dx, dy);
|
| -}
|
| -
|
| -void SkCanvas::didScale(SkScalar, SkScalar) {
|
| - // Do nothing. Subclasses may do something.
|
| + SkMatrix m;
|
| + m.setTranslate(dx, dy);
|
| + this->didConcat(m);
|
| }
|
|
|
| void SkCanvas::scale(SkScalar sx, SkScalar sy) {
|
| + if (1 == sx && 1 == sy) {
|
| + return;
|
| + }
|
| +
|
| fDeviceCMDirty = true;
|
| fCachedLocalClipBoundsDirty = true;
|
| fMCRec->fMatrix->preScale(sx, sy);
|
|
|
| - this->didScale(sx, sy);
|
| -}
|
| -
|
| -void SkCanvas::didRotate(SkScalar) {
|
| - // Do nothing. Subclasses may do something.
|
| + SkMatrix m;
|
| + m.setScale(sx, sy);
|
| + this->didConcat(m);
|
| }
|
|
|
| void SkCanvas::rotate(SkScalar degrees) {
|
| @@ -1304,11 +1304,9 @@ void SkCanvas::rotate(SkScalar degrees) {
|
| fCachedLocalClipBoundsDirty = true;
|
| fMCRec->fMatrix->preRotate(degrees);
|
|
|
| - this->didRotate(degrees);
|
| -}
|
| -
|
| -void SkCanvas::didSkew(SkScalar, SkScalar) {
|
| - // Do nothing. Subclasses may do something.
|
| + SkMatrix m;
|
| + m.setRotate(degrees);
|
| + this->didConcat(m);
|
| }
|
|
|
| void SkCanvas::skew(SkScalar sx, SkScalar sy) {
|
| @@ -1316,7 +1314,9 @@ void SkCanvas::skew(SkScalar sx, SkScalar sy) {
|
| fCachedLocalClipBoundsDirty = true;
|
| fMCRec->fMatrix->preSkew(sx, sy);
|
|
|
| - this->didSkew(sx, sy);
|
| + SkMatrix m;
|
| + m.setSkew(sx, sy);
|
| + this->didConcat(m);
|
| }
|
|
|
| void SkCanvas::didConcat(const SkMatrix&) {
|
| @@ -1324,6 +1324,10 @@ void SkCanvas::didConcat(const SkMatrix&) {
|
| }
|
|
|
| void SkCanvas::concat(const SkMatrix& matrix) {
|
| + if (matrix.isIdentity()) {
|
| + return;
|
| + }
|
| +
|
| fDeviceCMDirty = true;
|
| fCachedLocalClipBoundsDirty = true;
|
| fMCRec->fMatrix->preConcat(matrix);
|
|
|