Chromium Code Reviews| 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 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 279 SkPicturePlayback* fPlayback; | 279 SkPicturePlayback* fPlayback; |
| 280 int fWidth, fHeight; | 280 int fWidth, fHeight; |
| 281 mutable const AccelData* fAccelData; | 281 mutable const AccelData* fAccelData; |
| 282 | 282 |
| 283 void needsNewGenID() { fUniqueID = SK_InvalidGenID; } | 283 void needsNewGenID() { fUniqueID = SK_InvalidGenID; } |
| 284 | 284 |
| 285 // Create a new SkPicture from an existing SkPicturePlayback. Ref count of | 285 // Create a new SkPicture from an existing SkPicturePlayback. Ref count of |
| 286 // playback is unchanged. | 286 // playback is unchanged. |
| 287 SkPicture(SkPicturePlayback*, int width, int height); | 287 SkPicture(SkPicturePlayback*, int width, int height); |
| 288 | 288 |
| 289 SkPicture(int width, int height, SkPictureRecord& record, bool deepCopyOps); | |
|
mtklein
2014/06/11 15:30:21
is const SkPictureRecord& possible here? possible
robertphillips
2014/06/11 17:06:49
I want to move the path heap to SkPicturePlayback
| |
| 290 | |
| 289 private: | 291 private: |
| 290 friend class SkPictureRecord; | |
| 291 friend class SkPictureTester; // for unit testing | |
| 292 | |
| 293 SkAutoTUnref<SkPathHeap> fPathHeap; // reference counted | 292 SkAutoTUnref<SkPathHeap> fPathHeap; // reference counted |
| 294 | 293 |
| 295 // ContentInfo is not serialized! It is intended solely for use | |
| 296 // with suitableForGpuRasterization. | |
| 297 class ContentInfo { | |
| 298 public: | |
| 299 ContentInfo() { this->reset(); } | |
| 300 | |
| 301 ContentInfo(const ContentInfo& src) { this->set(src); } | |
| 302 | |
| 303 void set(const ContentInfo& src) { | |
| 304 fNumPaintWithPathEffectUses = src.fNumPaintWithPathEffectUses; | |
| 305 fNumAAConcavePaths = src.fNumAAConcavePaths; | |
| 306 fNumAAHairlineConcavePaths = src.fNumAAHairlineConcavePaths; | |
| 307 } | |
| 308 | |
| 309 void reset() { | |
| 310 fNumPaintWithPathEffectUses = 0; | |
| 311 fNumAAConcavePaths = 0; | |
| 312 fNumAAHairlineConcavePaths = 0; | |
| 313 } | |
| 314 | |
| 315 void swap(ContentInfo* other) { | |
| 316 SkTSwap(fNumPaintWithPathEffectUses, other->fNumPaintWithPathEffectU ses); | |
| 317 SkTSwap(fNumAAConcavePaths, other->fNumAAConcavePaths); | |
| 318 SkTSwap(fNumAAHairlineConcavePaths, other->fNumAAHairlineConcavePath s); | |
| 319 } | |
| 320 | |
| 321 // This field is incremented every time a paint with a path effect is | |
| 322 // used (i.e., it is not a de-duplicated count) | |
| 323 int fNumPaintWithPathEffectUses; | |
| 324 // This field is incremented every time an anti-aliased drawPath call is | |
| 325 // issued with a concave path | |
| 326 int fNumAAConcavePaths; | |
| 327 // This field is incremented every time a drawPath call is | |
| 328 // issued for a hairline stroked concave path. | |
| 329 int fNumAAHairlineConcavePaths; | |
| 330 }; | |
| 331 | |
| 332 ContentInfo fContentInfo; | |
| 333 | |
| 334 void incPaintWithPathEffectUses() { | |
| 335 ++fContentInfo.fNumPaintWithPathEffectUses; | |
| 336 } | |
| 337 int numPaintWithPathEffectUses() const { | |
| 338 return fContentInfo.fNumPaintWithPathEffectUses; | |
| 339 } | |
| 340 | |
| 341 void incAAConcavePaths() { | |
| 342 ++fContentInfo.fNumAAConcavePaths; | |
| 343 } | |
| 344 int numAAConcavePaths() const { | |
| 345 return fContentInfo.fNumAAConcavePaths; | |
| 346 } | |
| 347 | |
| 348 void incAAHairlineConcavePaths() { | |
| 349 ++fContentInfo.fNumAAHairlineConcavePaths; | |
| 350 SkASSERT(fContentInfo.fNumAAHairlineConcavePaths <= fContentInfo.fNumAAC oncavePaths); | |
| 351 } | |
| 352 int numAAHairlineConcavePaths() const { | |
| 353 return fContentInfo.fNumAAHairlineConcavePaths; | |
| 354 } | |
| 355 | |
| 356 const SkPath& getPath(int index) const; | 294 const SkPath& getPath(int index) const; |
| 357 int addPathToHeap(const SkPath& path); | 295 int addPathToHeap(const SkPath& path); |
| 358 | 296 |
| 359 void flattenToBuffer(SkWriteBuffer& buffer) const; | 297 void flattenToBuffer(SkWriteBuffer& buffer) const; |
| 360 bool parseBufferTag(SkReadBuffer& buffer, uint32_t tag, uint32_t size); | 298 bool parseBufferTag(SkReadBuffer& buffer, uint32_t tag, uint32_t size); |
| 361 | 299 |
| 362 static void WriteTagSize(SkWriteBuffer& buffer, uint32_t tag, size_t size); | 300 static void WriteTagSize(SkWriteBuffer& buffer, uint32_t tag, size_t size); |
| 363 static void WriteTagSize(SkWStream* stream, uint32_t tag, size_t size); | 301 static void WriteTagSize(SkWStream* stream, uint32_t tag, size_t size); |
| 364 | 302 |
| 365 void initForPlayback() const; | 303 void initForPlayback() const; |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 392 const OperationList& EXPERIMENTAL_getActiveOps(const SkIRect& queryRect) con st; | 330 const OperationList& EXPERIMENTAL_getActiveOps(const SkIRect& queryRect) con st; |
| 393 | 331 |
| 394 /** PRIVATE / EXPERIMENTAL -- do not call | 332 /** PRIVATE / EXPERIMENTAL -- do not call |
| 395 Return the ID of the operation currently being executed when playing | 333 Return the ID of the operation currently being executed when playing |
| 396 back. 0 indicates no call is active. | 334 back. 0 indicates no call is active. |
| 397 */ | 335 */ |
| 398 size_t EXPERIMENTAL_curOpID() const; | 336 size_t EXPERIMENTAL_curOpID() const; |
| 399 | 337 |
| 400 void createHeader(SkPictInfo* info) const; | 338 void createHeader(SkPictInfo* info) const; |
| 401 static bool IsValidPictInfo(const SkPictInfo& info); | 339 static bool IsValidPictInfo(const SkPictInfo& info); |
| 402 static SkPicturePlayback* FakeEndRecording(const SkPicture* resourceSrc, | |
| 403 const SkPictureRecord& record); | |
| 404 | 340 |
| 405 friend class SkFlatPicture; | 341 friend class SkFlatPicture; |
| 406 friend class SkPicturePlayback; | 342 friend class SkPicturePlayback; |
| 407 friend class SkPictureRecorder; | 343 friend class SkPictureRecorder; // just for SkPicture-based constructor |
| 408 friend class SkGpuDevice; | 344 friend class SkGpuDevice; |
| 409 friend class GrGatherCanvas; | 345 friend class GrGatherCanvas; |
| 410 friend class GrGatherDevice; | 346 friend class GrGatherDevice; |
| 411 friend class SkDebugCanvas; | 347 friend class SkDebugCanvas; |
| 412 | 348 |
| 413 typedef SkRefCnt INHERITED; | 349 typedef SkRefCnt INHERITED; |
| 414 }; | 350 }; |
| 415 | 351 |
| 416 /** | 352 /** |
| 417 * Subclasses of this can be passed to canvas.drawPicture. During the drawing | 353 * Subclasses of this can be passed to canvas.drawPicture. During the drawing |
| 418 * of the picture, this callback will periodically be invoked. If its | 354 * of the picture, this callback will periodically be invoked. If its |
| 419 * abortDrawing() returns true, then picture playback will be interrupted. | 355 * abortDrawing() returns true, then picture playback will be interrupted. |
| 420 * | 356 * |
| 421 * The resulting drawing is undefined, as there is no guarantee how often the | 357 * The resulting drawing is undefined, as there is no guarantee how often the |
| 422 * callback will be invoked. If the abort happens inside some level of nested | 358 * callback will be invoked. If the abort happens inside some level of nested |
| 423 * calls to save(), restore will automatically be called to return the state | 359 * calls to save(), restore will automatically be called to return the state |
| 424 * to the same level it was before the drawPicture call was made. | 360 * to the same level it was before the drawPicture call was made. |
| 425 */ | 361 */ |
| 426 class SK_API SkDrawPictureCallback { | 362 class SK_API SkDrawPictureCallback { |
| 427 public: | 363 public: |
| 428 SkDrawPictureCallback() {} | 364 SkDrawPictureCallback() {} |
| 429 virtual ~SkDrawPictureCallback() {} | 365 virtual ~SkDrawPictureCallback() {} |
| 430 | 366 |
| 431 virtual bool abortDrawing() = 0; | 367 virtual bool abortDrawing() = 0; |
| 432 }; | 368 }; |
| 433 | 369 |
| 434 #endif | 370 #endif |
| OLD | NEW |