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

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

Issue 195793010: Add a means of extracting active operations from SkPicture (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Fix bug & add unit test Created 6 years, 9 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 | Annotate | Revision Log
« 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 /* 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 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 const AccelData* fAccelData; 301 const AccelData* fAccelData;
302 302
303 // Create a new SkPicture from an existing SkPicturePlayback. Ref count of 303 // Create a new SkPicture from an existing SkPicturePlayback. Ref count of
304 // playback is unchanged. 304 // playback is unchanged.
305 SkPicture(SkPicturePlayback*, int width, int height); 305 SkPicture(SkPicturePlayback*, int width, int height);
306 306
307 // For testing. Derived classes may instantiate an alternate 307 // For testing. Derived classes may instantiate an alternate
308 // SkBBoxHierarchy implementation 308 // SkBBoxHierarchy implementation
309 virtual SkBBoxHierarchy* createBBoxHierarchy() const; 309 virtual SkBBoxHierarchy* createBBoxHierarchy() const;
310 private: 310 private:
311 // An OperationList encapsulates a set of operation offsets into the picture byte
312 // stream along with the CTMs needed for those operation.
313 class OperationList : public SkNoncopyable {
314 public:
315 virtual ~OperationList() {}
316
317 // If valid returns false then there is no optimization data
318 // present. All the draw operations need to be issued.
319 virtual bool valid() const { return false; }
320
321 // The following three entry points should only be accessed if
322 // 'valid' returns true.
323 virtual int numOps() const { SkASSERT(false); return 0; };
324 // The offset in the picture of the operation to execute.
325 virtual uint32_t offset(int index) const { SkASSERT(false); return 0; };
326 // The CTM that must be installed for the operation to behave correctly
327 virtual const SkMatrix& matrix(int index) const { SkASSERT(false); retur n SkMatrix::I(); }
328
329 static const OperationList& InvalidList();
330
331 private:
332 typedef SkNoncopyable INHERITED;
333 };
334
335 /** PRIVATE / EXPERIMENTAL -- do not call
336 Return the operations required to render the content inside 'queryRect'.
337 */
338 const OperationList& EXPERIMENTAL_getActiveOps(const SkIRect& queryRect);
339
311 void createHeader(SkPictInfo* info) const; 340 void createHeader(SkPictInfo* info) const;
312 static bool IsValidPictInfo(const SkPictInfo& info); 341 static bool IsValidPictInfo(const SkPictInfo& info);
313 342
314 friend class SkFlatPicture; 343 friend class SkFlatPicture;
315 friend class SkPicturePlayback; 344 friend class SkPicturePlayback;
345 friend class SkGpuDevice;
316 346
317 typedef SkRefCnt INHERITED; 347 typedef SkRefCnt INHERITED;
318 }; 348 };
319 349
320 /** 350 /**
321 * Subclasses of this can be passed to canvas.drawPicture. During the drawing 351 * Subclasses of this can be passed to canvas.drawPicture. During the drawing
322 * of the picture, this callback will periodically be invoked. If its 352 * of the picture, this callback will periodically be invoked. If its
323 * abortDrawing() returns true, then picture playback will be interrupted. 353 * abortDrawing() returns true, then picture playback will be interrupted.
324 * 354 *
325 * The resulting drawing is undefined, as there is no guarantee how often the 355 * The resulting drawing is undefined, as there is no guarantee how often the
326 * callback will be invoked. If the abort happens inside some level of nested 356 * callback will be invoked. If the abort happens inside some level of nested
327 * calls to save(), restore will automatically be called to return the state 357 * calls to save(), restore will automatically be called to return the state
328 * to the same level it was before the drawPicture call was made. 358 * to the same level it was before the drawPicture call was made.
329 */ 359 */
330 class SK_API SkDrawPictureCallback { 360 class SK_API SkDrawPictureCallback {
331 public: 361 public:
332 SkDrawPictureCallback() {} 362 SkDrawPictureCallback() {}
333 virtual ~SkDrawPictureCallback() {} 363 virtual ~SkDrawPictureCallback() {}
334 364
335 virtual bool abortDrawing() = 0; 365 virtual bool abortDrawing() = 0;
336 }; 366 };
337 367
338 #endif 368 #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