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 #include <new> | 7 #include <new> |
8 #include "SkImageGenerator.h" | 8 #include "SkImageGenerator.h" |
9 #include "SkPictureData.h" | 9 #include "SkPictureData.h" |
10 #include "SkPictureRecord.h" | 10 #include "SkPictureRecord.h" |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
143 size_t len = strlen(name); | 143 size_t len = strlen(name); |
144 size += SkWStream::SizeOfPackedUInt(len); | 144 size += SkWStream::SizeOfPackedUInt(len); |
145 size += len; | 145 size += len; |
146 } | 146 } |
147 } | 147 } |
148 | 148 |
149 return size; | 149 return size; |
150 } | 150 } |
151 | 151 |
152 static void write_tag_size(SkWriteBuffer& buffer, uint32_t tag, size_t size) { | 152 static void write_tag_size(SkWriteBuffer& buffer, uint32_t tag, size_t size) { |
153 buffer.writeUInt(tag); | 153 buffer.writeUInt("tag", tag); |
154 buffer.writeUInt(SkToU32(size)); | 154 buffer.writeUInt("size", SkToU32(size)); |
155 } | 155 } |
156 | 156 |
157 static void write_tag_size(SkWStream* stream, uint32_t tag, size_t size) { | 157 static void write_tag_size(SkWStream* stream, uint32_t tag, size_t size) { |
158 stream->write32(tag); | 158 stream->write32(tag); |
159 stream->write32(SkToU32(size)); | 159 stream->write32(SkToU32(size)); |
160 } | 160 } |
161 | 161 |
162 void SkPictureData::WriteFactories(SkWStream* stream, const SkFactorySet& rec) { | 162 void SkPictureData::WriteFactories(SkWStream* stream, const SkFactorySet& rec) { |
163 int count = rec.count(); | 163 int count = rec.count(); |
164 | 164 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
200 array[i]->serialize(stream); | 200 array[i]->serialize(stream); |
201 } | 201 } |
202 } | 202 } |
203 | 203 |
204 void SkPictureData::flattenToBuffer(SkWriteBuffer& buffer) const { | 204 void SkPictureData::flattenToBuffer(SkWriteBuffer& buffer) const { |
205 int i, n; | 205 int i, n; |
206 | 206 |
207 if ((n = fBitmaps.count()) > 0) { | 207 if ((n = fBitmaps.count()) > 0) { |
208 write_tag_size(buffer, SK_PICT_BITMAP_BUFFER_TAG, n); | 208 write_tag_size(buffer, SK_PICT_BITMAP_BUFFER_TAG, n); |
209 for (i = 0; i < n; i++) { | 209 for (i = 0; i < n; i++) { |
210 buffer.writeBitmap(fBitmaps[i]); | 210 buffer.writeBitmap("fBitmap", fBitmaps[i]); |
211 } | 211 } |
212 } | 212 } |
213 | 213 |
214 if ((n = fPaints.count()) > 0) { | 214 if ((n = fPaints.count()) > 0) { |
215 write_tag_size(buffer, SK_PICT_PAINT_BUFFER_TAG, n); | 215 write_tag_size(buffer, SK_PICT_PAINT_BUFFER_TAG, n); |
216 for (i = 0; i < n; i++) { | 216 for (i = 0; i < n; i++) { |
217 buffer.writePaint(fPaints[i]); | 217 buffer.writePaint("fPaint", fPaints[i]); |
218 } | 218 } |
219 } | 219 } |
220 | 220 |
221 if ((n = fPaths.count()) > 0) { | 221 if ((n = fPaths.count()) > 0) { |
222 write_tag_size(buffer, SK_PICT_PATH_BUFFER_TAG, n); | 222 write_tag_size(buffer, SK_PICT_PATH_BUFFER_TAG, n); |
223 buffer.writeInt(n); | 223 buffer.writeInt("pathCount", n); |
224 for (int i = 0; i < n; i++) { | 224 for (int i = 0; i < n; i++) { |
225 buffer.writePath(fPaths[i]); | 225 buffer.writePath("fPath", fPaths[i]); |
226 } | 226 } |
227 } | 227 } |
228 | 228 |
229 if (fTextBlobCount > 0) { | 229 if (fTextBlobCount > 0) { |
230 write_tag_size(buffer, SK_PICT_TEXTBLOB_BUFFER_TAG, fTextBlobCount); | 230 write_tag_size(buffer, SK_PICT_TEXTBLOB_BUFFER_TAG, fTextBlobCount); |
231 for (i = 0; i < fTextBlobCount; ++i) { | 231 for (i = 0; i < fTextBlobCount; ++i) { |
232 fTextBlobRefs[i]->flatten(buffer); | 232 fTextBlobRefs[i]->flatten(buffer); |
233 } | 233 } |
234 } | 234 } |
235 | 235 |
236 if (fImageCount > 0) { | 236 if (fImageCount > 0) { |
237 write_tag_size(buffer, SK_PICT_IMAGE_BUFFER_TAG, fImageCount); | 237 write_tag_size(buffer, SK_PICT_IMAGE_BUFFER_TAG, fImageCount); |
238 for (i = 0; i < fImageCount; ++i) { | 238 for (i = 0; i < fImageCount; ++i) { |
239 buffer.writeImage(fImageRefs[i]); | 239 buffer.writeImage("fImageRef", fImageRefs[i]); |
240 } | 240 } |
241 } | 241 } |
242 } | 242 } |
243 | 243 |
244 void SkPictureData::serialize(SkWStream* stream, | 244 void SkPictureData::serialize(SkWStream* stream, |
245 SkPixelSerializer* pixelSerializer, | 245 SkPixelSerializer* pixelSerializer, |
246 SkRefCntSet* topLevelTypeFaceSet) const { | 246 SkRefCntSet* topLevelTypeFaceSet) const { |
247 // This can happen at pretty much any time, so might as well do it first. | 247 // This can happen at pretty much any time, so might as well do it first. |
248 write_tag_size(stream, SK_PICT_READER_TAG, fOpData->size()); | 248 write_tag_size(stream, SK_PICT_READER_TAG, fOpData->size()); |
249 stream->write(fOpData->bytes(), fOpData->size()); | 249 stream->write(fOpData->bytes(), fOpData->size()); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
290 for (int i = 0; i < fPictureCount; i++) { | 290 for (int i = 0; i < fPictureCount; i++) { |
291 fPictureRefs[i]->serialize(stream, pixelSerializer, typefaceSet); | 291 fPictureRefs[i]->serialize(stream, pixelSerializer, typefaceSet); |
292 } | 292 } |
293 } | 293 } |
294 | 294 |
295 stream->write32(SK_PICT_EOF_TAG); | 295 stream->write32(SK_PICT_EOF_TAG); |
296 } | 296 } |
297 | 297 |
298 void SkPictureData::flatten(SkWriteBuffer& buffer) const { | 298 void SkPictureData::flatten(SkWriteBuffer& buffer) const { |
299 write_tag_size(buffer, SK_PICT_READER_TAG, fOpData->size()); | 299 write_tag_size(buffer, SK_PICT_READER_TAG, fOpData->size()); |
300 buffer.writeByteArray(fOpData->bytes(), fOpData->size()); | 300 buffer.writeByteArray("fOpData", fOpData->bytes(), fOpData->size()); |
301 | 301 |
302 if (fPictureCount > 0) { | 302 if (fPictureCount > 0) { |
303 write_tag_size(buffer, SK_PICT_PICTURE_TAG, fPictureCount); | 303 write_tag_size(buffer, SK_PICT_PICTURE_TAG, fPictureCount); |
304 for (int i = 0; i < fPictureCount; i++) { | 304 for (int i = 0; i < fPictureCount; i++) { |
305 fPictureRefs[i]->flatten(buffer); | 305 fPictureRefs[i]->flatten(buffer); |
306 } | 306 } |
307 } | 307 } |
308 | 308 |
309 // Write this picture playback's data into a writebuffer | 309 // Write this picture playback's data into a writebuffer |
310 this->flattenToBuffer(buffer); | 310 this->flattenToBuffer(buffer); |
311 buffer.write32(SK_PICT_EOF_TAG); | 311 buffer.write32("eofTag", SK_PICT_EOF_TAG); |
312 } | 312 } |
313 | 313 |
314 /////////////////////////////////////////////////////////////////////////////// | 314 /////////////////////////////////////////////////////////////////////////////// |
315 | 315 |
316 /** | 316 /** |
317 * Return the corresponding SkReadBuffer flags, given a set of | 317 * Return the corresponding SkReadBuffer flags, given a set of |
318 * SkPictInfo flags. | 318 * SkPictInfo flags. |
319 */ | 319 */ |
320 static uint32_t pictInfoFlagsToReadBufferFlags(uint32_t pictInfoFlags) { | 320 static uint32_t pictInfoFlagsToReadBufferFlags(uint32_t pictInfoFlags) { |
321 static const struct { | 321 static const struct { |
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
623 } else { | 623 } else { |
624 return this->suitableForGpuRasterization(nullptr, reason); | 624 return this->suitableForGpuRasterization(nullptr, reason); |
625 } | 625 } |
626 } | 626 } |
627 | 627 |
628 bool SkPictureData::suitableForLayerOptimization() const { | 628 bool SkPictureData::suitableForLayerOptimization() const { |
629 return fContentInfo.numLayers() > 0; | 629 return fContentInfo.numLayers() > 0; |
630 } | 630 } |
631 #endif | 631 #endif |
632 /////////////////////////////////////////////////////////////////////////////// | 632 /////////////////////////////////////////////////////////////////////////////// |
OLD | NEW |