OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2006 The Android Open Source Project | 2 * Copyright 2006 The Android Open Source Project |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #ifndef SkCanvas_DEFINED | 8 #ifndef SkCanvas_DEFINED |
9 #define SkCanvas_DEFINED | 9 #define SkCanvas_DEFINED |
10 | 10 |
(...skipping 405 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
416 | 416 |
417 /** Helper for setMatrix(identity). Sets the current matrix to identity. | 417 /** Helper for setMatrix(identity). Sets the current matrix to identity. |
418 */ | 418 */ |
419 void resetMatrix(); | 419 void resetMatrix(); |
420 | 420 |
421 /** | 421 /** |
422 * Modify the current clip with the specified rectangle. | 422 * Modify the current clip with the specified rectangle. |
423 * @param rect The rect to combine with the current clip | 423 * @param rect The rect to combine with the current clip |
424 * @param op The region op to apply to the current clip | 424 * @param op The region op to apply to the current clip |
425 * @param doAntiAlias true if the clip should be antialiased | 425 * @param doAntiAlias true if the clip should be antialiased |
426 * @return true if the canvas' clip is non-empty | |
427 */ | 426 */ |
428 virtual bool clipRect(const SkRect& rect, | 427 void clipRect(const SkRect& rect, |
429 SkRegion::Op op = SkRegion::kIntersect_Op, | 428 SkRegion::Op op = SkRegion::kIntersect_Op, |
430 bool doAntiAlias = false); | 429 bool doAntiAlias = false); |
431 | 430 |
432 /** | 431 /** |
433 * Modify the current clip with the specified SkRRect. | 432 * Modify the current clip with the specified SkRRect. |
434 * @param rrect The rrect to combine with the current clip | 433 * @param rrect The rrect to combine with the current clip |
435 * @param op The region op to apply to the current clip | 434 * @param op The region op to apply to the current clip |
436 * @param doAntiAlias true if the clip should be antialiased | 435 * @param doAntiAlias true if the clip should be antialiased |
437 * @return true if the canvas' clip is non-empty | |
438 */ | 436 */ |
439 virtual bool clipRRect(const SkRRect& rrect, | 437 void clipRRect(const SkRRect& rrect, |
440 SkRegion::Op op = SkRegion::kIntersect_Op, | 438 SkRegion::Op op = SkRegion::kIntersect_Op, |
441 bool doAntiAlias = false); | 439 bool doAntiAlias = false); |
442 | 440 |
443 /** | 441 /** |
444 * Modify the current clip with the specified path. | 442 * Modify the current clip with the specified path. |
445 * @param path The path to combine with the current clip | 443 * @param path The path to combine with the current clip |
446 * @param op The region op to apply to the current clip | 444 * @param op The region op to apply to the current clip |
447 * @param doAntiAlias true if the clip should be antialiased | 445 * @param doAntiAlias true if the clip should be antialiased |
448 * @return true if the canvas' new clip is non-empty | |
449 */ | 446 */ |
450 virtual bool clipPath(const SkPath& path, | 447 void clipPath(const SkPath& path, |
451 SkRegion::Op op = SkRegion::kIntersect_Op, | 448 SkRegion::Op op = SkRegion::kIntersect_Op, |
452 bool doAntiAlias = false); | 449 bool doAntiAlias = false); |
453 | 450 |
454 /** EXPERIMENTAL -- only used for testing | 451 /** EXPERIMENTAL -- only used for testing |
455 Set to false to force clips to be hard, even if doAntiAlias=true is | 452 Set to false to force clips to be hard, even if doAntiAlias=true is |
456 passed to clipRect or clipPath. | 453 passed to clipRect or clipPath. |
457 */ | 454 */ |
458 void setAllowSoftClip(bool allow) { | 455 void setAllowSoftClip(bool allow) { |
459 fAllowSoftClip = allow; | 456 fAllowSoftClip = allow; |
460 } | 457 } |
461 | 458 |
462 /** EXPERIMENTAL -- only used for testing | 459 /** EXPERIMENTAL -- only used for testing |
463 Set to simplify clip stack using path ops. | 460 Set to simplify clip stack using path ops. |
464 */ | 461 */ |
465 void setAllowSimplifyClip(bool allow) { | 462 void setAllowSimplifyClip(bool allow) { |
466 fAllowSimplifyClip = allow; | 463 fAllowSimplifyClip = allow; |
467 } | 464 } |
468 | 465 |
469 /** Modify the current clip with the specified region. Note that unlike | 466 /** Modify the current clip with the specified region. Note that unlike |
470 clipRect() and clipPath() which transform their arguments by the current | 467 clipRect() and clipPath() which transform their arguments by the current |
471 matrix, clipRegion() assumes its argument is already in device | 468 matrix, clipRegion() assumes its argument is already in device |
472 coordinates, and so no transformation is performed. | 469 coordinates, and so no transformation is performed. |
473 @param deviceRgn The region to apply to the current clip | 470 @param deviceRgn The region to apply to the current clip |
474 @param op The region op to apply to the current clip | 471 @param op The region op to apply to the current clip |
475 @return true if the canvas' new clip is non-empty | |
476 */ | 472 */ |
477 virtual bool clipRegion(const SkRegion& deviceRgn, | 473 void clipRegion(const SkRegion& deviceRgn, |
478 SkRegion::Op op = SkRegion::kIntersect_Op); | 474 SkRegion::Op op = SkRegion::kIntersect_Op); |
479 | 475 |
480 /** Helper for clipRegion(rgn, kReplace_Op). Sets the current clip to the | 476 /** Helper for clipRegion(rgn, kReplace_Op). Sets the current clip to the |
481 specified region. This does not intersect or in any other way account | 477 specified region. This does not intersect or in any other way account |
482 for the existing clip region. | 478 for the existing clip region. |
483 @param deviceRgn The region to copy into the current clip. | 479 @param deviceRgn The region to copy into the current clip. |
484 */ | 480 */ |
485 void setClipRegion(const SkRegion& deviceRgn) { | 481 void setClipRegion(const SkRegion& deviceRgn) { |
486 this->clipRegion(deviceRgn, SkRegion::kReplace_Op); | 482 this->clipRegion(deviceRgn, SkRegion::kReplace_Op); |
487 } | 483 } |
488 | 484 |
(...skipping 659 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1148 // Clip rectangle bounds. Called internally by saveLayer. | 1144 // Clip rectangle bounds. Called internally by saveLayer. |
1149 // returns false if the entire rectangle is entirely clipped out | 1145 // returns false if the entire rectangle is entirely clipped out |
1150 // If non-NULL, The imageFilter parameter will be used to expand the clip | 1146 // If non-NULL, The imageFilter parameter will be used to expand the clip |
1151 // and offscreen bounds for any margin required by the filter DAG. | 1147 // and offscreen bounds for any margin required by the filter DAG. |
1152 bool clipRectBounds(const SkRect* bounds, SaveFlags flags, | 1148 bool clipRectBounds(const SkRect* bounds, SaveFlags flags, |
1153 SkIRect* intersection, | 1149 SkIRect* intersection, |
1154 const SkImageFilter* imageFilter = NULL); | 1150 const SkImageFilter* imageFilter = NULL); |
1155 | 1151 |
1156 // Called by child classes that override clipPath and clipRRect to only | 1152 // Called by child classes that override clipPath and clipRRect to only |
1157 // track fast conservative clip bounds, rather than exact clips. | 1153 // track fast conservative clip bounds, rather than exact clips. |
1158 bool updateClipConservativelyUsingBounds(const SkRect&, SkRegion::Op, | 1154 void updateClipConservativelyUsingBounds(const SkRect&, SkRegion::Op, |
1159 bool inverseFilled); | 1155 bool inverseFilled); |
1160 | 1156 |
1161 // notify our surface (if we have one) that we are about to draw, so it | 1157 // notify our surface (if we have one) that we are about to draw, so it |
1162 // can perform copy-on-write or invalidate any cached images | 1158 // can perform copy-on-write or invalidate any cached images |
1163 void predrawNotify(); | 1159 void predrawNotify(); |
1164 | 1160 |
1165 virtual void onPushCull(const SkRect& cullRect); | 1161 virtual void onPushCull(const SkRect& cullRect); |
1166 virtual void onPopCull(); | 1162 virtual void onPopCull(); |
1167 | 1163 |
1168 private: | 1164 private: |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1372 bool asROBitmap(SkBitmap*) const; | 1368 bool asROBitmap(SkBitmap*) const; |
1373 | 1369 |
1374 private: | 1370 private: |
1375 SkBitmap fBitmap; // used if peekPixels() fails | 1371 SkBitmap fBitmap; // used if peekPixels() fails |
1376 const void* fAddr; // NULL on failure | 1372 const void* fAddr; // NULL on failure |
1377 SkImageInfo fInfo; | 1373 SkImageInfo fInfo; |
1378 size_t fRowBytes; | 1374 size_t fRowBytes; |
1379 }; | 1375 }; |
1380 | 1376 |
1381 #endif | 1377 #endif |
OLD | NEW |