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

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

Issue 239703006: Retract SkPicture::kOptimizeForClippedPlayback_RecordingFlag from public API (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 6 years, 8 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 | « gyp/skia_for_chromium_defines.gypi ('k') | include/core/SkRTreePicture.h » ('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 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 132
133 enum RecordingFlags { 133 enum RecordingFlags {
134 /* This flag specifies that when clipPath() is called, the path will 134 /* This flag specifies that when clipPath() is called, the path will
135 be faithfully recorded, but the recording canvas' current clip will 135 be faithfully recorded, but the recording canvas' current clip will
136 only see the path's bounds. This speeds up the recording process 136 only see the path's bounds. This speeds up the recording process
137 without compromising the fidelity of the playback. The only side- 137 without compromising the fidelity of the playback. The only side-
138 effect for recording is that calling getTotalClip() or related 138 effect for recording is that calling getTotalClip() or related
139 clip-query calls will reflect the path's bounds, not the actual 139 clip-query calls will reflect the path's bounds, not the actual
140 path. 140 path.
141 */ 141 */
142 kUsePathBoundsForClip_RecordingFlag = 0x01, 142 kUsePathBoundsForClip_RecordingFlag = 0x01
143 };
144
145 #ifndef SK_SUPPORT_DEPRECATED_RECORD_FLAGS
146 // TODO: once kOptimizeForClippedPlayback_RecordingFlag is hidden from
147 // all external consumers, SkPicture::createBBoxHierarchy can also be
148 // cleaned up.
149 private:
150 #endif
151 enum Deprecated_RecordingFlags {
143 /* This flag causes the picture to compute bounding boxes and build 152 /* This flag causes the picture to compute bounding boxes and build
144 up a spatial hierarchy (currently an R-Tree), plus a tree of Canvas' 153 up a spatial hierarchy (currently an R-Tree), plus a tree of Canvas'
145 usually stack-based clip/etc state. This requires an increase in 154 usually stack-based clip/etc state. This requires an increase in
146 recording time (often ~2x; likely more for very complex pictures), 155 recording time (often ~2x; likely more for very complex pictures),
147 but allows us to perform much faster culling at playback time, and 156 but allows us to perform much faster culling at playback time, and
148 completely avoid some unnecessary clips and other operations. This 157 completely avoid some unnecessary clips and other operations. This
149 is ideal for tiled rendering, or any other situation where you're 158 is ideal for tiled rendering, or any other situation where you're
150 drawing a fraction of a large scene into a smaller viewport. 159 drawing a fraction of a large scene into a smaller viewport.
151 160
152 In most cases the record cost is offset by the playback improvement 161 In most cases the record cost is offset by the playback improvement
153 after a frame or two of tiled rendering (and complex pictures that 162 after a frame or two of tiled rendering (and complex pictures that
154 induce the worst record times will generally get the largest 163 induce the worst record times will generally get the largest
155 speedups at playback time). 164 speedups at playback time).
156 165
157 Note: Currently this is not serializable, the bounding data will be 166 Note: Currently this is not serializable, the bounding data will be
158 discarded if you serialize into a stream and then deserialize. 167 discarded if you serialize into a stream and then deserialize.
159 */ 168 */
160 kOptimizeForClippedPlayback_RecordingFlag = 0x02, 169 kOptimizeForClippedPlayback_RecordingFlag = 0x02,
161 }; 170 };
171 #ifndef SK_SUPPORT_DEPRECATED_RECORD_FLAGS
172 public:
173 #endif
162 174
163 #ifndef SK_SUPPORT_LEGACY_PICTURE_CAN_RECORD 175 #ifndef SK_SUPPORT_LEGACY_PICTURE_CAN_RECORD
164 private: 176 private:
165 friend class SkPictureRecorder; 177 friend class SkPictureRecorder;
166 friend class SkImage_Picture; 178 friend class SkImage_Picture;
167 friend class SkSurface_Picture; 179 friend class SkSurface_Picture;
168 #endif 180 #endif
169 181
170 /** Returns the canvas that records the drawing commands. 182 /** Returns the canvas that records the drawing commands.
171 @param width the base width for the picture, as if the recording 183 @param width the base width for the picture, as if the recording
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 341
330 void needsNewGenID() { fUniqueID = SK_InvalidGenID; } 342 void needsNewGenID() { fUniqueID = SK_InvalidGenID; }
331 343
332 // Create a new SkPicture from an existing SkPicturePlayback. Ref count of 344 // Create a new SkPicture from an existing SkPicturePlayback. Ref count of
333 // playback is unchanged. 345 // playback is unchanged.
334 SkPicture(SkPicturePlayback*, int width, int height); 346 SkPicture(SkPicturePlayback*, int width, int height);
335 347
336 // For testing. Derived classes may instantiate an alternate 348 // For testing. Derived classes may instantiate an alternate
337 // SkBBoxHierarchy implementation 349 // SkBBoxHierarchy implementation
338 virtual SkBBoxHierarchy* createBBoxHierarchy() const; 350 virtual SkBBoxHierarchy* createBBoxHierarchy() const;
351
339 private: 352 private:
340 // An OperationList encapsulates a set of operation offsets into the picture byte 353 // An OperationList encapsulates a set of operation offsets into the picture byte
341 // stream along with the CTMs needed for those operation. 354 // stream along with the CTMs needed for those operation.
342 class OperationList : ::SkNoncopyable { 355 class OperationList : ::SkNoncopyable {
343 public: 356 public:
344 virtual ~OperationList() {} 357 virtual ~OperationList() {}
345 358
346 // If valid returns false then there is no optimization data 359 // If valid returns false then there is no optimization data
347 // present. All the draw operations need to be issued. 360 // present. All the draw operations need to be issued.
348 virtual bool valid() const { return false; } 361 virtual bool valid() const { return false; }
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 411
399 virtual bool abortDrawing() = 0; 412 virtual bool abortDrawing() = 0;
400 }; 413 };
401 414
402 class SkPictureFactory : public SkRefCnt { 415 class SkPictureFactory : public SkRefCnt {
403 public: 416 public:
404 /** 417 /**
405 * Allocate a new SkPicture. Return NULL on failure. 418 * Allocate a new SkPicture. Return NULL on failure.
406 */ 419 */
407 virtual SkPicture* create(int width, int height) = 0; 420 virtual SkPicture* create(int width, int height) = 0;
421
422 private:
423 typedef SkRefCnt INHERITED;
408 }; 424 };
409 425
410 class SK_API SkPictureRecorder : SkNoncopyable { 426 class SK_API SkPictureRecorder : SkNoncopyable {
411 public: 427 public:
412 SkPictureRecorder(SkPictureFactory* factory = NULL) { 428 SkPictureRecorder(SkPictureFactory* factory = NULL) {
413 fFactory.reset(factory); 429 fFactory.reset(factory);
414 if (NULL != fFactory.get()) { 430 if (NULL != fFactory.get()) {
415 fFactory.get()->ref(); 431 fFactory.get()->ref();
416 } 432 }
417 } 433 }
418 434
419 /** Returns the canvas that records the drawing commands. 435 /** Returns the canvas that records the drawing commands.
420 @param width the base width for the picture, as if the recording 436 @param width the base width for the picture, as if the recording
421 canvas' bitmap had this width. 437 canvas' bitmap had this width.
422 @param height the base width for the picture, as if the recording 438 @param height the base width for the picture, as if the recording
423 canvas' bitmap had this height. 439 canvas' bitmap had this height.
424 @param recordFlags optional flags that control recording. 440 @param recordFlags optional flags that control recording.
425 @return the canvas. 441 @return the canvas.
426 */ 442 */
427 SkCanvas* beginRecording(int width, int height, uint32_t recordFlags = 0) { 443 SkCanvas* beginRecording(int width, int height, uint32_t recordFlags = 0) {
428 if (NULL != fFactory) { 444 if (NULL != fFactory) {
429 fPicture.reset(fFactory->create(width, height)); 445 fPicture.reset(fFactory->create(width, height));
446 recordFlags |= SkPicture::kOptimizeForClippedPlayback_RecordingFlag;
430 } else { 447 } else {
431 fPicture.reset(SkNEW(SkPicture)); 448 fPicture.reset(SkNEW(SkPicture));
432 } 449 }
433 450
434 return fPicture->beginRecording(width, height, recordFlags); 451 return fPicture->beginRecording(width, height, recordFlags);
435 } 452 }
436 453
437 /** Returns the recording canvas if one is active, or NULL if recording is 454 /** Returns the recording canvas if one is active, or NULL if recording is
438 not active. This does not alter the refcnt on the canvas (if present). 455 not active. This does not alter the refcnt on the canvas (if present).
439 */ 456 */
(...skipping 30 matching lines...) Expand all
470 } 487 }
471 488
472 private: 489 private:
473 SkAutoTUnref<SkPictureFactory> fFactory; 490 SkAutoTUnref<SkPictureFactory> fFactory;
474 SkAutoTUnref<SkPicture> fPicture; 491 SkAutoTUnref<SkPicture> fPicture;
475 492
476 typedef SkNoncopyable INHERITED; 493 typedef SkNoncopyable INHERITED;
477 }; 494 };
478 495
479 #endif 496 #endif
OLDNEW
« no previous file with comments | « gyp/skia_for_chromium_defines.gypi ('k') | include/core/SkRTreePicture.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698