[PDF] Remove one copy of each content stream.
Review URL: http://codereview.appspot.com/4231044
git-svn-id: http://skia.googlecode.com/svn/trunk@856 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/pdf/SkPDFDevice.cpp b/src/pdf/SkPDFDevice.cpp
index 1c6477f..cf6a68e 100644
--- a/src/pdf/SkPDFDevice.cpp
+++ b/src/pdf/SkPDFDevice.cpp
@@ -558,10 +558,16 @@
return mediaBox;
}
-SkString SkPDFDevice::content() const {
- SkString result = fContent;
- for (int i = 0; i < fGraphicStackIndex; i++)
- result.append("Q\n");
+SkStream* SkPDFDevice::content() const {
+ size_t offset = fContent.size();
+ char* data = (char*)sk_malloc_throw(offset + fGraphicStackIndex * 2);
+ memcpy(data, fContent.c_str(), offset);
+ for (int i = 0; i < fGraphicStackIndex; i++) {
+ data[offset++] = 'Q';
+ data[offset++] = '\n';
+ }
+ SkMemoryStream* result = new SkMemoryStream;
+ result->setMemoryOwned(data, offset);
return result;
}