| 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 |
| 11 #include "SkTypes.h" | 11 #include "SkTypes.h" |
| 12 #include "SkBitmap.h" | 12 #include "SkBitmap.h" |
| 13 #include "SkDeque.h" | 13 #include "SkDeque.h" |
| 14 #include "SkClipStack.h" | 14 #include "SkClipStack.h" |
| 15 #include "SkPaint.h" | 15 #include "SkPaint.h" |
| 16 #include "SkRefCnt.h" | 16 #include "SkRefCnt.h" |
| 17 #include "SkPath.h" | 17 #include "SkPath.h" |
| 18 #include "SkRegion.h" | 18 #include "SkRegion.h" |
| 19 #include "SkXfermode.h" | 19 #include "SkXfermode.h" |
| 20 | 20 |
| 21 //#define SK_SUPPORT_LEGACY_WRITEPIXELSCONFIG | 21 //#define SK_SUPPORT_LEGACY_WRITEPIXELSCONFIG |
| 22 //#define SK_SUPPORT_LEGACY_GETCLIPTYPE |
| 23 //#define SK_SUPPORT_LEGACY_GETTOTALCLIP |
| 22 | 24 |
| 23 class SkBounder; | 25 class SkBounder; |
| 24 class SkBaseDevice; | 26 class SkBaseDevice; |
| 25 class SkDraw; | 27 class SkDraw; |
| 26 class SkDrawFilter; | 28 class SkDrawFilter; |
| 27 class SkMetaData; | 29 class SkMetaData; |
| 28 class SkPicture; | 30 class SkPicture; |
| 29 class SkRRect; | 31 class SkRRect; |
| 30 class SkSurface; | 32 class SkSurface; |
| 31 class SkSurface_Base; | 33 class SkSurface_Base; |
| (...skipping 1018 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1050 | 1052 |
| 1051 /** | 1053 /** |
| 1052 * Return true if the current clip is empty (i.e. nothing will draw). | 1054 * Return true if the current clip is empty (i.e. nothing will draw). |
| 1053 * Note: this is not always a free call, so it should not be used | 1055 * Note: this is not always a free call, so it should not be used |
| 1054 * more often than necessary. However, once the canvas has computed this | 1056 * more often than necessary. However, once the canvas has computed this |
| 1055 * result, subsequent calls will be cheap (until the clip state changes, | 1057 * result, subsequent calls will be cheap (until the clip state changes, |
| 1056 * which can happen on any clip..() or restore() call. | 1058 * which can happen on any clip..() or restore() call. |
| 1057 */ | 1059 */ |
| 1058 virtual bool isClipEmpty() const; | 1060 virtual bool isClipEmpty() const; |
| 1059 | 1061 |
| 1062 /** |
| 1063 * Returns true if the current clip is just a (non-empty) rectangle. |
| 1064 * Returns false if the clip is empty, or if it is complex. |
| 1065 */ |
| 1066 virtual bool isClipRect() const; |
| 1067 |
| 1060 /** Return the current matrix on the canvas. | 1068 /** Return the current matrix on the canvas. |
| 1061 This does not account for the translate in any of the devices. | 1069 This does not account for the translate in any of the devices. |
| 1062 @return The current matrix on the canvas. | 1070 @return The current matrix on the canvas. |
| 1063 */ | 1071 */ |
| 1064 const SkMatrix& getTotalMatrix() const; | 1072 const SkMatrix& getTotalMatrix() const; |
| 1065 | 1073 |
| 1074 #ifdef SK_SUPPORT_LEGACY_GETCLIPTYPE |
| 1066 enum ClipType { | 1075 enum ClipType { |
| 1067 kEmpty_ClipType = 0, | 1076 kEmpty_ClipType = 0, |
| 1068 kRect_ClipType, | 1077 kRect_ClipType, |
| 1069 kComplex_ClipType | 1078 kComplex_ClipType |
| 1070 }; | 1079 }; |
| 1071 | |
| 1072 /** Returns a description of the total clip; may be cheaper than | 1080 /** Returns a description of the total clip; may be cheaper than |
| 1073 getting the clip and querying it directly. | 1081 getting the clip and querying it directly. |
| 1074 */ | 1082 */ |
| 1075 virtual ClipType getClipType() const; | 1083 virtual ClipType getClipType() const; |
| 1084 #endif |
| 1076 | 1085 |
| 1086 #ifdef SK_SUPPORT_LEGACY_GETTOTALCLIP |
| 1077 /** DEPRECATED -- need to move this guy to private/friend | 1087 /** DEPRECATED -- need to move this guy to private/friend |
| 1078 * Return the current device clip (concatenation of all clip calls). | 1088 * Return the current device clip (concatenation of all clip calls). |
| 1079 * This does not account for the translate in any of the devices. | 1089 * This does not account for the translate in any of the devices. |
| 1080 * @return the current device clip (concatenation of all clip calls). | 1090 * @return the current device clip (concatenation of all clip calls). |
| 1081 */ | 1091 */ |
| 1082 const SkRegion& getTotalClip() const; | 1092 const SkRegion& getTotalClip() const; |
| 1093 #endif |
| 1083 | 1094 |
| 1084 /** Return the clip stack. The clip stack stores all the individual | 1095 /** Return the clip stack. The clip stack stores all the individual |
| 1085 * clips organized by the save/restore frame in which they were | 1096 * clips organized by the save/restore frame in which they were |
| 1086 * added. | 1097 * added. |
| 1087 * @return the current clip stack ("list" of individual clip elements) | 1098 * @return the current clip stack ("list" of individual clip elements) |
| 1088 */ | 1099 */ |
| 1089 const SkClipStack* getClipStack() const { | 1100 const SkClipStack* getClipStack() const { |
| 1090 return &fClipStack; | 1101 return &fClipStack; |
| 1091 } | 1102 } |
| 1092 | 1103 |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1138 // having to expose that class def to the public. There is an assert | 1149 // having to expose that class def to the public. There is an assert |
| 1139 // in our constructor to ensure that fStorage is large enough | 1150 // in our constructor to ensure that fStorage is large enough |
| 1140 // (though needs to be a compile-time-assert!). We use intptr_t to work | 1151 // (though needs to be a compile-time-assert!). We use intptr_t to work |
| 1141 // safely with 32 and 64 bit machines (to ensure the storage is enough) | 1152 // safely with 32 and 64 bit machines (to ensure the storage is enough) |
| 1142 intptr_t fStorage[32]; | 1153 intptr_t fStorage[32]; |
| 1143 class SkDrawIter* fImpl; // this points at fStorage | 1154 class SkDrawIter* fImpl; // this points at fStorage |
| 1144 SkPaint fDefaultPaint; | 1155 SkPaint fDefaultPaint; |
| 1145 bool fDone; | 1156 bool fDone; |
| 1146 }; | 1157 }; |
| 1147 | 1158 |
| 1159 // don't call |
| 1160 const SkRegion& internal_private_getTotalClip() const; |
| 1161 // don't call |
| 1162 void internal_private_getTotalClipAsPath(SkPath*) const; |
| 1163 |
| 1148 protected: | 1164 protected: |
| 1149 // default impl defers to getDevice()->newSurface(info) | 1165 // default impl defers to getDevice()->newSurface(info) |
| 1150 virtual SkSurface* onNewSurface(const SkImageInfo&); | 1166 virtual SkSurface* onNewSurface(const SkImageInfo&); |
| 1151 | 1167 |
| 1152 // default impl defers to its device | 1168 // default impl defers to its device |
| 1153 virtual const void* onPeekPixels(SkImageInfo*, size_t* rowBytes); | 1169 virtual const void* onPeekPixels(SkImageInfo*, size_t* rowBytes); |
| 1154 | 1170 |
| 1155 virtual void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&); | 1171 virtual void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&); |
| 1156 | 1172 |
| 1157 enum ClipEdgeStyle { | 1173 enum ClipEdgeStyle { |
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1397 bool asROBitmap(SkBitmap*) const; | 1413 bool asROBitmap(SkBitmap*) const; |
| 1398 | 1414 |
| 1399 private: | 1415 private: |
| 1400 SkBitmap fBitmap; // used if peekPixels() fails | 1416 SkBitmap fBitmap; // used if peekPixels() fails |
| 1401 const void* fAddr; // NULL on failure | 1417 const void* fAddr; // NULL on failure |
| 1402 SkImageInfo fInfo; | 1418 SkImageInfo fInfo; |
| 1403 size_t fRowBytes; | 1419 size_t fRowBytes; |
| 1404 }; | 1420 }; |
| 1405 | 1421 |
| 1406 #endif | 1422 #endif |
| OLD | NEW |