Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(127)

Unified Diff: src/core/SkPictureData.cpp

Issue 715413002: More cleanup: streamline paths and bitmaps. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: rebase Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/core/SkPictureData.h ('k') | src/core/SkPictureRecord.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/core/SkPictureData.cpp
diff --git a/src/core/SkPictureData.cpp b/src/core/SkPictureData.cpp
index 556e2a5d906306094a1751b8370b15f39b65ef04..29e4415cfa831192a069766574e22391c24fb308 100644
--- a/src/core/SkPictureData.cpp
+++ b/src/core/SkPictureData.cpp
@@ -30,10 +30,8 @@ SkPictureData::SkPictureData(const SkPictInfo& info)
void SkPictureData::initForPlayback() const {
// ensure that the paths bounds are pre-computed
- if (fPathHeap.get()) {
- for (int i = 0; i < fPathHeap->count(); i++) {
- (*fPathHeap.get())[i].updateBoundsCache();
- }
+ for (int i = 0; i < fPaths->count(); i++) {
+ (*fPaths)[i].updateBoundsCache();
}
}
@@ -48,11 +46,9 @@ SkPictureData::SkPictureData(const SkPictureRecord& record,
fContentInfo.set(record.fContentInfo);
- fBitmaps = record.fBitmapHeap->extractBitmaps();
- fPaints = SkTRefArray<SkPaint>::Create(record.fPaints.begin(), record.fPaints.count());
-
- fBitmapHeap.reset(SkSafeRef(record.fBitmapHeap));
- fPathHeap.reset(SkSafeRef(record.pathHeap()));
+ fBitmaps = SkTRefArray<SkBitmap>::Create(record.fBitmaps.begin(), record.fBitmaps.count());
+ fPaints = SkTRefArray<SkPaint> ::Create(record.fPaints .begin(), record.fPaints .count());
+ fPaths = SkTRefArray<SkPath> ::Create(record.fPaths .begin(), record.fPaths .count());
this->initForPlayback();
@@ -80,6 +76,7 @@ SkPictureData::SkPictureData(const SkPictureRecord& record,
void SkPictureData::init() {
fBitmaps = NULL;
fPaints = NULL;
+ fPaths = NULL;
fPictureRefs = NULL;
fPictureCount = 0;
fTextBlobRefs = NULL;
@@ -93,6 +90,7 @@ SkPictureData::~SkPictureData() {
SkSafeUnref(fBitmaps);
SkSafeUnref(fPaints);
+ SkSafeUnref(fPaths);
for (int i = 0; i < fPictureCount; i++) {
fPictureRefs[i]->unref();
@@ -210,9 +208,12 @@ void SkPictureData::flattenToBuffer(SkWriteBuffer& buffer) const {
}
}
- if ((n = SafeCount(fPathHeap.get())) > 0) {
+ if ((n = SafeCount(fPaths)) > 0) {
write_tag_size(buffer, SK_PICT_PATH_BUFFER_TAG, n);
- fPathHeap->flatten(buffer);
+ buffer.writeInt(n);
+ for (int i = 0; i < n; i++) {
+ buffer.writePath((*fPaths)[i]);
+ }
}
if (fTextBlobCount > 0) {
@@ -441,9 +442,12 @@ bool SkPictureData::parseBufferTag(SkReadBuffer& buffer,
} break;
case SK_PICT_PATH_BUFFER_TAG:
if (size > 0) {
- fPathHeap.reset(SkNEW_ARGS(SkPathHeap, (buffer)));
- }
- break;
+ const int count = buffer.readInt();
+ fPaths = SkTRefArray<SkPath>::Create(count);
+ for (int i = 0; i < count; i++) {
+ buffer.readPath(&fPaths->writableAt(i));
+ }
+ } break;
case SK_PICT_TEXTBLOB_BUFFER_TAG: {
if (!buffer.validate((0 == fTextBlobCount) && (NULL == fTextBlobRefs))) {
return false;
« no previous file with comments | « src/core/SkPictureData.h ('k') | src/core/SkPictureRecord.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698