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

Side by Side Diff: src/pipe/SkGPipeWrite.cpp

Issue 183453002: add new onClip* methods to SkCanvas (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: remove debug 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/SkPictureRecord.cpp ('k') | src/utils/SkCanvasStack.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 2011 Google Inc. 3 * Copyright 2011 Google Inc.
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 #include "SkAnnotation.h" 9 #include "SkAnnotation.h"
10 #include "SkBitmapDevice.h" 10 #include "SkBitmapDevice.h"
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 virtual int saveLayer(const SkRect* bounds, const SkPaint*, 233 virtual int saveLayer(const SkRect* bounds, const SkPaint*,
234 SaveFlags) SK_OVERRIDE; 234 SaveFlags) SK_OVERRIDE;
235 virtual void restore() SK_OVERRIDE; 235 virtual void restore() SK_OVERRIDE;
236 virtual bool isDrawingToLayer() const SK_OVERRIDE; 236 virtual bool isDrawingToLayer() const SK_OVERRIDE;
237 virtual bool translate(SkScalar dx, SkScalar dy) SK_OVERRIDE; 237 virtual bool translate(SkScalar dx, SkScalar dy) SK_OVERRIDE;
238 virtual bool scale(SkScalar sx, SkScalar sy) SK_OVERRIDE; 238 virtual bool scale(SkScalar sx, SkScalar sy) SK_OVERRIDE;
239 virtual bool rotate(SkScalar degrees) SK_OVERRIDE; 239 virtual bool rotate(SkScalar degrees) SK_OVERRIDE;
240 virtual bool skew(SkScalar sx, SkScalar sy) SK_OVERRIDE; 240 virtual bool skew(SkScalar sx, SkScalar sy) SK_OVERRIDE;
241 virtual bool concat(const SkMatrix& matrix) SK_OVERRIDE; 241 virtual bool concat(const SkMatrix& matrix) SK_OVERRIDE;
242 virtual void setMatrix(const SkMatrix& matrix) SK_OVERRIDE; 242 virtual void setMatrix(const SkMatrix& matrix) SK_OVERRIDE;
243 virtual bool clipRect(const SkRect&, SkRegion::Op op, bool doAntiAlias = fal se) SK_OVERRIDE;
244 virtual bool clipRRect(const SkRRect&, SkRegion::Op op, bool doAntiAlias = f alse) SK_OVERRIDE;
245 virtual bool clipPath(const SkPath& path, SkRegion::Op op,
246 bool doAntiAlias = false) SK_OVERRIDE;
247 virtual bool clipRegion(const SkRegion& region, SkRegion::Op op) SK_OVERRIDE ;
248 virtual void clear(SkColor) SK_OVERRIDE; 243 virtual void clear(SkColor) SK_OVERRIDE;
249 virtual void drawPaint(const SkPaint& paint) SK_OVERRIDE; 244 virtual void drawPaint(const SkPaint& paint) SK_OVERRIDE;
250 virtual void drawPoints(PointMode, size_t count, const SkPoint pts[], 245 virtual void drawPoints(PointMode, size_t count, const SkPoint pts[],
251 const SkPaint&) SK_OVERRIDE; 246 const SkPaint&) SK_OVERRIDE;
252 virtual void drawOval(const SkRect&, const SkPaint&) SK_OVERRIDE; 247 virtual void drawOval(const SkRect&, const SkPaint&) SK_OVERRIDE;
253 virtual void drawRect(const SkRect& rect, const SkPaint&) SK_OVERRIDE; 248 virtual void drawRect(const SkRect& rect, const SkPaint&) SK_OVERRIDE;
254 virtual void drawRRect(const SkRRect&, const SkPaint&) SK_OVERRIDE; 249 virtual void drawRRect(const SkRRect&, const SkPaint&) SK_OVERRIDE;
255 virtual void drawPath(const SkPath& path, const SkPaint&) SK_OVERRIDE; 250 virtual void drawPath(const SkPath& path, const SkPaint&) SK_OVERRIDE;
256 virtual void drawBitmap(const SkBitmap&, SkScalar left, SkScalar top, 251 virtual void drawBitmap(const SkBitmap&, SkScalar left, SkScalar top,
257 const SkPaint*) SK_OVERRIDE; 252 const SkPaint*) SK_OVERRIDE;
(...skipping 29 matching lines...) Expand all
287 282
288 /** 283 /**
289 * Flatten an SkBitmap to send to the reader, where it will be referenced 284 * Flatten an SkBitmap to send to the reader, where it will be referenced
290 * according to slot. 285 * according to slot.
291 */ 286 */
292 bool shuttleBitmap(const SkBitmap&, int32_t slot); 287 bool shuttleBitmap(const SkBitmap&, int32_t slot);
293 288
294 protected: 289 protected:
295 virtual void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) SK _OVERRIDE; 290 virtual void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) SK _OVERRIDE;
296 291
292 virtual void onClipRect(const SkRect&, SkRegion::Op, ClipEdgeStyle) SK_OVERR IDE;
293 virtual void onClipRRect(const SkRRect&, SkRegion::Op, ClipEdgeStyle) SK_OVE RRIDE;
294 virtual void onClipPath(const SkPath&, SkRegion::Op, ClipEdgeStyle) SK_OVERR IDE;
295 virtual void onClipRegion(const SkRegion&, SkRegion::Op) SK_OVERRIDE;
296
297 private: 297 private:
298 enum { 298 enum {
299 kNoSaveLayer = -1, 299 kNoSaveLayer = -1,
300 }; 300 };
301 SkNamedFactorySet* fFactorySet; 301 SkNamedFactorySet* fFactorySet;
302 int fFirstSaveLayerStackLevel; 302 int fFirstSaveLayerStackLevel;
303 SkBitmapHeap* fBitmapHeap; 303 SkBitmapHeap* fBitmapHeap;
304 SkGPipeController* fController; 304 SkGPipeController* fController;
305 SkWriter32& fWriter; 305 SkWriter32& fWriter;
306 size_t fBlockSize; // amount allocated for writer 306 size_t fBlockSize; // amount allocated for writer
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
628 628
629 void SkGPipeCanvas::setMatrix(const SkMatrix& matrix) { 629 void SkGPipeCanvas::setMatrix(const SkMatrix& matrix) {
630 NOTIFY_SETUP(this); 630 NOTIFY_SETUP(this);
631 if (this->needOpBytes(matrix.writeToMemory(NULL))) { 631 if (this->needOpBytes(matrix.writeToMemory(NULL))) {
632 this->writeOp(kSetMatrix_DrawOp); 632 this->writeOp(kSetMatrix_DrawOp);
633 fWriter.writeMatrix(matrix); 633 fWriter.writeMatrix(matrix);
634 } 634 }
635 this->INHERITED::setMatrix(matrix); 635 this->INHERITED::setMatrix(matrix);
636 } 636 }
637 637
638 bool SkGPipeCanvas::clipRect(const SkRect& rect, SkRegion::Op rgnOp, 638 void SkGPipeCanvas::onClipRect(const SkRect& rect, SkRegion::Op rgnOp,
639 bool doAntiAlias) { 639 ClipEdgeStyle edgeStyle) {
640 NOTIFY_SETUP(this); 640 NOTIFY_SETUP(this);
641 if (this->needOpBytes(sizeof(SkRect))) { 641 if (this->needOpBytes(sizeof(SkRect))) {
642 unsigned flags = doAntiAlias & kClip_HasAntiAlias_DrawOpFlag; 642 unsigned flags = 0;
643 if (kSoft_ClipEdgeStyle == edgeStyle) {
644 flags = kClip_HasAntiAlias_DrawOpFlag;
645 }
643 this->writeOp(kClipRect_DrawOp, flags, rgnOp); 646 this->writeOp(kClipRect_DrawOp, flags, rgnOp);
644 fWriter.writeRect(rect); 647 fWriter.writeRect(rect);
645 } 648 }
646 return this->INHERITED::clipRect(rect, rgnOp, doAntiAlias); 649 this->INHERITED::onClipRect(rect, rgnOp, edgeStyle);
647 } 650 }
648 651
649 bool SkGPipeCanvas::clipRRect(const SkRRect& rrect, SkRegion::Op rgnOp, 652 void SkGPipeCanvas::onClipRRect(const SkRRect& rrect, SkRegion::Op rgnOp,
650 bool doAntiAlias) { 653 ClipEdgeStyle edgeStyle) {
651 NOTIFY_SETUP(this); 654 NOTIFY_SETUP(this);
652 if (this->needOpBytes(kSizeOfFlatRRect)) { 655 if (this->needOpBytes(kSizeOfFlatRRect)) {
653 unsigned flags = doAntiAlias & kClip_HasAntiAlias_DrawOpFlag; 656 unsigned flags = 0;
657 if (kSoft_ClipEdgeStyle == edgeStyle) {
658 flags = kClip_HasAntiAlias_DrawOpFlag;
659 }
654 this->writeOp(kClipRRect_DrawOp, flags, rgnOp); 660 this->writeOp(kClipRRect_DrawOp, flags, rgnOp);
655 fWriter.writeRRect(rrect); 661 fWriter.writeRRect(rrect);
656 } 662 }
657 return this->INHERITED::clipRRect(rrect, rgnOp, doAntiAlias); 663 this->INHERITED::onClipRRect(rrect, rgnOp, edgeStyle);
658 } 664 }
659 665
660 bool SkGPipeCanvas::clipPath(const SkPath& path, SkRegion::Op rgnOp, 666 void SkGPipeCanvas::onClipPath(const SkPath& path, SkRegion::Op rgnOp,
661 bool doAntiAlias) { 667 ClipEdgeStyle edgeStyle) {
662 NOTIFY_SETUP(this); 668 NOTIFY_SETUP(this);
663 if (this->needOpBytes(path.writeToMemory(NULL))) { 669 if (this->needOpBytes(path.writeToMemory(NULL))) {
664 unsigned flags = doAntiAlias & kClip_HasAntiAlias_DrawOpFlag; 670 unsigned flags = 0;
671 if (kSoft_ClipEdgeStyle == edgeStyle) {
672 flags = kClip_HasAntiAlias_DrawOpFlag;
673 }
665 this->writeOp(kClipPath_DrawOp, flags, rgnOp); 674 this->writeOp(kClipPath_DrawOp, flags, rgnOp);
666 fWriter.writePath(path); 675 fWriter.writePath(path);
667 } 676 }
668 // we just pass on the bounds of the path 677 // we just pass on the bounds of the path
669 return this->INHERITED::clipRect(path.getBounds(), rgnOp, doAntiAlias); 678 this->INHERITED::onClipRect(path.getBounds(), rgnOp, edgeStyle);
670 } 679 }
671 680
672 bool SkGPipeCanvas::clipRegion(const SkRegion& region, SkRegion::Op rgnOp) { 681 void SkGPipeCanvas::onClipRegion(const SkRegion& region, SkRegion::Op rgnOp) {
673 NOTIFY_SETUP(this); 682 NOTIFY_SETUP(this);
674 if (this->needOpBytes(region.writeToMemory(NULL))) { 683 if (this->needOpBytes(region.writeToMemory(NULL))) {
675 this->writeOp(kClipRegion_DrawOp, 0, rgnOp); 684 this->writeOp(kClipRegion_DrawOp, 0, rgnOp);
676 fWriter.writeRegion(region); 685 fWriter.writeRegion(region);
677 } 686 }
678 return this->INHERITED::clipRegion(region, rgnOp); 687 this->INHERITED::onClipRegion(region, rgnOp);
679 } 688 }
680 689
681 /////////////////////////////////////////////////////////////////////////////// 690 ///////////////////////////////////////////////////////////////////////////////
682 691
683 void SkGPipeCanvas::clear(SkColor color) { 692 void SkGPipeCanvas::clear(SkColor color) {
684 NOTIFY_SETUP(this); 693 NOTIFY_SETUP(this);
685 unsigned flags = 0; 694 unsigned flags = 0;
686 if (color) { 695 if (color) {
687 flags |= kClear_HasColor_DrawOpFlag; 696 flags |= kClear_HasColor_DrawOpFlag;
688 } 697 }
(...skipping 556 matching lines...) Expand 10 before | Expand all | Expand 10 after
1245 return fCanvas->shuttleBitmap(bitmap, slot); 1254 return fCanvas->shuttleBitmap(bitmap, slot);
1246 } 1255 }
1247 1256
1248 void BitmapShuttle::removeCanvas() { 1257 void BitmapShuttle::removeCanvas() {
1249 if (NULL == fCanvas) { 1258 if (NULL == fCanvas) {
1250 return; 1259 return;
1251 } 1260 }
1252 fCanvas->unref(); 1261 fCanvas->unref();
1253 fCanvas = NULL; 1262 fCanvas = NULL;
1254 } 1263 }
OLDNEW
« no previous file with comments | « src/core/SkPictureRecord.cpp ('k') | src/utils/SkCanvasStack.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698