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

Side by Side Diff: include/core/SkPicture.h

Issue 1112833003: Straighten out SkPicture::AccelData APIs. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 7 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
« no previous file with comments | « no previous file | src/core/SkPicture.cpp » ('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 * Copyright 2007 The Android Open Source Project 2 * Copyright 2007 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 8
9 #ifndef SkPicture_DEFINED 9 #ifndef SkPicture_DEFINED
10 #define SkPicture_DEFINED 10 #define SkPicture_DEFINED
(...skipping 23 matching lines...) Expand all
34 class CollectLayers; 34 class CollectLayers;
35 }; 35 };
36 36
37 /** \class SkPicture 37 /** \class SkPicture
38 38
39 The SkPicture class records the drawing commands made to a canvas, to 39 The SkPicture class records the drawing commands made to a canvas, to
40 be played back at a later time. 40 be played back at a later time.
41 */ 41 */
42 class SK_API SkPicture : public SkNVRefCnt<SkPicture> { 42 class SK_API SkPicture : public SkNVRefCnt<SkPicture> {
43 public: 43 public:
44 // AccelData provides a base class for device-specific acceleration 44 // AccelData provides a base class for device-specific acceleration data.
45 // data. It is added to the picture via EXPERIMENTAL_addAccelData.
46 class AccelData : public SkRefCnt { 45 class AccelData : public SkRefCnt {
47 public: 46 public:
48 typedef uint8_t Domain; 47 typedef uint8_t Domain;
49 typedef uint32_t Key; 48 typedef uint32_t Key;
50 49
51 AccelData(Key key) : fKey(key) { } 50 AccelData(Key key) : fKey(key) { }
52 51
53 const Key& getKey() const { return fKey; } 52 const Key& getKey() const { return fKey; }
54 53
55 // This entry point allows user's to get a unique domain prefix 54 // This entry point allows user's to get a unique domain prefix
56 // for their keys 55 // for their keys
57 static Domain GenerateDomain(); 56 static Domain GenerateDomain();
58 private: 57 private:
59 Key fKey; 58 Key fKey;
60 }; 59 };
61 60
62 /** PRIVATE / EXPERIMENTAL -- do not call */ 61 /** PRIVATE / EXPERIMENTAL -- do not call */
63 void EXPERIMENTAL_addAccelData(const AccelData*) const;
64
65 /** PRIVATE / EXPERIMENTAL -- do not call */
66 const AccelData* EXPERIMENTAL_getAccelData(AccelData::Key) const; 62 const AccelData* EXPERIMENTAL_getAccelData(AccelData::Key) const;
67 63
68 /** 64 /**
69 * Function signature defining a function that sets up an SkBitmap from enc oded data. On 65 * Function signature defining a function that sets up an SkBitmap from enc oded data. On
70 * success, the SkBitmap should have its Config, width, height, rowBytes an d pixelref set. 66 * success, the SkBitmap should have its Config, width, height, rowBytes an d pixelref set.
71 * If the installed pixelref has decoded the data into pixels, then the src buffer need not be 67 * If the installed pixelref has decoded the data into pixels, then the src buffer need not be
72 * copied. If the pixelref defers the actual decode until its lockPixels() is called, then it 68 * copied. If the pixelref defers the actual decode until its lockPixels() is called, then it
73 * must make a copy of the src buffer. 69 * must make a copy of the src buffer.
74 * @param src Encoded data. 70 * @param src Encoded data.
75 * @param length Size of the encoded data, in bytes. 71 * @param length Size of the encoded data, in bytes.
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 static const uint32_t MIN_PICTURE_VERSION = 35; // Produced by Chrome M3 9. 249 static const uint32_t MIN_PICTURE_VERSION = 35; // Produced by Chrome M3 9.
254 static const uint32_t CURRENT_PICTURE_VERSION = 41; 250 static const uint32_t CURRENT_PICTURE_VERSION = 41;
255 251
256 static_assert(MIN_PICTURE_VERSION <= 41, 252 static_assert(MIN_PICTURE_VERSION <= 41,
257 "Remove kFontFileName and related code from SkFontDescriptor.c pp."); 253 "Remove kFontFileName and related code from SkFontDescriptor.c pp.");
258 254
259 void createHeader(SkPictInfo* info) const; 255 void createHeader(SkPictInfo* info) const;
260 static bool IsValidPictInfo(const SkPictInfo& info); 256 static bool IsValidPictInfo(const SkPictInfo& info);
261 257
262 // Takes ownership of the (optional) SnapshotArray. 258 // Takes ownership of the (optional) SnapshotArray.
263 // For performance, we take ownership of the caller's refs on the SkRecord a nd BBH. 259 // For performance, we take ownership of the caller's refs on the SkRecord, BBH, and AccelData.
264 SkPicture(const SkRect& cullRect, 260 SkPicture(const SkRect& cullRect,
265 SkRecord*, 261 SkRecord*,
266 SnapshotArray*, 262 SnapshotArray*,
267 SkBBoxHierarchy*, 263 SkBBoxHierarchy*,
264 AccelData*,
268 size_t approxBytesUsedBySubPictures); 265 size_t approxBytesUsedBySubPictures);
269 266
270 static SkPicture* Forwardport(const SkPictInfo&, const SkPictureData*); 267 static SkPicture* Forwardport(const SkPictInfo&, const SkPictureData*);
271 static SkPictureData* Backport(const SkRecord&, const SkPictInfo&, 268 static SkPictureData* Backport(const SkRecord&, const SkPictInfo&,
272 SkPicture const* const drawablePics[], int dr awableCount); 269 SkPicture const* const drawablePics[], int dr awableCount);
273 270
274 // uint32_t fRefCnt; from SkNVRefCnt<SkPicture> 271 // uint32_t fRefCnt; from SkNVRefCnt<SkPicture>
275 mutable uint32_t fUniqueID; 272 mutable uint32_t fUniqueID;
276 const SkRect fCullRect; 273 const SkRect fCullRect;
277 mutable SkAutoTUnref<const AccelData> fAccelData;
278 SkAutoTUnref<const SkRecord> fRecord; 274 SkAutoTUnref<const SkRecord> fRecord;
275 SkAutoTDelete<const SnapshotArray> fDrawablePicts;
279 SkAutoTUnref<const SkBBoxHierarchy> fBBH; 276 SkAutoTUnref<const SkBBoxHierarchy> fBBH;
280 SkAutoTDelete<const SnapshotArray> fDrawablePicts; 277 SkAutoTUnref<const AccelData> fAccelData;
281 const size_t fApproxBytesUsedBySubPictures; 278 const size_t fApproxBytesUsedBySubPictures;
282 279
283 // helpers for fDrawablePicts 280 // helpers for fDrawablePicts
284 int drawableCount() const; 281 int drawableCount() const;
285 // will return NULL if drawableCount() returns 0 282 // will return NULL if drawableCount() returns 0
286 SkPicture const* const* drawablePicts() const; 283 SkPicture const* const* drawablePicts() const;
287 284
288 struct PathCounter; 285 struct PathCounter;
289 286
290 struct Analysis { 287 struct Analysis {
291 Analysis() {} // Only used by SkPictureData codepath. 288 Analysis() {} // Only used by SkPictureData codepath.
292 explicit Analysis(const SkRecord&); 289 explicit Analysis(const SkRecord&);
293 290
294 bool suitableForGpuRasterization(const char** reason, int sampleCount) c onst; 291 bool suitableForGpuRasterization(const char** reason, int sampleCount) c onst;
295 292
296 uint8_t fNumSlowPathsAndDashEffects; 293 uint8_t fNumSlowPathsAndDashEffects;
297 bool fWillPlaybackBitmaps : 1; 294 bool fWillPlaybackBitmaps : 1;
298 bool fHasText : 1; 295 bool fHasText : 1;
299 } fAnalysis; 296 } fAnalysis;
300 297
301 friend class SkPictureRecorder; // SkRecord-based constructor. 298 friend class SkPictureRecorder; // SkRecord-based constructor.
302 friend class GrLayerHoister; // access to fRecord 299 friend class GrLayerHoister; // access to fRecord
303 friend class ReplaceDraw; 300 friend class ReplaceDraw;
304 friend class SkPictureUtils; 301 friend class SkPictureUtils;
305 friend class SkRecordedDrawable; 302 friend class SkRecordedDrawable;
306 }; 303 };
307 SK_COMPILE_ASSERT(sizeof(SkPicture) <= 88, SkPictureSize); 304 SK_COMPILE_ASSERT(sizeof(SkPicture) <= 88, SkPictureSize);
308 305
309 #endif 306 #endif
OLDNEW
« no previous file with comments | « no previous file | src/core/SkPicture.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698