| OLD | NEW | 
|    1  |    1  | 
|    2 /* |    2 /* | 
|    3  * Copyright 2011 Google Inc. |    3  * Copyright 2011 Google Inc. | 
|    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 #ifndef SkPictureFlat_DEFINED |    8 #ifndef SkPictureFlat_DEFINED | 
|    9 #define SkPictureFlat_DEFINED |    9 #define SkPictureFlat_DEFINED | 
|   10  |   10  | 
| (...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  563     SkWriteBuffer fScratch; |  563     SkWriteBuffer fScratch; | 
|  564     bool fReady; |  564     bool fReady; | 
|  565  |  565  | 
|  566     // For index -> SkFlatData.  0-based, while all indices in the API are 1-bas
     ed.  Careful! |  566     // For index -> SkFlatData.  0-based, while all indices in the API are 1-bas
     ed.  Careful! | 
|  567     SkTDArray<const SkFlatData*> fIndexedData; |  567     SkTDArray<const SkFlatData*> fIndexedData; | 
|  568  |  568  | 
|  569     // For SkFlatData -> cached SkFlatData, which has index(). |  569     // For SkFlatData -> cached SkFlatData, which has index(). | 
|  570     SkTDynamicHash<SkFlatData, SkFlatData, SkFlatData::HashTraits> fHash; |  570     SkTDynamicHash<SkFlatData, SkFlatData, SkFlatData::HashTraits> fHash; | 
|  571 }; |  571 }; | 
|  572  |  572  | 
|  573 struct SkPaintFlatteningTraits { |  | 
|  574     static void Flatten(SkWriteBuffer& buffer, const SkPaint& paint) { paint.fla
     tten(buffer); } |  | 
|  575     static void Unflatten(SkReadBuffer& buffer, SkPaint* paint) { paint->unflatt
     en(buffer); } |  | 
|  576 }; |  | 
|  577  |  | 
|  578 typedef SkFlatDictionary<SkPaint, SkPaintFlatteningTraits> SkPaintDictionary; |  | 
|  579  |  | 
|  580 class SkChunkFlatController : public SkFlatController { |  | 
|  581 public: |  | 
|  582     SkChunkFlatController(size_t minSize) |  | 
|  583     : fHeap(minSize) |  | 
|  584     , fTypefaceSet(SkNEW(SkRefCntSet)) |  | 
|  585     , fLastAllocated(NULL) { |  | 
|  586         this->setTypefaceSet(fTypefaceSet); |  | 
|  587         this->setTypefacePlayback(&fTypefacePlayback); |  | 
|  588     } |  | 
|  589  |  | 
|  590     virtual void* allocThrow(size_t bytes) SK_OVERRIDE { |  | 
|  591         fLastAllocated = fHeap.allocThrow(bytes); |  | 
|  592         return fLastAllocated; |  | 
|  593     } |  | 
|  594  |  | 
|  595     virtual void unalloc(void* ptr) SK_OVERRIDE { |  | 
|  596         // fHeap can only free a pointer if it was the last one allocated.  Othe
     rwise, we'll just |  | 
|  597         // have to wait until fHeap is destroyed. |  | 
|  598         if (ptr == fLastAllocated) (void)fHeap.unalloc(ptr); |  | 
|  599     } |  | 
|  600  |  | 
|  601     void setupPlaybacks() const { |  | 
|  602         fTypefacePlayback.reset(fTypefaceSet.get()); |  | 
|  603     } |  | 
|  604  |  | 
|  605     void setBitmapStorage(SkBitmapHeap* heap) { |  | 
|  606         this->setBitmapHeap(heap); |  | 
|  607     } |  | 
|  608  |  | 
|  609 private: |  | 
|  610     SkChunkAlloc               fHeap; |  | 
|  611     SkAutoTUnref<SkRefCntSet>  fTypefaceSet; |  | 
|  612     void*                      fLastAllocated; |  | 
|  613     mutable SkTypefacePlayback fTypefacePlayback; |  | 
|  614 }; |  | 
|  615  |  | 
|  616 #endif |  573 #endif | 
| OLD | NEW |