diff options
author | halcanary <halcanary@google.com> | 2015-03-25 11:29:18 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-03-25 11:29:18 -0700 |
commit | f41061cc8dc717b63efe75d2357a3176f04153ec (patch) | |
tree | 62b6e16dd3ea56e5bb0bd2eb8c58e74565974c40 /src/pdf/SkPDFPage.cpp | |
parent | 05245900bf6d49068b1668da1b38890a41e09bc5 (diff) |
SKPDF: refactor pdfcatalog and pdfdocument
SkPDFCatalog:
- remove first-page-specific code (no longer needed, never
used) (e.g. addObject()).
- Make use of SkHashMap for lookups (simplifies code).
- inline all small methods
- emitXrefTable moved to SkPDFDocument.cpp
- no longer store offsets in this data structure (moved to
SkPDFDocument.cpp)
- setFileOffset gone.
- own substitute refs directly.
SkPDFDocument::EmitPDF()
- All sites that call into SkPDFCatalog modified.
- catalog.addObject only called in a single place, after the
resouceSet is built
- offsets moved to local array.
SkPDFPage:
- finalizePage no longer deals with SkPDFCatalog or resource sets.
- GeneratePageTree no longer deals with SkPDFCatalog
SkPDFObjRef
- emitObject respects the substitution map
Unit Tests:
- respect SkPDFCatalog::addObject signature change.
SkTHash:
- #include SkChecksum for SkGoodHash
- Copyright notice added
Review URL: https://codereview.chromium.org/1033543002
Diffstat (limited to 'src/pdf/SkPDFPage.cpp')
-rw-r--r-- | src/pdf/SkPDFPage.cpp | 9 |
1 files changed, 1 insertions, 8 deletions
diff --git a/src/pdf/SkPDFPage.cpp b/src/pdf/SkPDFPage.cpp index f86b252105..13a7ffe4ed 100644 --- a/src/pdf/SkPDFPage.cpp +++ b/src/pdf/SkPDFPage.cpp @@ -21,9 +21,7 @@ SkPDFPage::SkPDFPage(const SkPDFDevice* content) SkPDFPage::~SkPDFPage() {} -void SkPDFPage::finalizePage(SkPDFCatalog* catalog, bool firstPage, - const SkTSet<SkPDFObject*>& knownResourceObjects, - SkTSet<SkPDFObject*>* newResourceObjects) { +void SkPDFPage::finalizePage() { if (fContentStream.get() == NULL) { SkAutoTUnref<SkPDFResourceDict> deviceResourceDict( fDevice->createResourceDict()); @@ -38,12 +36,10 @@ void SkPDFPage::finalizePage(SkPDFCatalog* catalog, bool firstPage, fContentStream.reset(new SkPDFStream(content.get())); insert("Contents", new SkPDFObjRef(fContentStream.get()))->unref(); } - catalog->addObject(fContentStream.get(), firstPage); } // static void SkPDFPage::GeneratePageTree(const SkTDArray<SkPDFPage*>& pages, - SkPDFCatalog* catalog, SkTDArray<SkPDFDict*>* pageTree, SkPDFDict** rootNode) { // PDF wants a tree describing all the pages in the document. We arbitrary @@ -94,10 +90,8 @@ void SkPDFPage::GeneratePageTree(const SkTDArray<SkPDFPage*>& pages, // Probably doesn't matter because they are so small. if (curNodes[i] != pages[0]) { pageTree->push(curNodes[i]); // Transfer reference. - catalog->addObject(curNodes[i], false); } else { SkSafeUnref(curNodes[i]); - catalog->addObject(curNodes[i], true); } } @@ -123,7 +117,6 @@ void SkPDFPage::GeneratePageTree(const SkTDArray<SkPDFPage*>& pages, } while (curNodes.count() > 1); pageTree->push(curNodes[0]); // Transfer reference. - catalog->addObject(curNodes[0], false); if (rootNode) { *rootNode = curNodes[0]; } |