SkPictureData::SkPictureData(const SkPictureRecord& record, const SkPictInfo& info, bool deepCopyOps) : fInfo(info) { this->init(); fOpData = record.opData(deepCopyOps); fContentInfo.set(record.fContentInfo); fBitmaps = record.fBitmaps; fPaints = record.fPaints; fPaths.reset(record.fPaths.count()); record.fPaths.foreach([this](const SkPath& path, int n) { // These indices are logically 1-based, but we need to serialize them // 0-based to keep the deserializing SkPictureData::getPath() working. fPaths[n-1] = path; }); this->initForPlayback(); const SkTDArray<const SkPicture* >& pictures = record.getPictureRefs(); fPictureCount = pictures.count(); if (fPictureCount > 0) { fPictureRefs = new const SkPicture* [fPictureCount]; for (int i = 0; i < fPictureCount; i++) { fPictureRefs[i] = pictures[i]; fPictureRefs[i]->ref(); } } // templatize to consolidate with similar picture logic? const SkTDArray<const SkTextBlob*>& blobs = record.getTextBlobRefs(); fTextBlobCount = blobs.count(); if (fTextBlobCount > 0) { fTextBlobRefs = new const SkTextBlob* [fTextBlobCount]; for (int i = 0; i < fTextBlobCount; ++i) { fTextBlobRefs[i] = SkRef(blobs[i]); } } const SkTDArray<const SkImage*>& imgs = record.getImageRefs(); fImageCount = imgs.count(); if (fImageCount > 0) { fImageRefs = new const SkImage* [fImageCount]; for (int i = 0; i < fImageCount; ++i) { fImageRefs[i] = SkRef(imgs[i]); } } }
SkPictureData::SkPictureData(const SkPictureRecord& record, const SkPictInfo& info, bool deepCopyOps) : fInfo(info) { this->init(); fOpData = record.opData(deepCopyOps); fContentInfo.set(record.fContentInfo); fBitmaps = record.fBitmaps; fPaints = record.fPaints; fPaths = record.fPaths; this->initForPlayback(); const SkTDArray<const SkPicture* >& pictures = record.getPictureRefs(); fPictureCount = pictures.count(); if (fPictureCount > 0) { fPictureRefs = new const SkPicture* [fPictureCount]; for (int i = 0; i < fPictureCount; i++) { fPictureRefs[i] = pictures[i]; fPictureRefs[i]->ref(); } } // templatize to consolidate with similar picture logic? const SkTDArray<const SkTextBlob*>& blobs = record.getTextBlobRefs(); fTextBlobCount = blobs.count(); if (fTextBlobCount > 0) { fTextBlobRefs = new const SkTextBlob* [fTextBlobCount]; for (int i = 0; i < fTextBlobCount; ++i) { fTextBlobRefs[i] = SkRef(blobs[i]); } } const SkTDArray<const SkImage*>& imgs = record.getImageRefs(); fImageCount = imgs.count(); if (fImageCount > 0) { fImageRefs = new const SkImage* [fImageCount]; for (int i = 0; i < fImageCount; ++i) { fImageRefs[i] = SkRef(imgs[i]); } } }