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 346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
357 #endif | 357 #endif |
358 | 358 |
359 SkCanvas* beginRecording(int width, int height, SkBBHFactory* factory, uint3
2_t recordFlags); | 359 SkCanvas* beginRecording(int width, int height, SkBBHFactory* factory, uint3
2_t recordFlags); |
360 | 360 |
361 private: | 361 private: |
362 friend class SkPictureRecord; | 362 friend class SkPictureRecord; |
363 friend class SkPictureTester; // for unit testing | 363 friend class SkPictureTester; // for unit testing |
364 | 364 |
365 SkAutoTUnref<SkPathHeap> fPathHeap; // reference counted | 365 SkAutoTUnref<SkPathHeap> fPathHeap; // reference counted |
366 | 366 |
| 367 // ContentInfo is not serialized! It is intended solely for use |
| 368 // with suitableForGpuRasterization. |
| 369 class ContentInfo { |
| 370 public: |
| 371 ContentInfo() { this->reset(); } |
| 372 |
| 373 ContentInfo(const ContentInfo& src) { this->set(src); } |
| 374 |
| 375 void set(const ContentInfo& src) { |
| 376 fNumPaintWithPathEffectUses = src.fNumPaintWithPathEffectUses; |
| 377 fNumAAConcavePaths = src.fNumAAConcavePaths; |
| 378 fNumAAHairlineConcavePaths = src.fNumAAHairlineConcavePaths; |
| 379 } |
| 380 |
| 381 void reset() { |
| 382 fNumPaintWithPathEffectUses = 0; |
| 383 fNumAAConcavePaths = 0; |
| 384 fNumAAHairlineConcavePaths = 0; |
| 385 } |
| 386 |
| 387 void swap(ContentInfo* other) { |
| 388 SkTSwap(fNumPaintWithPathEffectUses, other->fNumPaintWithPathEffectU
ses); |
| 389 SkTSwap(fNumAAConcavePaths, other->fNumAAConcavePaths); |
| 390 SkTSwap(fNumAAHairlineConcavePaths, other->fNumAAHairlineConcavePath
s); |
| 391 } |
| 392 |
| 393 // This field is incremented every time a paint with a path effect is |
| 394 // used (i.e., it is not a de-duplicated count) |
| 395 int fNumPaintWithPathEffectUses; |
| 396 // This field is incremented every time an anti-aliased drawPath call is
|
| 397 // issued with a concave path |
| 398 int fNumAAConcavePaths; |
| 399 // This field is incremented every time a drawPath call is |
| 400 // issued for a hairline stroked concave path. |
| 401 int fNumAAHairlineConcavePaths; |
| 402 }; |
| 403 |
| 404 ContentInfo fContentInfo; |
| 405 |
| 406 void incPaintWithPathEffectUses() { |
| 407 ++fContentInfo.fNumPaintWithPathEffectUses; |
| 408 } |
| 409 int numPaintWithPathEffectUses() const { |
| 410 return fContentInfo.fNumPaintWithPathEffectUses; |
| 411 } |
| 412 |
| 413 void incAAConcavePaths() { |
| 414 ++fContentInfo.fNumAAConcavePaths; |
| 415 } |
| 416 int numAAConcavePaths() const { |
| 417 return fContentInfo.fNumAAConcavePaths; |
| 418 } |
| 419 |
| 420 void incAAHairlineConcavePaths() { |
| 421 ++fContentInfo.fNumAAHairlineConcavePaths; |
| 422 SkASSERT(fContentInfo.fNumAAHairlineConcavePaths <= fContentInfo.fNumAAC
oncavePaths); |
| 423 } |
| 424 int numAAHairlineConcavePaths() const { |
| 425 return fContentInfo.fNumAAHairlineConcavePaths; |
| 426 } |
| 427 |
367 const SkPath& getPath(int index) const; | 428 const SkPath& getPath(int index) const; |
368 int addPathToHeap(const SkPath& path); | 429 int addPathToHeap(const SkPath& path); |
369 | 430 |
370 void flattenToBuffer(SkWriteBuffer& buffer) const; | 431 void flattenToBuffer(SkWriteBuffer& buffer) const; |
371 bool parseBufferTag(SkReadBuffer& buffer, uint32_t tag, uint32_t size); | 432 bool parseBufferTag(SkReadBuffer& buffer, uint32_t tag, uint32_t size); |
372 | 433 |
373 static void WriteTagSize(SkWriteBuffer& buffer, uint32_t tag, size_t size); | 434 static void WriteTagSize(SkWriteBuffer& buffer, uint32_t tag, size_t size); |
374 static void WriteTagSize(SkWStream* stream, uint32_t tag, size_t size); | 435 static void WriteTagSize(SkWStream* stream, uint32_t tag, size_t size); |
375 | 436 |
376 void initForPlayback() const; | 437 void initForPlayback() const; |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
452 typedef SkRefCnt INHERITED; | 513 typedef SkRefCnt INHERITED; |
453 }; | 514 }; |
454 | 515 |
455 #endif | 516 #endif |
456 | 517 |
457 #ifdef SK_SUPPORT_LEGACY_PICTURE_HEADERS | 518 #ifdef SK_SUPPORT_LEGACY_PICTURE_HEADERS |
458 #include "SkPictureRecorder.h" | 519 #include "SkPictureRecorder.h" |
459 #endif | 520 #endif |
460 | 521 |
461 #endif | 522 #endif |
OLD | NEW |