| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2007 The Android Open Source Project | 3 * Copyright 2007 The Android Open Source Project |
| 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 | 9 |
| 10 #ifndef SkPicture_DEFINED | 10 #ifndef SkPicture_DEFINED |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 static bool InternalOnly_StreamIsSKP(SkStream*, SkPictInfo*); | 183 static bool InternalOnly_StreamIsSKP(SkStream*, SkPictInfo*); |
| 184 static bool InternalOnly_BufferIsSKP(SkReadBuffer&, SkPictInfo*); | 184 static bool InternalOnly_BufferIsSKP(SkReadBuffer&, SkPictInfo*); |
| 185 | 185 |
| 186 /** Return true if the picture is suitable for rendering on the GPU. | 186 /** Return true if the picture is suitable for rendering on the GPU. |
| 187 */ | 187 */ |
| 188 | 188 |
| 189 #if SK_SUPPORT_GPU | 189 #if SK_SUPPORT_GPU |
| 190 bool suitableForGpuRasterization(GrContext*, const char ** = NULL) const; | 190 bool suitableForGpuRasterization(GrContext*, const char ** = NULL) const; |
| 191 #endif | 191 #endif |
| 192 | 192 |
| 193 class DeletionListener : public SkRefCnt { |
| 194 public: |
| 195 virtual void onDeletion(uint32_t pictureID) = 0; |
| 196 }; |
| 197 |
| 198 // Takes ref on listener. |
| 199 void addDeletionListener(DeletionListener* listener) const; |
| 200 |
| 193 private: | 201 private: |
| 194 // V2 : adds SkPixelRef's generation ID. | 202 // V2 : adds SkPixelRef's generation ID. |
| 195 // V3 : PictInfo tag at beginning, and EOF tag at the end | 203 // V3 : PictInfo tag at beginning, and EOF tag at the end |
| 196 // V4 : move SkPictInfo to be the header | 204 // V4 : move SkPictInfo to be the header |
| 197 // V5 : don't read/write FunctionPtr on cross-process (we can detect that) | 205 // V5 : don't read/write FunctionPtr on cross-process (we can detect that) |
| 198 // V6 : added serialization of SkPath's bounds (and packed its flags tighter
) | 206 // V6 : added serialization of SkPath's bounds (and packed its flags tighter
) |
| 199 // V7 : changed drawBitmapRect(IRect) to drawBitmapRectToRect(Rect) | 207 // V7 : changed drawBitmapRect(IRect) to drawBitmapRectToRect(Rect) |
| 200 // V8 : Add an option for encoding bitmaps | 208 // V8 : Add an option for encoding bitmaps |
| 201 // V9 : Allow the reader and writer of an SKP disagree on whether to support | 209 // V9 : Allow the reader and writer of an SKP disagree on whether to support |
| 202 // SK_SUPPORT_HINTING_SCALE_FACTOR | 210 // SK_SUPPORT_HINTING_SCALE_FACTOR |
| (...skipping 27 matching lines...) Expand all Loading... |
| 230 static const uint32_t MIN_PICTURE_VERSION = 19; | 238 static const uint32_t MIN_PICTURE_VERSION = 19; |
| 231 static const uint32_t CURRENT_PICTURE_VERSION = 30; | 239 static const uint32_t CURRENT_PICTURE_VERSION = 30; |
| 232 | 240 |
| 233 mutable uint32_t fUniqueID; | 241 mutable uint32_t fUniqueID; |
| 234 | 242 |
| 235 // TODO: make SkPictureData const when clone method goes away | 243 // TODO: make SkPictureData const when clone method goes away |
| 236 SkAutoTDelete<SkPictureData> fData; | 244 SkAutoTDelete<SkPictureData> fData; |
| 237 int fWidth, fHeight; | 245 int fWidth, fHeight; |
| 238 mutable SkAutoTUnref<const AccelData> fAccelData; | 246 mutable SkAutoTUnref<const AccelData> fAccelData; |
| 239 | 247 |
| 248 mutable SkTDArray<DeletionListener*> fDeletionListeners; // pointers are re
fed |
| 249 |
| 240 void needsNewGenID() { fUniqueID = SK_InvalidGenID; } | 250 void needsNewGenID() { fUniqueID = SK_InvalidGenID; } |
| 251 void callDeletionListeners(); |
| 241 | 252 |
| 242 // Create a new SkPicture from an existing SkPictureData. The new picture | 253 // Create a new SkPicture from an existing SkPictureData. The new picture |
| 243 // takes ownership of 'data'. | 254 // takes ownership of 'data'. |
| 244 SkPicture(SkPictureData* data, int width, int height); | 255 SkPicture(SkPictureData* data, int width, int height); |
| 245 | 256 |
| 246 SkPicture(int width, int height, const SkPictureRecord& record, bool deepCop
yOps); | 257 SkPicture(int width, int height, const SkPictureRecord& record, bool deepCop
yOps); |
| 247 | 258 |
| 248 // An OperationList encapsulates a set of operation offsets into the picture
byte | 259 // An OperationList encapsulates a set of operation offsets into the picture
byte |
| 249 // stream along with the CTMs needed for those operation. | 260 // stream along with the CTMs needed for those operation. |
| 250 class OperationList : ::SkNoncopyable { | 261 class OperationList : ::SkNoncopyable { |
| (...skipping 25 matching lines...) Expand all Loading... |
| 276 friend class SkPictureReplacementPlayback; // to access OperationList | 287 friend class SkPictureReplacementPlayback; // to access OperationList |
| 277 | 288 |
| 278 typedef SkRefCnt INHERITED; | 289 typedef SkRefCnt INHERITED; |
| 279 | 290 |
| 280 SkPicture(int width, int height, SkRecord*); // Takes ownership. | 291 SkPicture(int width, int height, SkRecord*); // Takes ownership. |
| 281 SkAutoTDelete<SkRecord> fRecord; | 292 SkAutoTDelete<SkRecord> fRecord; |
| 282 bool fRecordWillPlayBackBitmaps; // TODO: const | 293 bool fRecordWillPlayBackBitmaps; // TODO: const |
| 283 }; | 294 }; |
| 284 | 295 |
| 285 #endif | 296 #endif |
| OLD | NEW |