Index: src/pdf/SkPDFTypes.cpp |
diff --git a/src/pdf/SkPDFTypes.cpp b/src/pdf/SkPDFTypes.cpp |
index 4a84876b2021a94667d0f657ef9b10a1c2d668c5..b0763a3c5979de59ebb8ae4d41ef35eb4a41290a 100644 |
--- a/src/pdf/SkPDFTypes.cpp |
+++ b/src/pdf/SkPDFTypes.cpp |
@@ -19,32 +19,9 @@ |
/////////////////////////////////////////////////////////////////////////////// |
-void SkPDFObject::emit(SkWStream* stream, SkPDFCatalog* catalog, |
- bool indirect) { |
- SkPDFObject* realObject = catalog->getSubstituteObject(this); |
- if (indirect) { |
- realObject->emitIndirectObject(stream, catalog); |
- } else { |
- realObject->emitObject(stream, catalog); |
- } |
-} |
- |
-size_t SkPDFObject::getOutputSize(SkPDFCatalog* catalog, bool indirect) { |
- SkDynamicMemoryWStream buffer; |
- emit(&buffer, catalog, indirect); |
- return buffer.getOffset(); |
-} |
- |
void SkPDFObject::getResources(const SkTSet<SkPDFObject*>& knownResourceObjects, |
SkTSet<SkPDFObject*>* newResourceObjects) {} |
-void SkPDFObject::emitIndirectObject(SkWStream* stream, SkPDFCatalog* catalog) { |
- catalog->emitObjectNumber(stream, this); |
- stream->writeText(" obj\n"); |
- emit(stream, catalog, false); |
- stream->writeText("\nendobj\n"); |
-} |
- |
void SkPDFObject::AddResourceHelper(SkPDFObject* resource, |
SkTDArray<SkPDFObject*>* list) { |
list->push(resource); |
@@ -70,6 +47,8 @@ void SkPDFObject::GetResourcesHelper( |
} |
} |
+//////////////////////////////////////////////////////////////////////////////// |
+ |
SkPDFObjRef::SkPDFObjRef(SkPDFObject* obj) : fObj(obj) { |
SkSafeRef(obj); |
} |
@@ -81,6 +60,8 @@ void SkPDFObjRef::emitObject(SkWStream* stream, SkPDFCatalog* catalog) { |
stream->writeText(" R"); |
} |
+//////////////////////////////////////////////////////////////////////////////// |
+ |
SkPDFInt::SkPDFInt(int32_t value) : fValue(value) {} |
SkPDFInt::~SkPDFInt() {} |
@@ -88,6 +69,8 @@ void SkPDFInt::emitObject(SkWStream* stream, SkPDFCatalog* catalog) { |
stream->writeDecAsText(fValue); |
} |
+//////////////////////////////////////////////////////////////////////////////// |
+ |
SkPDFBool::SkPDFBool(bool value) : fValue(value) {} |
SkPDFBool::~SkPDFBool() {} |
@@ -99,6 +82,8 @@ void SkPDFBool::emitObject(SkWStream* stream, SkPDFCatalog* catalog) { |
} |
} |
+//////////////////////////////////////////////////////////////////////////////// |
+ |
SkPDFScalar::SkPDFScalar(SkScalar value) : fValue(value) {} |
SkPDFScalar::~SkPDFScalar() {} |
@@ -155,6 +140,8 @@ void SkPDFScalar::Append(SkScalar value, SkWStream* stream) { |
#endif // SK_ALLOW_LARGE_PDF_SCALARS |
} |
+//////////////////////////////////////////////////////////////////////////////// |
+ |
SkPDFString::SkPDFString(const char value[]) |
: fValue(FormatString(value, strlen(value))) { |
} |
@@ -238,6 +225,8 @@ SkString SkPDFString::DoFormatString(const void* input, size_t len, |
return result; |
} |
+//////////////////////////////////////////////////////////////////////////////// |
+ |
SkPDFName::SkPDFName(const char name[]) : fValue(FormatName(SkString(name))) {} |
SkPDFName::SkPDFName(const SkString& name) : fValue(FormatName(name)) {} |
SkPDFName::~SkPDFName() {} |
@@ -270,6 +259,8 @@ SkString SkPDFName::FormatName(const SkString& input) { |
return result; |
} |
+//////////////////////////////////////////////////////////////////////////////// |
+ |
SkPDFArray::SkPDFArray() {} |
SkPDFArray::~SkPDFArray() { |
fValue.unrefAll(); |
@@ -278,7 +269,7 @@ SkPDFArray::~SkPDFArray() { |
void SkPDFArray::emitObject(SkWStream* stream, SkPDFCatalog* catalog) { |
stream->writeText("["); |
for (int i = 0; i < fValue.count(); i++) { |
- fValue[i]->emit(stream, catalog, false); |
+ catalog->getSubstituteObject(fValue[i])->emitObject(stream, catalog); |
if (i + 1 < fValue.count()) { |
stream->writeText(" "); |
} |
@@ -338,7 +329,6 @@ int SkPDFDict::size() const { |
return fValue.count(); |
} |
- |
void SkPDFDict::emitObject(SkWStream* stream, SkPDFCatalog* catalog) { |
SkAutoMutexAcquire lock(fMutex); // If another thread triggers a |
// resize while this thread is in |
@@ -350,7 +340,8 @@ void SkPDFDict::emitObject(SkWStream* stream, SkPDFCatalog* catalog) { |
SkASSERT(fValue[i].value); |
fValue[i].key->emitObject(stream, catalog); |
stream->writeText(" "); |
- fValue[i].value->emit(stream, catalog, false); |
+ catalog->getSubstituteObject(fValue[i].value) |
+ ->emitObject(stream, catalog); |
stream->writeText("\n"); |
} |
stream->writeText(">>"); |