Index: src/pdf/SkPDFTypes.cpp |
diff --git a/src/pdf/SkPDFTypes.cpp b/src/pdf/SkPDFTypes.cpp |
index 6bf6afc6113399aba7bb9b4908549597bd83199c..838b5efeb9d1166281a9538bc2e50aeb71d2535c 100644 |
--- a/src/pdf/SkPDFTypes.cpp |
+++ b/src/pdf/SkPDFTypes.cpp |
@@ -113,8 +113,7 @@ static void write_name_escaped(SkWStream* o, const char* name) { |
} |
void SkPDFUnion::emitObject(SkWStream* stream, |
- const SkPDFObjNumMap& objNumMap, |
- const SkPDFSubstituteMap& substitutes) const { |
+ const SkPDFObjNumMap& objNumMap) const { |
switch (fType) { |
case Type::kInt: |
stream->writeDecAsText(fIntValue); |
@@ -147,20 +146,18 @@ void SkPDFUnion::emitObject(SkWStream* stream, |
pun(fSkString)->size()); |
return; |
case Type::kObjRef: |
- stream->writeDecAsText(objNumMap.getObjectNumber( |
- substitutes.getSubstitute(fObject))); |
+ stream->writeDecAsText(objNumMap.getObjectNumber(fObject)); |
stream->writeText(" 0 R"); // Generation number is always 0. |
return; |
case Type::kObject: |
- fObject->emitObject(stream, objNumMap, substitutes); |
+ fObject->emitObject(stream, objNumMap); |
return; |
default: |
SkDEBUGFAIL("SkPDFUnion::emitObject with bad type"); |
} |
} |
-void SkPDFUnion::addResources(SkPDFObjNumMap* objNumMap, |
- const SkPDFSubstituteMap& substituteMap) const { |
+void SkPDFUnion::addResources(SkPDFObjNumMap* objNumMap) const { |
switch (fType) { |
case Type::kInt: |
case Type::kColorComponent: |
@@ -171,13 +168,11 @@ void SkPDFUnion::addResources(SkPDFObjNumMap* objNumMap, |
case Type::kNameSkS: |
case Type::kStringSkS: |
return; // These have no resources. |
- case Type::kObjRef: { |
- SkPDFObject* obj = substituteMap.getSubstitute(fObject); |
- objNumMap->addObjectRecursively(obj, substituteMap); |
+ case Type::kObjRef: |
+ objNumMap->addObjectRecursively(fObject); |
return; |
- } |
case Type::kObject: |
- fObject->addResources(objNumMap, substituteMap); |
+ fObject->addResources(objNumMap); |
return; |
default: |
SkDEBUGFAIL("SkPDFUnion::addResources with bad type"); |
@@ -253,13 +248,11 @@ SkPDFUnion SkPDFUnion::Object(sk_sp<SkPDFObject> objSp) { |
#if 0 // Enable if needed. |
void SkPDFAtom::emitObject(SkWStream* stream, |
- const SkPDFObjNumMap& objNumMap, |
- const SkPDFSubstituteMap& substitutes) const { |
- fValue.emitObject(stream, objNumMap, substitutes); |
+ const SkPDFObjNumMap& objNumMap) const { |
+ fValue.emitObject(stream, objNumMap); |
} |
-void SkPDFAtom::addResources(SkPDFObjNumMap* map, |
- const SkPDFSubstituteMap& substitutes) const { |
- fValue.addResources(map, substitutes); |
+void SkPDFAtom::addResources(SkPDFObjNumMap* map) const { |
+ fValue.addResources(map); |
} |
#endif // 0 |
@@ -282,12 +275,11 @@ void SkPDFArray::reserve(int length) { |
} |
void SkPDFArray::emitObject(SkWStream* stream, |
- const SkPDFObjNumMap& objNumMap, |
- const SkPDFSubstituteMap& substitutes) const { |
+ const SkPDFObjNumMap& objNumMap) const { |
SkASSERT(!fDumped); |
stream->writeText("["); |
for (int i = 0; i < fValues.count(); i++) { |
- fValues[i].emitObject(stream, objNumMap, substitutes); |
+ fValues[i].emitObject(stream, objNumMap); |
if (i + 1 < fValues.count()) { |
stream->writeText(" "); |
} |
@@ -295,11 +287,10 @@ void SkPDFArray::emitObject(SkWStream* stream, |
stream->writeText("]"); |
} |
-void SkPDFArray::addResources(SkPDFObjNumMap* catalog, |
- const SkPDFSubstituteMap& substitutes) const { |
+void SkPDFArray::addResources(SkPDFObjNumMap* catalog) const { |
SkASSERT(!fDumped); |
for (const SkPDFUnion& value : fValues) { |
- value.addResources(catalog, substitutes); |
+ value.addResources(catalog); |
} |
} |
@@ -364,33 +355,30 @@ SkPDFDict::SkPDFDict(const char type[]) { |
} |
void SkPDFDict::emitObject(SkWStream* stream, |
- const SkPDFObjNumMap& objNumMap, |
- const SkPDFSubstituteMap& substitutes) const { |
+ const SkPDFObjNumMap& objNumMap) const { |
stream->writeText("<<"); |
- this->emitAll(stream, objNumMap, substitutes); |
+ this->emitAll(stream, objNumMap); |
stream->writeText(">>"); |
} |
void SkPDFDict::emitAll(SkWStream* stream, |
- const SkPDFObjNumMap& objNumMap, |
- const SkPDFSubstituteMap& substitutes) const { |
+ const SkPDFObjNumMap& objNumMap) const { |
SkASSERT(!fDumped); |
for (int i = 0; i < fRecords.count(); i++) { |
- fRecords[i].fKey.emitObject(stream, objNumMap, substitutes); |
+ fRecords[i].fKey.emitObject(stream, objNumMap); |
stream->writeText(" "); |
- fRecords[i].fValue.emitObject(stream, objNumMap, substitutes); |
+ fRecords[i].fValue.emitObject(stream, objNumMap); |
if (i + 1 < fRecords.count()) { |
stream->writeText("\n"); |
} |
} |
} |
-void SkPDFDict::addResources(SkPDFObjNumMap* catalog, |
- const SkPDFSubstituteMap& substitutes) const { |
+void SkPDFDict::addResources(SkPDFObjNumMap* catalog) const { |
SkASSERT(!fDumped); |
for (int i = 0; i < fRecords.count(); i++) { |
- fRecords[i].fKey.addResources(catalog, substitutes); |
- fRecords[i].fValue.addResources(catalog, substitutes); |
+ fRecords[i].fKey.addResources(catalog); |
+ fRecords[i].fValue.addResources(catalog); |
} |
} |
@@ -463,20 +451,17 @@ void SkPDFSharedStream::drop() { |
#ifdef SK_PDF_LESS_COMPRESSION |
void SkPDFSharedStream::emitObject( |
SkWStream* stream, |
- const SkPDFObjNumMap& objNumMap, |
- const SkPDFSubstituteMap& substitutes) const { |
+ const SkPDFObjNumMap& objNumMap) const { |
SkASSERT(fAsset); |
std::unique_ptr<SkStreamAsset> dup(fAsset->duplicate()); |
SkASSERT(dup && dup->hasLength()); |
size_t length = dup->getLength(); |
stream->writeText("<<"); |
- fDict.emitAll(stream, objNumMap, substitutes); |
+ fDict.emitAll(stream, objNumMap); |
stream->writeText("\n"); |
- SkPDFUnion::Name("Length").emitObject( |
- stream, objNumMap, substitutes); |
+ SkPDFUnion::Name("Length").emitObject(stream, objNumMap); |
stream->writeText(" "); |
- SkPDFUnion::Int(length).emitObject( |
- stream, objNumMap, substitutes); |
+ SkPDFUnion::Int(length).emitObject(stream, objNumMap); |
stream->writeText("\n>>stream\n"); |
SkStreamCopy(stream, dup.get()); |
stream->writeText("\nendstream"); |
@@ -484,8 +469,7 @@ void SkPDFSharedStream::emitObject( |
#else |
void SkPDFSharedStream::emitObject( |
SkWStream* stream, |
- const SkPDFObjNumMap& objNumMap, |
- const SkPDFSubstituteMap& substitutes) const { |
+ const SkPDFObjNumMap& objNumMap) const { |
SkASSERT(fAsset); |
SkDynamicMemoryWStream buffer; |
SkDeflateWStream deflateWStream(&buffer); |
@@ -496,15 +480,15 @@ void SkPDFSharedStream::emitObject( |
deflateWStream.finalize(); |
size_t length = buffer.bytesWritten(); |
stream->writeText("<<"); |
- fDict.emitAll(stream, objNumMap, substitutes); |
+ fDict.emitAll(stream, objNumMap); |
stream->writeText("\n"); |
- SkPDFUnion::Name("Length").emitObject(stream, objNumMap, substitutes); |
+ SkPDFUnion::Name("Length").emitObject(stream, objNumMap); |
stream->writeText(" "); |
- SkPDFUnion::Int(length).emitObject(stream, objNumMap, substitutes); |
+ SkPDFUnion::Int(length).emitObject(stream, objNumMap); |
stream->writeText("\n"); |
- SkPDFUnion::Name("Filter").emitObject(stream, objNumMap, substitutes); |
+ SkPDFUnion::Name("Filter").emitObject(stream, objNumMap); |
stream->writeText(" "); |
- SkPDFUnion::Name("FlateDecode").emitObject(stream, objNumMap, substitutes); |
+ SkPDFUnion::Name("FlateDecode").emitObject(stream, objNumMap); |
stream->writeText(">>"); |
stream->writeText(" stream\n"); |
buffer.writeToStream(stream); |
@@ -513,9 +497,9 @@ void SkPDFSharedStream::emitObject( |
#endif |
void SkPDFSharedStream::addResources( |
- SkPDFObjNumMap* catalog, const SkPDFSubstituteMap& substitutes) const { |
+ SkPDFObjNumMap* catalog) const { |
SkASSERT(fAsset); |
- fDict.addResources(catalog, substitutes); |
+ fDict.addResources(catalog); |
} |
@@ -534,10 +518,9 @@ SkPDFStream::SkPDFStream() {} |
SkPDFStream::~SkPDFStream() {} |
-void SkPDFStream::addResources( |
- SkPDFObjNumMap* catalog, const SkPDFSubstituteMap& substitutes) const { |
+void SkPDFStream::addResources(SkPDFObjNumMap* catalog) const { |
SkASSERT(fCompressedData); |
- fDict.addResources(catalog, substitutes); |
+ fDict.addResources(catalog); |
} |
void SkPDFStream::drop() { |
@@ -546,10 +529,9 @@ void SkPDFStream::drop() { |
} |
void SkPDFStream::emitObject(SkWStream* stream, |
- const SkPDFObjNumMap& objNumMap, |
- const SkPDFSubstituteMap& substitutes) const { |
+ const SkPDFObjNumMap& objNumMap) const { |
SkASSERT(fCompressedData); |
- fDict.emitObject(stream, objNumMap, substitutes); |
+ fDict.emitObject(stream, objNumMap); |
// duplicate (a cheap operation) preserves const on fCompressedData. |
std::unique_ptr<SkStreamAsset> dup(fCompressedData->duplicate()); |
SkASSERT(dup); |
@@ -594,25 +576,6 @@ void SkPDFStream::setData(std::unique_ptr<SkStreamAsset> stream) { |
//////////////////////////////////////////////////////////////////////////////// |
-SkPDFSubstituteMap::~SkPDFSubstituteMap() { |
- fSubstituteMap.foreach( |
- [](SkPDFObject*, SkPDFObject** v) { (*v)->unref(); }); |
-} |
- |
-void SkPDFSubstituteMap::setSubstitute(SkPDFObject* original, |
- SkPDFObject* substitute) { |
- SkASSERT(original != substitute); |
- SkASSERT(!fSubstituteMap.find(original)); |
- fSubstituteMap.set(original, SkRef(substitute)); |
-} |
- |
-SkPDFObject* SkPDFSubstituteMap::getSubstitute(SkPDFObject* object) const { |
- SkPDFObject** found = fSubstituteMap.find(object); |
- return found ? *found : object; |
-} |
- |
-//////////////////////////////////////////////////////////////////////////////// |
- |
bool SkPDFObjNumMap::addObject(SkPDFObject* obj) { |
if (fObjectNumbers.find(obj)) { |
return false; |
@@ -622,10 +585,9 @@ bool SkPDFObjNumMap::addObject(SkPDFObject* obj) { |
return true; |
} |
-void SkPDFObjNumMap::addObjectRecursively(SkPDFObject* obj, |
- const SkPDFSubstituteMap& subs) { |
+void SkPDFObjNumMap::addObjectRecursively(SkPDFObject* obj) { |
if (obj && this->addObject(obj)) { |
- obj->addResources(this, subs); |
+ obj->addResources(this); |
} |
} |