Index: src/core/SkPicturePlayback.cpp |
diff --git a/src/core/SkPicturePlayback.cpp b/src/core/SkPicturePlayback.cpp |
index 27f0c58c6de9cf4d5ec6edc0c53bbb1b39769e79..38f7deb111ba296f5a560810d1381b0c498329da 100644 |
--- a/src/core/SkPicturePlayback.cpp |
+++ b/src/core/SkPicturePlayback.cpp |
@@ -96,9 +96,7 @@ SkPicturePlayback::SkPicturePlayback(const SkPictureRecord& record, bool deepCop |
record.fFlattenableHeap.setupPlaybacks(); |
fBitmaps = record.fBitmapHeap->extractBitmaps(); |
- fMatrices = record.fMatrices.unflattenToArray(); |
fPaints = record.fPaints.unflattenToArray(); |
- fRegions = record.fRegions.unflattenToArray(); |
fBitmapHeap.reset(SkSafeRef(record.fBitmapHeap)); |
fPathHeap.reset(SkSafeRef(record.fPathHeap)); |
@@ -170,8 +168,6 @@ SkPicturePlayback::SkPicturePlayback(const SkPicturePlayback& src, SkPictCopyInf |
fBitmapHeap.reset(SkSafeRef(src.fBitmapHeap.get())); |
fPathHeap.reset(SkSafeRef(src.fPathHeap.get())); |
- fMatrices = SkSafeRef(src.fMatrices); |
- fRegions = SkSafeRef(src.fRegions); |
fOpData = SkSafeRef(src.fOpData); |
fBoundingHierarchy = src.fBoundingHierarchy; |
@@ -261,10 +257,8 @@ SkPicturePlayback::SkPicturePlayback(const SkPicturePlayback& src, SkPictCopyInf |
void SkPicturePlayback::init() { |
fBitmaps = NULL; |
- fMatrices = NULL; |
fPaints = NULL; |
fPictureRefs = NULL; |
- fRegions = NULL; |
fPictureCount = 0; |
fOpData = NULL; |
fFactoryPlayback = NULL; |
@@ -276,9 +270,7 @@ SkPicturePlayback::~SkPicturePlayback() { |
fOpData->unref(); |
SkSafeUnref(fBitmaps); |
- SkSafeUnref(fMatrices); |
SkSafeUnref(fPaints); |
- SkSafeUnref(fRegions); |
SkSafeUnref(fBoundingHierarchy); |
SkSafeUnref(fStateTree); |
@@ -291,13 +283,11 @@ SkPicturePlayback::~SkPicturePlayback() { |
} |
void SkPicturePlayback::dumpSize() const { |
- SkDebugf("--- picture size: ops=%d bitmaps=%d [%d] matrices=%d [%d] paints=%d [%d] paths=%d regions=%d\n", |
+ SkDebugf("--- picture size: ops=%d bitmaps=%d [%d] paints=%d [%d] paths=%d\n", |
fOpData->size(), |
SafeCount(fBitmaps), SafeCount(fBitmaps) * sizeof(SkBitmap), |
- SafeCount(fMatrices), SafeCount(fMatrices) * sizeof(SkMatrix), |
SafeCount(fPaints), SafeCount(fPaints) * sizeof(SkPaint), |
- SafeCount(fPathHeap.get()), |
- SafeCount(fRegions)); |
+ SafeCount(fPathHeap.get())); |
} |
bool SkPicturePlayback::containsBitmaps() const { |
@@ -324,10 +314,8 @@ bool SkPicturePlayback::containsBitmaps() const { |
#define PICT_BUFFER_SIZE_TAG SkSetFourByteTag('a', 'r', 'a', 'y') |
// these are all inside the ARRAYS tag |
#define PICT_BITMAP_BUFFER_TAG SkSetFourByteTag('b', 't', 'm', 'p') |
-#define PICT_MATRIX_BUFFER_TAG SkSetFourByteTag('m', 't', 'r', 'x') |
#define PICT_PAINT_BUFFER_TAG SkSetFourByteTag('p', 'n', 't', ' ') |
#define PICT_PATH_BUFFER_TAG SkSetFourByteTag('p', 't', 'h', ' ') |
-#define PICT_REGION_BUFFER_TAG SkSetFourByteTag('r', 'g', 'n', ' ') |
// Always write this guy last (with no length field afterwards) |
#define PICT_EOF_TAG SkSetFourByteTag('e', 'o', 'f', ' ') |
@@ -392,14 +380,6 @@ void SkPicturePlayback::flattenToBuffer(SkOrderedWriteBuffer& buffer) const { |
} |
} |
- if ((n = SafeCount(fMatrices)) > 0) { |
- writeTagSize(buffer, PICT_MATRIX_BUFFER_TAG, n); |
- for (i = 0; i < n; i++) { |
- buffer.writeMatrix((*fMatrices)[i]); |
- } |
- |
- } |
- |
if ((n = SafeCount(fPaints)) > 0) { |
writeTagSize(buffer, PICT_PAINT_BUFFER_TAG, n); |
for (i = 0; i < n; i++) { |
@@ -411,13 +391,6 @@ void SkPicturePlayback::flattenToBuffer(SkOrderedWriteBuffer& buffer) const { |
writeTagSize(buffer, PICT_PATH_BUFFER_TAG, n); |
fPathHeap->flatten(buffer); |
} |
- |
- if ((n = SafeCount(fRegions)) > 0) { |
- writeTagSize(buffer, PICT_REGION_BUFFER_TAG, n); |
- for (i = 0; i < n; i++) { |
- buffer.writeRegion((*fRegions)[i]); |
- } |
- } |
} |
void SkPicturePlayback::serialize(SkWStream* stream, |
@@ -592,12 +565,6 @@ bool SkPicturePlayback::parseBufferTag(SkOrderedReadBuffer& buffer, |
bm->setImmutable(); |
} |
} break; |
- case PICT_MATRIX_BUFFER_TAG: |
- fMatrices = SkTRefArray<SkMatrix>::Create(size); |
- for (size_t i = 0; i < size; ++i) { |
- buffer.readMatrix(&fMatrices->writableAt(i)); |
- } |
- break; |
case PICT_PAINT_BUFFER_TAG: { |
fPaints = SkTRefArray<SkPaint>::Create(size); |
for (size_t i = 0; i < size; ++i) { |
@@ -609,12 +576,6 @@ bool SkPicturePlayback::parseBufferTag(SkOrderedReadBuffer& buffer, |
fPathHeap.reset(SkNEW_ARGS(SkPathHeap, (buffer))); |
} |
break; |
- case PICT_REGION_BUFFER_TAG: { |
- fRegions = SkTRefArray<SkRegion>::Create(size); |
- for (size_t i = 0; i < size; ++i) { |
- buffer.readRegion(&fRegions->writableAt(i)); |
- } |
- } break; |
default: |
// The tag was invalid. |
return false; |
@@ -822,7 +783,8 @@ void SkPicturePlayback::draw(SkCanvas& canvas, SkDrawPictureCallback* callback) |
} |
} break; |
case CLIP_REGION: { |
- const SkRegion& region = getRegion(reader); |
+ SkRegion region; |
+ this->getRegion(reader, ®ion); |
uint32_t packed = reader.readInt(); |
SkRegion::Op regionOp = ClipParams_unpackRegionOp(packed); |
size_t offsetToRestore = reader.readInt(); |
@@ -866,9 +828,12 @@ void SkPicturePlayback::draw(SkCanvas& canvas, SkDrawPictureCallback* callback) |
reader.setOffset(offsetToRestore); |
} |
} break; |
- case CONCAT: |
- canvas.concat(*getMatrix(reader)); |
+ case CONCAT: { |
+ SkMatrix matrix; |
+ this->getMatrix(reader, &matrix); |
+ canvas.concat(matrix); |
break; |
+ } |
case DRAW_BITMAP: { |
const SkPaint* paint = getPaint(reader); |
const SkBitmap& bitmap = getBitmap(reader); |
@@ -887,8 +852,9 @@ void SkPicturePlayback::draw(SkCanvas& canvas, SkDrawPictureCallback* callback) |
case DRAW_BITMAP_MATRIX: { |
const SkPaint* paint = getPaint(reader); |
const SkBitmap& bitmap = getBitmap(reader); |
- const SkMatrix* matrix = getMatrix(reader); |
- canvas.drawBitmapMatrix(bitmap, *matrix, paint); |
+ SkMatrix matrix; |
+ this->getMatrix(reader, &matrix); |
+ canvas.drawBitmapMatrix(bitmap, matrix, paint); |
} break; |
case DRAW_BITMAP_NINE: { |
const SkPaint* paint = getPaint(reader); |
@@ -1019,9 +985,9 @@ void SkPicturePlayback::draw(SkCanvas& canvas, SkDrawPictureCallback* callback) |
const SkPaint& paint = *getPaint(reader); |
getText(reader, &text); |
const SkPath& path = getPath(reader); |
- const SkMatrix* matrix = getMatrix(reader); |
- canvas.drawTextOnPath(text.text(), text.length(), path, |
- matrix, paint); |
+ SkMatrix matrix; |
+ this->getMatrix(reader, &matrix); |
+ canvas.drawTextOnPath(text.text(), text.length(), path, &matrix, paint); |
} break; |
case DRAW_VERTICES: { |
SkAutoTUnref<SkXfermode> xfer; |
@@ -1079,7 +1045,8 @@ void SkPicturePlayback::draw(SkCanvas& canvas, SkDrawPictureCallback* callback) |
} break; |
case SET_MATRIX: { |
SkMatrix matrix; |
- matrix.setConcat(initialMatrix, *getMatrix(reader)); |
+ this->getMatrix(reader, &matrix); |
+ matrix.postConcat(initialMatrix); |
canvas.setMatrix(matrix); |
} break; |
case SKEW: { |
@@ -1162,16 +1129,6 @@ int SkPicturePlayback::paths(size_t* size) { |
*size = result; |
return fPathCount; |
} |
- |
-int SkPicturePlayback::regions(size_t* size) { |
- size_t result = 0; |
- for (int index = 0; index < fRegionCount; index++) { |
- // const SkRegion& region = fRegions[index]; |
- result += sizeof(SkRegion); // region->size(); |
- } |
- *size = result; |
- return fRegionCount; |
-} |
#endif |
#ifdef SK_DEBUG_DUMP |
@@ -1471,7 +1428,6 @@ void SkPicturePlayback::dumpStream() { |
DUMP_INT(offsetToRestore); |
} break; |
case CLIP_REGION: { |
- DUMP_PTR(SkRegion, &getRegion()); |
DUMP_INT(SkRegion::Op); |
DUMP_INT(offsetToRestore); |
} break; |
@@ -1481,7 +1437,6 @@ void SkPicturePlayback::dumpStream() { |
DUMP_INT(offsetToRestore); |
} break; |
case CONCAT: |
- DUMP_PTR(SkMatrix, getMatrix()); |
break; |
case DRAW_BITMAP: { |
DUMP_PTR(SkPaint, getPaint()); |
@@ -1543,7 +1498,6 @@ void SkPicturePlayback::dumpStream() { |
DUMP_PTR(SkPaint, getPaint()); |
DUMP_TEXT(); |
DUMP_PTR(SkPath, &getPath()); |
- DUMP_PTR(SkMatrix, getMatrix()); |
} break; |
case RESTORE: |
break; |
@@ -1596,21 +1550,6 @@ void SkPicturePlayback::dump() const { |
if (fBitmapCount > 0) |
SkDebugf("%s0};\n", pBuffer); |
- if (fMatrixCount > 0) |
- SkDebugf("// matrices (%d)\n", fMatrixCount); |
- for (index = 0; index < fMatrixCount; index++) { |
- const SkMatrix& matrix = fMatrices[index]; |
- dumpMatrix(matrix); |
- } |
- bufferPtr = pBuffer; |
- if (fMatrixCount > 0) |
- bufferPtr += snprintf(bufferPtr, DUMP_BUFFER_SIZE - (bufferPtr - pBuffer), |
- "Matrices matrices = {"); |
- for (index = 0; index < fMatrixCount; index++) |
- bufferPtr += snprintf(bufferPtr, DUMP_BUFFER_SIZE - (bufferPtr - pBuffer), |
- "matrix%p, ", &fMatrices[index]); |
- if (fMatrixCount > 0) |
- SkDebugf("%s0};\n", pBuffer); |
if (fPaintCount > 0) |
SkDebugf("// paints (%d)\n", fPaintCount); |
@@ -1655,20 +1594,6 @@ void SkPicturePlayback::dump() const { |
if (fPictureCount > 0) |
SkDebugf("%s0};\n", pBuffer); |
- for (index = 0; index < fRegionCount; index++) { |
- const SkRegion& region = fRegions[index]; |
- dumpRegion(region); |
- } |
- bufferPtr = pBuffer; |
- if (fRegionCount > 0) |
- bufferPtr += snprintf(bufferPtr, DUMP_BUFFER_SIZE - (bufferPtr - pBuffer), |
- "Regions regions = {"); |
- for (index = 0; index < fRegionCount; index++) |
- bufferPtr += snprintf(bufferPtr, DUMP_BUFFER_SIZE - (bufferPtr - pBuffer), |
- "region%p, ", &fRegions[index]); |
- if (fRegionCount > 0) |
- SkDebugf("%s0};\n", pBuffer); |
- |
const_cast<SkPicturePlayback*>(this)->dumpStream(); |
} |