diff options
author | 2014-03-25 17:32:26 +0000 | |
---|---|---|
committer | 2014-03-25 17:32:26 +0000 | |
commit | d9ea09e1f29b303e6fa36079e99729d2951925b9 (patch) | |
tree | 15377de5dde5b8f19ac67f7dafce9250bcaac30b /src/core/SkPictureRecord.cpp | |
parent | 7111d463cee893a479280c7af41757e709e33ef5 (diff) |
Consolidate SkCanvas matrix virtuals.
Remove didTranslate, didScale, didRotate & didSkew, and rely on
didConcat instead. Subclasses can sniff the matrix type if they want to
differentiate.
(work in progress)
R=reed@google.com, robertphillips@google.com
Author: fmalita@chromium.org
Review URL: https://codereview.chromium.org/203203004
git-svn-id: http://skia.googlecode.com/svn/trunk@13940 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/core/SkPictureRecord.cpp')
-rw-r--r-- | src/core/SkPictureRecord.cpp | 66 |
1 files changed, 20 insertions, 46 deletions
diff --git a/src/core/SkPictureRecord.cpp b/src/core/SkPictureRecord.cpp index ce21d955dd..997b974802 100644 --- a/src/core/SkPictureRecord.cpp +++ b/src/core/SkPictureRecord.cpp @@ -664,62 +664,26 @@ void SkPictureRecord::recordRestore(bool fillInSkips) { this->validate(initialOffset, size); } -void SkPictureRecord::didTranslate(SkScalar dx, SkScalar dy) { -#ifdef SK_COLLAPSE_MATRIX_CLIP_STATE - fMCMgr.translate(dx, dy); -#else +void SkPictureRecord::recordTranslate(const SkMatrix& m) { + SkASSERT(SkMatrix::kTranslate_Mask == m.getType()); + // op + dx + dy uint32_t size = 1 * kUInt32Size + 2 * sizeof(SkScalar); size_t initialOffset = this->addDraw(TRANSLATE, &size); - this->addScalar(dx); - this->addScalar(dy); + this->addScalar(m.getTranslateX()); + this->addScalar(m.getTranslateY()); this->validate(initialOffset, size); -#endif - this->INHERITED::didTranslate(dx, dy); } -void SkPictureRecord::didScale(SkScalar sx, SkScalar sy) { +void SkPictureRecord::recordScale(const SkMatrix& m) { + SkASSERT(SkMatrix::kScale_Mask == m.getType()); -#ifdef SK_COLLAPSE_MATRIX_CLIP_STATE - fMCMgr.scale(sx, sy); -#else // op + sx + sy uint32_t size = 1 * kUInt32Size + 2 * sizeof(SkScalar); size_t initialOffset = this->addDraw(SCALE, &size); - this->addScalar(sx); - this->addScalar(sy); + this->addScalar(m.getScaleX()); + this->addScalar(m.getScaleY()); this->validate(initialOffset, size); -#endif - this->INHERITED::didScale(sx, sy); -} - -void SkPictureRecord::didRotate(SkScalar degrees) { - -#ifdef SK_COLLAPSE_MATRIX_CLIP_STATE - fMCMgr.rotate(degrees); -#else - // op + degrees - uint32_t size = 1 * kUInt32Size + sizeof(SkScalar); - size_t initialOffset = this->addDraw(ROTATE, &size); - this->addScalar(degrees); - this->validate(initialOffset, size); -#endif - this->INHERITED::didRotate(degrees); -} - -void SkPictureRecord::didSkew(SkScalar sx, SkScalar sy) { - -#ifdef SK_COLLAPSE_MATRIX_CLIP_STATE - fMCMgr.skew(sx, sy); -#else - // op + sx + sy - uint32_t size = 1 * kUInt32Size + 2 * sizeof(SkScalar); - size_t initialOffset = this->addDraw(SKEW, &size); - this->addScalar(sx); - this->addScalar(sy); - this->validate(initialOffset, size); -#endif - this->INHERITED::didSkew(sx, sy); } void SkPictureRecord::didConcat(const SkMatrix& matrix) { @@ -727,7 +691,17 @@ void SkPictureRecord::didConcat(const SkMatrix& matrix) { #ifdef SK_COLLAPSE_MATRIX_CLIP_STATE fMCMgr.concat(matrix); #else - this->recordConcat(matrix); + switch (matrix.getType()) { + case SkMatrix::kTranslate_Mask: + this->recordTranslate(matrix); + break; + case SkMatrix::kScale_Mask: + this->recordScale(matrix); + break; + default: + this->recordConcat(matrix); + break; + } #endif this->INHERITED::didConcat(matrix); } |