summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorne (Richard Coles) <torne@google.com>2013-09-04 12:33:00 +0100
committerTorne (Richard Coles) <torne@google.com>2013-09-04 12:33:00 +0100
commit754def2f35d1fb9b3b4000fb71399a9b64f7f336 (patch)
tree8816d336a8224c24fba97fced4841774d7119b6f
parent91a7ba01202ba83dbd9e4d08551f98e45ea029dd (diff)
parent7bdad2ae66bb289392f2b5d39dac783db1baf683 (diff)
downloadsrc-754def2f35d1fb9b3b4000fb71399a9b64f7f336.tar.gz
Merge third_party/skia/src from https://chromium.googlesource.com/a/external/skia/src.git at 7bdad2ae66bb289392f2b5d39dac783db1baf683
This commit was generated by merge_from_chromium.py. Change-Id: I61b493f8fe1c4ac540f33f5f843cb89e80de2716
-rw-r--r--pdf/SkPDFStream.cpp19
-rw-r--r--pdf/SkPDFStream.h2
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: