OLD | NEW |
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 1198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1209 tmpUnfiltered); | 1209 tmpUnfiltered); |
1210 } | 1210 } |
1211 } else { | 1211 } else { |
1212 iter.fDevice->drawSprite(iter, bitmap, pos.x(), pos.y(), *paint); | 1212 iter.fDevice->drawSprite(iter, bitmap, pos.x(), pos.y(), *paint); |
1213 } | 1213 } |
1214 } | 1214 } |
1215 LOOPER_END | 1215 LOOPER_END |
1216 } | 1216 } |
1217 | 1217 |
1218 ///////////////////////////////////////////////////////////////////////////// | 1218 ///////////////////////////////////////////////////////////////////////////// |
| 1219 void SkCanvas::didTranslate(SkScalar, SkScalar) { |
| 1220 // Do nothing. Subclasses may do something. |
| 1221 } |
1219 | 1222 |
1220 bool SkCanvas::translate(SkScalar dx, SkScalar dy) { | 1223 bool SkCanvas::translate(SkScalar dx, SkScalar dy) { |
1221 fDeviceCMDirty = true; | 1224 fDeviceCMDirty = true; |
1222 fCachedLocalClipBoundsDirty = true; | 1225 fCachedLocalClipBoundsDirty = true; |
1223 return fMCRec->fMatrix->preTranslate(dx, dy); | 1226 bool res = fMCRec->fMatrix->preTranslate(dx, dy); |
| 1227 |
| 1228 this->didTranslate(dx, dy); |
| 1229 return res; |
| 1230 } |
| 1231 |
| 1232 void SkCanvas::didScale(SkScalar, SkScalar) { |
| 1233 // Do nothing. Subclasses may do something. |
1224 } | 1234 } |
1225 | 1235 |
1226 bool SkCanvas::scale(SkScalar sx, SkScalar sy) { | 1236 bool SkCanvas::scale(SkScalar sx, SkScalar sy) { |
1227 fDeviceCMDirty = true; | 1237 fDeviceCMDirty = true; |
1228 fCachedLocalClipBoundsDirty = true; | 1238 fCachedLocalClipBoundsDirty = true; |
1229 return fMCRec->fMatrix->preScale(sx, sy); | 1239 bool res = fMCRec->fMatrix->preScale(sx, sy); |
| 1240 |
| 1241 this->didScale(sx, sy); |
| 1242 return res; |
| 1243 } |
| 1244 |
| 1245 void SkCanvas::didRotate(SkScalar) { |
| 1246 // Do nothing. Subclasses may do something. |
1230 } | 1247 } |
1231 | 1248 |
1232 bool SkCanvas::rotate(SkScalar degrees) { | 1249 bool SkCanvas::rotate(SkScalar degrees) { |
1233 fDeviceCMDirty = true; | 1250 fDeviceCMDirty = true; |
1234 fCachedLocalClipBoundsDirty = true; | 1251 fCachedLocalClipBoundsDirty = true; |
1235 return fMCRec->fMatrix->preRotate(degrees); | 1252 bool res = fMCRec->fMatrix->preRotate(degrees); |
| 1253 |
| 1254 this->didRotate(degrees); |
| 1255 return res; |
| 1256 } |
| 1257 |
| 1258 void SkCanvas::didSkew(SkScalar, SkScalar) { |
| 1259 // Do nothing. Subclasses may do something. |
1236 } | 1260 } |
1237 | 1261 |
1238 bool SkCanvas::skew(SkScalar sx, SkScalar sy) { | 1262 bool SkCanvas::skew(SkScalar sx, SkScalar sy) { |
1239 fDeviceCMDirty = true; | 1263 fDeviceCMDirty = true; |
1240 fCachedLocalClipBoundsDirty = true; | 1264 fCachedLocalClipBoundsDirty = true; |
1241 return fMCRec->fMatrix->preSkew(sx, sy); | 1265 bool res = fMCRec->fMatrix->preSkew(sx, sy); |
| 1266 |
| 1267 this->didSkew(sx, sy); |
| 1268 return res; |
| 1269 } |
| 1270 |
| 1271 void SkCanvas::didConcat(const SkMatrix&) { |
| 1272 // Do nothing. Subclasses may do something. |
1242 } | 1273 } |
1243 | 1274 |
1244 bool SkCanvas::concat(const SkMatrix& matrix) { | 1275 bool SkCanvas::concat(const SkMatrix& matrix) { |
1245 fDeviceCMDirty = true; | 1276 fDeviceCMDirty = true; |
1246 fCachedLocalClipBoundsDirty = true; | 1277 fCachedLocalClipBoundsDirty = true; |
1247 return fMCRec->fMatrix->preConcat(matrix); | 1278 bool res = fMCRec->fMatrix->preConcat(matrix); |
| 1279 |
| 1280 this->didConcat(matrix); |
| 1281 return res; |
| 1282 } |
| 1283 |
| 1284 void SkCanvas::didSetMatrix(const SkMatrix&) { |
| 1285 // Do nothing. Subclasses may do something. |
1248 } | 1286 } |
1249 | 1287 |
1250 void SkCanvas::setMatrix(const SkMatrix& matrix) { | 1288 void SkCanvas::setMatrix(const SkMatrix& matrix) { |
1251 fDeviceCMDirty = true; | 1289 fDeviceCMDirty = true; |
1252 fCachedLocalClipBoundsDirty = true; | 1290 fCachedLocalClipBoundsDirty = true; |
1253 *fMCRec->fMatrix = matrix; | 1291 *fMCRec->fMatrix = matrix; |
| 1292 this->didSetMatrix(matrix); |
1254 } | 1293 } |
1255 | 1294 |
1256 // this is not virtual, so it must call a virtual method so that subclasses | |
1257 // will see its action | |
1258 void SkCanvas::resetMatrix() { | 1295 void SkCanvas::resetMatrix() { |
1259 SkMatrix matrix; | 1296 SkMatrix matrix; |
1260 | 1297 |
1261 matrix.reset(); | 1298 matrix.reset(); |
1262 this->setMatrix(matrix); | 1299 this->setMatrix(matrix); |
1263 } | 1300 } |
1264 | 1301 |
1265 ////////////////////////////////////////////////////////////////////////////// | 1302 ////////////////////////////////////////////////////////////////////////////// |
1266 | 1303 |
1267 void SkCanvas::clipRect(const SkRect& rect, SkRegion::Op op, bool doAA) { | 1304 void SkCanvas::clipRect(const SkRect& rect, SkRegion::Op op, bool doAA) { |
(...skipping 1233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2501 if (!bitmap.allocPixels(info)) { | 2538 if (!bitmap.allocPixels(info)) { |
2502 return NULL; | 2539 return NULL; |
2503 } | 2540 } |
2504 | 2541 |
2505 // should this functionality be moved into allocPixels()? | 2542 // should this functionality be moved into allocPixels()? |
2506 if (!bitmap.info().isOpaque()) { | 2543 if (!bitmap.info().isOpaque()) { |
2507 bitmap.eraseColor(0); | 2544 bitmap.eraseColor(0); |
2508 } | 2545 } |
2509 return SkNEW_ARGS(SkCanvas, (bitmap)); | 2546 return SkNEW_ARGS(SkCanvas, (bitmap)); |
2510 } | 2547 } |
OLD | NEW |