OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #ifndef SkPictureData_DEFINED | 8 #ifndef SkPictureData_DEFINED |
9 #define SkPictureData_DEFINED | 9 #define SkPictureData_DEFINED |
10 | 10 |
11 #include "SkBitmap.h" | 11 #include "SkBitmap.h" |
12 #include "SkPathHeap.h" | 12 #include "SkPathHeap.h" |
13 #include "SkPicture.h" | 13 #include "SkPicture.h" |
14 #include "SkPictureContentInfo.h" | 14 #include "SkPictureContentInfo.h" |
15 #include "SkPictureFlat.h" | 15 #include "SkPictureFlat.h" |
16 #include "SkPictureStateTree.h" | |
17 | 16 |
18 class SkData; | 17 class SkData; |
19 class SkPictureRecord; | 18 class SkPictureRecord; |
20 class SkReader32; | 19 class SkReader32; |
21 class SkStream; | 20 class SkStream; |
22 class SkWStream; | 21 class SkWStream; |
23 class SkBBoxHierarchy; | 22 class SkBBoxHierarchy; |
24 class SkMatrix; | 23 class SkMatrix; |
25 class SkPaint; | 24 class SkPaint; |
26 class SkPath; | 25 class SkPath; |
27 class SkPictureStateTree; | |
28 class SkReadBuffer; | 26 class SkReadBuffer; |
29 class SkTextBlob; | 27 class SkTextBlob; |
30 | 28 |
31 struct SkPictInfo { | 29 struct SkPictInfo { |
32 enum Flags { | 30 enum Flags { |
33 kCrossProcess_Flag = 1 << 0, | 31 kCrossProcess_Flag = 1 << 0, |
34 kScalarIsFloat_Flag = 1 << 1, | 32 kScalarIsFloat_Flag = 1 << 1, |
35 kPtrIs64Bit_Flag = 1 << 2, | 33 kPtrIs64Bit_Flag = 1 << 2, |
36 }; | 34 }; |
37 | 35 |
(...skipping 22 matching lines...) Expand all Loading... |
60 class SkPictureData { | 58 class SkPictureData { |
61 public: | 59 public: |
62 SkPictureData(const SkPictureRecord& record, const SkPictInfo&, bool deepCop
yOps); | 60 SkPictureData(const SkPictureRecord& record, const SkPictInfo&, bool deepCop
yOps); |
63 static SkPictureData* CreateFromStream(SkStream*, | 61 static SkPictureData* CreateFromStream(SkStream*, |
64 const SkPictInfo&, | 62 const SkPictInfo&, |
65 SkPicture::InstallPixelRefProc); | 63 SkPicture::InstallPixelRefProc); |
66 static SkPictureData* CreateFromBuffer(SkReadBuffer&, const SkPictInfo&); | 64 static SkPictureData* CreateFromBuffer(SkReadBuffer&, const SkPictInfo&); |
67 | 65 |
68 virtual ~SkPictureData(); | 66 virtual ~SkPictureData(); |
69 | 67 |
70 const SkPicture::OperationList* getActiveOps(const SkRect& queryRect) const; | |
71 | |
72 void serialize(SkWStream*, SkPicture::EncodeBitmap) const; | 68 void serialize(SkWStream*, SkPicture::EncodeBitmap) const; |
73 void flatten(SkWriteBuffer&) const; | 69 void flatten(SkWriteBuffer&) const; |
74 | 70 |
75 bool containsBitmaps() const; | 71 bool containsBitmaps() const; |
76 | 72 |
77 bool hasText() const { return fContentInfo.hasText(); } | 73 bool hasText() const { return fContentInfo.hasText(); } |
78 | 74 |
79 int opCount() const { return fContentInfo.numOperations(); } | 75 int opCount() const { return fContentInfo.numOperations(); } |
80 | 76 |
81 const SkData* opData() const { return fOpData; } | 77 const SkData* opData() const { return fOpData; } |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
116 } | 112 } |
117 return &(*fPaints)[index - 1]; | 113 return &(*fPaints)[index - 1]; |
118 } | 114 } |
119 | 115 |
120 const SkTextBlob* getTextBlob(SkReader32* reader) const { | 116 const SkTextBlob* getTextBlob(SkReader32* reader) const { |
121 int index = reader->readInt(); | 117 int index = reader->readInt(); |
122 SkASSERT(index > 0 && index <= fTextBlobCount); | 118 SkASSERT(index > 0 && index <= fTextBlobCount); |
123 return fTextBlobRefs[index - 1]; | 119 return fTextBlobRefs[index - 1]; |
124 } | 120 } |
125 | 121 |
126 void initIterator(SkPictureStateTree::Iterator* iter, | |
127 const SkTDArray<void*>& draws, | |
128 SkCanvas* canvas) const { | |
129 if (fStateTree) { | |
130 fStateTree->initIterator(iter, draws, canvas); | |
131 } | |
132 } | |
133 | |
134 #if SK_SUPPORT_GPU | 122 #if SK_SUPPORT_GPU |
135 /** | 123 /** |
136 * sampleCount is the number of samples-per-pixel or zero if non-MSAA. | 124 * sampleCount is the number of samples-per-pixel or zero if non-MSAA. |
137 * It is defaulted to be zero. | 125 * It is defaulted to be zero. |
138 */ | 126 */ |
139 bool suitableForGpuRasterization(GrContext* context, const char **reason, | 127 bool suitableForGpuRasterization(GrContext* context, const char **reason, |
140 int sampleCount = 0) const; | 128 int sampleCount = 0) const; |
141 | 129 |
142 /** | 130 /** |
143 * Calls getRecommendedSampleCount with GrPixelConfig and dpi to calculate s
ampleCount | 131 * Calls getRecommendedSampleCount with GrPixelConfig and dpi to calculate s
ampleCount |
(...skipping 24 matching lines...) Expand all Loading... |
168 | 156 |
169 SkData* fOpData; // opcodes and parameters | 157 SkData* fOpData; // opcodes and parameters |
170 | 158 |
171 SkAutoTUnref<const SkPathHeap> fPathHeap; // reference counted | 159 SkAutoTUnref<const SkPathHeap> fPathHeap; // reference counted |
172 | 160 |
173 const SkPicture** fPictureRefs; | 161 const SkPicture** fPictureRefs; |
174 int fPictureCount; | 162 int fPictureCount; |
175 const SkTextBlob** fTextBlobRefs; | 163 const SkTextBlob** fTextBlobRefs; |
176 int fTextBlobCount; | 164 int fTextBlobCount; |
177 | 165 |
178 SkBBoxHierarchy* fBoundingHierarchy; | |
179 SkPictureStateTree* fStateTree; | |
180 | |
181 SkPictureContentInfo fContentInfo; | 166 SkPictureContentInfo fContentInfo; |
182 | 167 |
183 SkTypefacePlayback fTFPlayback; | 168 SkTypefacePlayback fTFPlayback; |
184 SkFactoryPlayback* fFactoryPlayback; | 169 SkFactoryPlayback* fFactoryPlayback; |
185 | 170 |
186 const SkPictInfo fInfo; | 171 const SkPictInfo fInfo; |
187 | 172 |
188 static void WriteFactories(SkWStream* stream, const SkFactorySet& rec); | 173 static void WriteFactories(SkWStream* stream, const SkFactorySet& rec); |
189 static void WriteTypefaces(SkWStream* stream, const SkRefCntSet& rec); | 174 static void WriteTypefaces(SkWStream* stream, const SkRefCntSet& rec); |
190 | 175 |
191 void initForPlayback() const; | 176 void initForPlayback() const; |
192 }; | 177 }; |
193 | 178 |
194 #endif | 179 #endif |
OLD | NEW |