| Index: src/core/SkCanvas.cpp
|
| diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
|
| index 787d89d184a3a87ddf88be1a7aa1b6556f7aa313..45f5e074a9fb2abb9ba949cf5ba960c53193586d 100644
|
| --- a/src/core/SkCanvas.cpp
|
| +++ b/src/core/SkCanvas.cpp
|
| @@ -1325,52 +1325,28 @@ 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) {
|
| - 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->concat(m);
|
| }
|
|
|
| void SkCanvas::scale(SkScalar sx, SkScalar sy) {
|
| - 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->concat(m);
|
| }
|
|
|
| void SkCanvas::rotate(SkScalar degrees) {
|
| - fDeviceCMDirty = true;
|
| - 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->concat(m);
|
| }
|
|
|
| void SkCanvas::skew(SkScalar sx, SkScalar sy) {
|
| - fDeviceCMDirty = true;
|
| - fCachedLocalClipBoundsDirty = true;
|
| - fMCRec->fMatrix->preSkew(sx, sy);
|
| -
|
| - this->didSkew(sx, sy);
|
| + SkMatrix m;
|
| + m.setSkew(sx, sy);
|
| + this->concat(m);
|
| }
|
|
|
| void SkCanvas::didConcat(const SkMatrix&) {
|
| @@ -1378,6 +1354,10 @@ void SkCanvas::didConcat(const SkMatrix&) {
|
| }
|
|
|
| void SkCanvas::concat(const SkMatrix& matrix) {
|
| + if (matrix.isIdentity()) {
|
| + return;
|
| + }
|
| +
|
| fDeviceCMDirty = true;
|
| fCachedLocalClipBoundsDirty = true;
|
| fMCRec->fMatrix->preConcat(matrix);
|
|
|