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 579 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
590 * canvas.clipRect(hugeRect, kReplace_Op); | 590 * canvas.clipRect(hugeRect, kReplace_Op); |
591 * paint.setColor(color); | 591 * paint.setColor(color); |
592 * paint.setXfermodeMode(kSrc_Mode); | 592 * paint.setXfermodeMode(kSrc_Mode); |
593 * canvas.drawPaint(paint); | 593 * canvas.drawPaint(paint); |
594 * canvas.restore(); | 594 * canvas.restore(); |
595 * though it is almost always much more efficient. | 595 * though it is almost always much more efficient. |
596 */ | 596 */ |
597 virtual void clear(SkColor); | 597 virtual void clear(SkColor); |
598 | 598 |
599 /** | 599 /** |
| 600 * This makes the contents of the canvas undefined. Subsequent calls that |
| 601 * require reading the canvas contents will produce undefined results. Examp
les |
| 602 * include blending and readPixels. The actual implementation is backend- |
| 603 * dependent and one legal implementation is to do nothing. Like clear(), th
is |
| 604 * ignores the clip. |
| 605 * |
| 606 * This function should only be called if the caller intends to subsequently |
| 607 * draw to the canvas. The canvas may do real work at discard() time in orde
r |
| 608 * to optimize performance on subsequent draws. Thus, if you call this and t
hen |
| 609 * never draw to the canvas subsequently you may pay a perfomance penalty. |
| 610 */ |
| 611 void discard() { this->onDiscard(); } |
| 612 |
| 613 /** |
600 * Fill the entire canvas' bitmap (restricted to the current clip) with the | 614 * Fill the entire canvas' bitmap (restricted to the current clip) with the |
601 * specified paint. | 615 * specified paint. |
602 * @param paint The paint used to fill the canvas | 616 * @param paint The paint used to fill the canvas |
603 */ | 617 */ |
604 virtual void drawPaint(const SkPaint& paint); | 618 virtual void drawPaint(const SkPaint& paint); |
605 | 619 |
606 enum PointMode { | 620 enum PointMode { |
607 /** drawPoints draws each point separately */ | 621 /** drawPoints draws each point separately */ |
608 kPoints_PointMode, | 622 kPoints_PointMode, |
609 /** drawPoints draws each pair of points as a line segment */ | 623 /** drawPoints draws each pair of points as a line segment */ |
(...skipping 559 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1169 enum ClipEdgeStyle { | 1183 enum ClipEdgeStyle { |
1170 kHard_ClipEdgeStyle, | 1184 kHard_ClipEdgeStyle, |
1171 kSoft_ClipEdgeStyle | 1185 kSoft_ClipEdgeStyle |
1172 }; | 1186 }; |
1173 | 1187 |
1174 virtual void onClipRect(const SkRect& rect, SkRegion::Op op, ClipEdgeStyle e
dgeStyle); | 1188 virtual void onClipRect(const SkRect& rect, SkRegion::Op op, ClipEdgeStyle e
dgeStyle); |
1175 virtual void onClipRRect(const SkRRect& rrect, SkRegion::Op op, ClipEdgeStyl
e edgeStyle); | 1189 virtual void onClipRRect(const SkRRect& rrect, SkRegion::Op op, ClipEdgeStyl
e edgeStyle); |
1176 virtual void onClipPath(const SkPath& path, SkRegion::Op op, ClipEdgeStyle e
dgeStyle); | 1190 virtual void onClipPath(const SkPath& path, SkRegion::Op op, ClipEdgeStyle e
dgeStyle); |
1177 virtual void onClipRegion(const SkRegion& deviceRgn, SkRegion::Op op); | 1191 virtual void onClipRegion(const SkRegion& deviceRgn, SkRegion::Op op); |
1178 | 1192 |
| 1193 virtual void onDiscard(); |
| 1194 |
1179 // Returns the canvas to be used by DrawIter. Default implementation | 1195 // Returns the canvas to be used by DrawIter. Default implementation |
1180 // returns this. Subclasses that encapsulate an indirect canvas may | 1196 // returns this. Subclasses that encapsulate an indirect canvas may |
1181 // need to overload this method. The impl must keep track of this, as it | 1197 // need to overload this method. The impl must keep track of this, as it |
1182 // is not released or deleted by the caller. | 1198 // is not released or deleted by the caller. |
1183 virtual SkCanvas* canvasForDrawIter(); | 1199 virtual SkCanvas* canvasForDrawIter(); |
1184 | 1200 |
1185 // Clip rectangle bounds. Called internally by saveLayer. | 1201 // Clip rectangle bounds. Called internally by saveLayer. |
1186 // returns false if the entire rectangle is entirely clipped out | 1202 // returns false if the entire rectangle is entirely clipped out |
1187 // If non-NULL, The imageFilter parameter will be used to expand the clip | 1203 // If non-NULL, The imageFilter parameter will be used to expand the clip |
1188 // and offscreen bounds for any margin required by the filter DAG. | 1204 // and offscreen bounds for any margin required by the filter DAG. |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1413 bool asROBitmap(SkBitmap*) const; | 1429 bool asROBitmap(SkBitmap*) const; |
1414 | 1430 |
1415 private: | 1431 private: |
1416 SkBitmap fBitmap; // used if peekPixels() fails | 1432 SkBitmap fBitmap; // used if peekPixels() fails |
1417 const void* fAddr; // NULL on failure | 1433 const void* fAddr; // NULL on failure |
1418 SkImageInfo fInfo; | 1434 SkImageInfo fInfo; |
1419 size_t fRowBytes; | 1435 size_t fRowBytes; |
1420 }; | 1436 }; |
1421 | 1437 |
1422 #endif | 1438 #endif |
OLD | NEW |