Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(88)

Side by Side Diff: src/core/SkCanvas.cpp

Issue 203203004: Consolidate SkCanvas matrix virtuals. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Updated per review. Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/core/SkBBoxHierarchyRecord.cpp ('k') | src/core/SkPictureRecord.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2008 The Android Open Source Project 3 * Copyright 2008 The Android Open Source Project
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10 #include "SkCanvas.h" 10 #include "SkCanvas.h"
(...skipping 1307 matching lines...) Expand 10 before | Expand all | Expand 10 after
1318 tmpUnfiltered); 1318 tmpUnfiltered);
1319 } 1319 }
1320 } else { 1320 } else {
1321 iter.fDevice->drawSprite(iter, bitmap, pos.x(), pos.y(), *paint); 1321 iter.fDevice->drawSprite(iter, bitmap, pos.x(), pos.y(), *paint);
1322 } 1322 }
1323 } 1323 }
1324 LOOPER_END 1324 LOOPER_END
1325 } 1325 }
1326 1326
1327 ///////////////////////////////////////////////////////////////////////////// 1327 /////////////////////////////////////////////////////////////////////////////
1328 void SkCanvas::didTranslate(SkScalar, SkScalar) {
1329 // Do nothing. Subclasses may do something.
1330 }
1331
1332 void SkCanvas::translate(SkScalar dx, SkScalar dy) { 1328 void SkCanvas::translate(SkScalar dx, SkScalar dy) {
1333 fDeviceCMDirty = true; 1329 SkMatrix m;
1334 fCachedLocalClipBoundsDirty = true; 1330 m.setTranslate(dx, dy);
1335 fMCRec->fMatrix->preTranslate(dx, dy); 1331 this->concat(m);
1336
1337 this->didTranslate(dx, dy);
1338 }
1339
1340 void SkCanvas::didScale(SkScalar, SkScalar) {
1341 // Do nothing. Subclasses may do something.
1342 } 1332 }
1343 1333
1344 void SkCanvas::scale(SkScalar sx, SkScalar sy) { 1334 void SkCanvas::scale(SkScalar sx, SkScalar sy) {
1345 fDeviceCMDirty = true; 1335 SkMatrix m;
1346 fCachedLocalClipBoundsDirty = true; 1336 m.setScale(sx, sy);
1347 fMCRec->fMatrix->preScale(sx, sy); 1337 this->concat(m);
1348
1349 this->didScale(sx, sy);
1350 }
1351
1352 void SkCanvas::didRotate(SkScalar) {
1353 // Do nothing. Subclasses may do something.
1354 } 1338 }
1355 1339
1356 void SkCanvas::rotate(SkScalar degrees) { 1340 void SkCanvas::rotate(SkScalar degrees) {
1357 fDeviceCMDirty = true; 1341 SkMatrix m;
1358 fCachedLocalClipBoundsDirty = true; 1342 m.setRotate(degrees);
1359 fMCRec->fMatrix->preRotate(degrees); 1343 this->concat(m);
1360
1361 this->didRotate(degrees);
1362 }
1363
1364 void SkCanvas::didSkew(SkScalar, SkScalar) {
1365 // Do nothing. Subclasses may do something.
1366 } 1344 }
1367 1345
1368 void SkCanvas::skew(SkScalar sx, SkScalar sy) { 1346 void SkCanvas::skew(SkScalar sx, SkScalar sy) {
1369 fDeviceCMDirty = true; 1347 SkMatrix m;
1370 fCachedLocalClipBoundsDirty = true; 1348 m.setSkew(sx, sy);
1371 fMCRec->fMatrix->preSkew(sx, sy); 1349 this->concat(m);
1372
1373 this->didSkew(sx, sy);
1374 } 1350 }
1375 1351
1376 void SkCanvas::didConcat(const SkMatrix&) { 1352 void SkCanvas::didConcat(const SkMatrix&) {
1377 // Do nothing. Subclasses may do something. 1353 // Do nothing. Subclasses may do something.
1378 } 1354 }
1379 1355
1380 void SkCanvas::concat(const SkMatrix& matrix) { 1356 void SkCanvas::concat(const SkMatrix& matrix) {
1357 if (matrix.isIdentity()) {
1358 return;
1359 }
1360
1381 fDeviceCMDirty = true; 1361 fDeviceCMDirty = true;
1382 fCachedLocalClipBoundsDirty = true; 1362 fCachedLocalClipBoundsDirty = true;
1383 fMCRec->fMatrix->preConcat(matrix); 1363 fMCRec->fMatrix->preConcat(matrix);
1384 1364
1385 this->didConcat(matrix); 1365 this->didConcat(matrix);
1386 } 1366 }
1387 1367
1388 void SkCanvas::didSetMatrix(const SkMatrix&) { 1368 void SkCanvas::didSetMatrix(const SkMatrix&) {
1389 // Do nothing. Subclasses may do something. 1369 // Do nothing. Subclasses may do something.
1390 } 1370 }
(...skipping 1283 matching lines...) Expand 10 before | Expand all | Expand 10 after
2674 if (!bitmap.installPixels(info, pixels, rowBytes)) { 2654 if (!bitmap.installPixels(info, pixels, rowBytes)) {
2675 return NULL; 2655 return NULL;
2676 } 2656 }
2677 2657
2678 // should this functionality be moved into allocPixels()? 2658 // should this functionality be moved into allocPixels()?
2679 if (!bitmap.info().isOpaque()) { 2659 if (!bitmap.info().isOpaque()) {
2680 bitmap.eraseColor(0); 2660 bitmap.eraseColor(0);
2681 } 2661 }
2682 return SkNEW_ARGS(SkCanvas, (bitmap)); 2662 return SkNEW_ARGS(SkCanvas, (bitmap));
2683 } 2663 }
OLDNEW
« no previous file with comments | « src/core/SkBBoxHierarchyRecord.cpp ('k') | src/core/SkPictureRecord.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698