Chromium Code Reviews| 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 873 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 884 virtual void beginCommentGroup(const char* description) { | 884 virtual void beginCommentGroup(const char* description) { |
| 885 // do nothing. Subclasses may do something | 885 // do nothing. Subclasses may do something |
| 886 } | 886 } |
| 887 virtual void addComment(const char* kywd, const char* value) { | 887 virtual void addComment(const char* kywd, const char* value) { |
| 888 // do nothing. Subclasses may do something | 888 // do nothing. Subclasses may do something |
| 889 } | 889 } |
| 890 virtual void endCommentGroup() { | 890 virtual void endCommentGroup() { |
| 891 // do nothing. Subclasses may do something | 891 // do nothing. Subclasses may do something |
| 892 } | 892 } |
| 893 | 893 |
| 894 /** | |
| 895 * This call asserts that subsequent draw operations (up to the matching po pCull() call) | |
| 896 * are fully contained within the given bounding box. The assertion is not enforced, | |
| 897 * but the information might be used to quick-reject command blocks, so an incorrect | |
| 898 * bounding box may result in incomplete rendering. | |
| 899 */ | |
| 900 void pushCull(const SkRect& cullRect) { | |
| 901 fCullCount += 1; | |
| 902 this->onPushCull(cullRect); | |
| 903 } | |
| 894 | 904 |
| 905 /** | |
| 906 * Terminates the current culling block, and restores the previous one (if any). | |
| 907 */ | |
| 908 void popCull() { | |
| 909 SkASSERT(fCullCount > 0); | |
| 910 if (fCullCount > 0) { | |
|
caryclark
2014/02/14 14:54:35
since you have the assert, do you also need the te
f(malita)
2014/02/20 02:37:26
We guard against underflow for restore(), so I fig
| |
| 911 fCullCount -= 1; | |
| 912 this->onPopCull(); | |
| 913 } | |
| 914 } | |
|
reed1
2014/02/14 14:39:06
I wonder if we'll want similar helpers to what sav
| |
| 895 ////////////////////////////////////////////////////////////////////////// | 915 ////////////////////////////////////////////////////////////////////////// |
| 896 | 916 |
| 897 /** Get the current bounder object. | 917 /** Get the current bounder object. |
| 898 The bounder's reference count is unchaged. | 918 The bounder's reference count is unchaged. |
| 899 @return the canva's bounder (or NULL). | 919 @return the canva's bounder (or NULL). |
| 900 */ | 920 */ |
| 901 SkBounder* getBounder() const { return fBounder; } | 921 SkBounder* getBounder() const { return fBounder; } |
| 902 | 922 |
| 903 /** Set a new bounder (or NULL). | 923 /** Set a new bounder (or NULL). |
| 904 Pass NULL to clear any previous bounder. | 924 Pass NULL to clear any previous bounder. |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1046 DEPRECATED -- need to remove when subclass stop relying on it. | 1066 DEPRECATED -- need to remove when subclass stop relying on it. |
| 1047 Marked as 'protected' to avoid new clients using this before we can | 1067 Marked as 'protected' to avoid new clients using this before we can |
| 1048 completely remove it. | 1068 completely remove it. |
| 1049 | 1069 |
| 1050 Specify a device for this canvas to draw into. If it is not null, its | 1070 Specify a device for this canvas to draw into. If it is not null, its |
| 1051 reference count is incremented. If the canvas was already holding a | 1071 reference count is incremented. If the canvas was already holding a |
| 1052 device, its reference count is decremented. The new device is returned. | 1072 device, its reference count is decremented. The new device is returned. |
| 1053 */ | 1073 */ |
| 1054 virtual SkBaseDevice* setDevice(SkBaseDevice* device); | 1074 virtual SkBaseDevice* setDevice(SkBaseDevice* device); |
| 1055 | 1075 |
| 1076 virtual void onPushCull(const SkRect& cullRect); | |
| 1077 virtual void onPopCull(); | |
| 1078 | |
| 1056 private: | 1079 private: |
| 1057 class MCRec; | 1080 class MCRec; |
| 1058 | 1081 |
| 1059 SkClipStack fClipStack; | 1082 SkClipStack fClipStack; |
| 1060 SkDeque fMCStack; | 1083 SkDeque fMCStack; |
| 1061 // points to top of stack | 1084 // points to top of stack |
| 1062 MCRec* fMCRec; | 1085 MCRec* fMCRec; |
| 1063 // the first N recs that can fit here mean we won't call malloc | 1086 // the first N recs that can fit here mean we won't call malloc |
| 1064 uint32_t fMCRecStorage[32]; | 1087 uint32_t fMCRecStorage[32]; |
| 1065 | 1088 |
| 1066 SkBounder* fBounder; | 1089 SkBounder* fBounder; |
| 1067 int fSaveLayerCount; // number of successful saveLayer calls | 1090 int fSaveLayerCount; // number of successful saveLayer calls |
| 1091 unsigned fCullCount; // number of active culls | |
|
reed1
2014/02/14 14:39:06
nit: int so we can notice negatives easier, and to
f(malita)
2014/02/20 02:37:26
Will do.
| |
| 1068 | 1092 |
| 1069 SkMetaData* fMetaData; | 1093 SkMetaData* fMetaData; |
| 1070 | 1094 |
| 1071 SkSurface_Base* fSurfaceBase; | 1095 SkSurface_Base* fSurfaceBase; |
| 1072 SkSurface_Base* getSurfaceBase() const { return fSurfaceBase; } | 1096 SkSurface_Base* getSurfaceBase() const { return fSurfaceBase; } |
| 1073 void setSurfaceBase(SkSurface_Base* sb) { | 1097 void setSurfaceBase(SkSurface_Base* sb) { |
| 1074 fSurfaceBase = sb; | 1098 fSurfaceBase = sb; |
| 1075 } | 1099 } |
| 1076 friend class SkSurface_Base; | 1100 friend class SkSurface_Base; |
| 1077 friend class SkSurface_Gpu; | 1101 friend class SkSurface_Gpu; |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1200 fCanvas->endCommentGroup(); | 1224 fCanvas->endCommentGroup(); |
| 1201 } | 1225 } |
| 1202 } | 1226 } |
| 1203 | 1227 |
| 1204 private: | 1228 private: |
| 1205 SkCanvas* fCanvas; | 1229 SkCanvas* fCanvas; |
| 1206 }; | 1230 }; |
| 1207 #define SkAutoCommentBlock(...) SK_REQUIRE_LOCAL_VAR(SkAutoCommentBlock) | 1231 #define SkAutoCommentBlock(...) SK_REQUIRE_LOCAL_VAR(SkAutoCommentBlock) |
| 1208 | 1232 |
| 1209 #endif | 1233 #endif |
| OLD | NEW |