diff options
author | Torne (Richard Coles) <torne@google.com> | 2013-09-04 12:39:42 +0100 |
---|---|---|
committer | Torne (Richard Coles) <torne@google.com> | 2013-09-04 12:39:42 +0100 |
commit | 51577a0a14ce598d26ab5f43997dedd8673da2db (patch) | |
tree | 8816d336a8224c24fba97fced4841774d7119b6f | |
parent | 18b139835ef816a2d6354b8989b60205d1eb7544 (diff) | |
parent | 754def2f35d1fb9b3b4000fb71399a9b64f7f336 (diff) | |
download | src-51577a0a14ce598d26ab5f43997dedd8673da2db.tar.gz |
Merge from Chromium at DEPS revision 30.0.1599.30
This commit was generated by merge_to_master.py.
Change-Id: I4ff13265959fb580a773611eb188a106a8ae1031
-rw-r--r-- | pdf/SkPDFStream.cpp | 19 | ||||
-rw-r--r-- | pdf/SkPDFStream.h | 2 |
2 files changed, 13 insertions, 8 deletions
diff --git a/pdf/SkPDFStream.cpp b/pdf/SkPDFStream.cpp index 4ae1f39d..e5709764 100644 --- a/pdf/SkPDFStream.cpp +++ b/pdf/SkPDFStream.cpp @@ -18,10 +18,8 @@ static bool skip_compression(SkPDFCatalog* catalog) { SkPDFDocument::kFavorSpeedOverSize_Flags); } -SkPDFStream::SkPDFStream(SkStream* stream) - : fState(kUnused_State), - fData(stream) { - SkSafeRef(stream); +SkPDFStream::SkPDFStream(SkStream* stream) : fState(kUnused_State) { + setData(stream); } SkPDFStream::SkPDFStream(SkData* data) : fState(kUnused_State) { @@ -30,9 +28,8 @@ SkPDFStream::SkPDFStream(SkData* data) : fState(kUnused_State) { SkPDFStream::SkPDFStream(const SkPDFStream& pdfStream) : SkPDFDict(), - fState(kUnused_State), - fData(pdfStream.fData.get()) { - fData.get()->ref(); + fState(kUnused_State) { + setData(pdfStream.fData.get()); bool removeLength = true; // Don't uncompress an already compressed stream, but we could. if (pdfStream.fState == kCompressed_State) { @@ -64,7 +61,8 @@ void SkPDFStream::emitObject(SkWStream* stream, SkPDFCatalog* catalog, this->INHERITED::emitObject(stream, catalog, false); stream->writeText(" stream\n"); - stream->write(fData->getMemoryBase(), fData->getLength()); + stream->writeStream(fData.get(), fData->getLength()); + fData->rewind(); stream->writeText("\nendstream"); } @@ -89,6 +87,11 @@ void SkPDFStream::setData(SkData* data) { } void SkPDFStream::setData(SkStream* stream) { + // Code assumes that the stream starts at the beginning and is rewindable. + if (stream) { + SkASSERT(stream->getPosition() == 0); + SkASSERT(stream->rewind()); + } fData.reset(stream); SkSafeRef(stream); } diff --git a/pdf/SkPDFStream.h b/pdf/SkPDFStream.h index ed18510c..d7ff115b 100644 --- a/pdf/SkPDFStream.h +++ b/pdf/SkPDFStream.h @@ -21,6 +21,8 @@ class SkPDFCatalog; A stream object in a PDF. Note, all streams must be indirect objects (via SkObjRef). + TODO(vandebo): SkStream should be replaced by SkStreamRewindable when that + is feasible. */ class SkPDFStream : public SkPDFDict { public: |