| 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 |