diff options
author | halcanary <halcanary@google.com> | 2015-04-28 06:21:01 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-04-28 06:21:02 -0700 |
commit | 438de49857cab98981b35d04dc49c2135124d18b (patch) | |
tree | 0f3d26f8ebbf16a0e1e92679dff4a631f0b99ff0 | |
parent | f4219ddf31b2171a5576ab98d1fd2deab4d816fd (diff) |
SkPDF: clean up uses of deprecated calls in SkPDFDevice.
Clean up reference count handling to avoid churn and follow pattern used elsewhere in SkPDF.
BUG=skia:3585
Review URL: https://codereview.chromium.org/1103163002
-rw-r--r-- | src/pdf/SkPDFDevice.cpp | 36 | ||||
-rw-r--r-- | src/pdf/SkPDFDevice.h | 2 |
2 files changed, 23 insertions, 15 deletions
diff --git a/src/pdf/SkPDFDevice.cpp b/src/pdf/SkPDFDevice.cpp index 40a4576cb6..88f9b810b6 100644 --- a/src/pdf/SkPDFDevice.cpp +++ b/src/pdf/SkPDFDevice.cpp @@ -1464,26 +1464,30 @@ bool SkPDFDevice::handlePointAnnotation(const SkPoint* points, size_t count, return false; } -SkPDFDict* SkPDFDevice::createLinkAnnotation(const SkRect& r, - const SkMatrix& matrix) { +void SkPDFDevice::addAnnotation(SkPDFDict* annotation) { + if (NULL == fAnnotations) { + fAnnotations = SkNEW(SkPDFArray); + } + fAnnotations->appendObject(annotation); +} + +static SkPDFDict* create_link_annotation(const SkRect& r, + const SkMatrix& initialTransform, + const SkMatrix& matrix) { SkMatrix transform = matrix; - transform.postConcat(fInitialTransform); + transform.postConcat(initialTransform); SkRect translatedRect; transform.mapRect(&translatedRect, r); - if (NULL == fAnnotations) { - fAnnotations = SkNEW(SkPDFArray); - } - SkPDFDict* annotation(SkNEW_ARGS(SkPDFDict, ("Annot"))); + SkAutoTUnref<SkPDFDict> annotation(SkNEW_ARGS(SkPDFDict, ("Annot"))); annotation->insertName("Subtype", "Link"); - fAnnotations->append(annotation); SkAutoTUnref<SkPDFArray> border(SkNEW(SkPDFArray)); border->reserve(3); border->appendInt(0); // Horizontal corner radius. border->appendInt(0); // Vertical corner radius. border->appendInt(0); // Width, 0 = no border. - annotation->insert("Border", border.get()); + annotation->insertObject("Border", border.detach()); SkAutoTUnref<SkPDFArray> rect(SkNEW(SkPDFArray)); rect->reserve(4); @@ -1491,29 +1495,33 @@ SkPDFDict* SkPDFDevice::createLinkAnnotation(const SkRect& r, rect->appendScalar(translatedRect.fTop); rect->appendScalar(translatedRect.fRight); rect->appendScalar(translatedRect.fBottom); - annotation->insert("Rect", rect.get()); + annotation->insertObject("Rect", rect.detach()); - return annotation; + return annotation.detach(); } void SkPDFDevice::handleLinkToURL(SkData* urlData, const SkRect& r, const SkMatrix& matrix) { - SkAutoTUnref<SkPDFDict> annotation(createLinkAnnotation(r, matrix)); + SkAutoTUnref<SkPDFDict> annotation( + create_link_annotation(r, fInitialTransform, matrix)); SkString url(static_cast<const char *>(urlData->data()), urlData->size() - 1); SkAutoTUnref<SkPDFDict> action(SkNEW_ARGS(SkPDFDict, ("Action"))); action->insertName("S", "URI"); action->insertString("URI", url); - annotation->insert("A", action.get()); + annotation->insertObject("A", action.detach()); + this->addAnnotation(annotation.detach()); } void SkPDFDevice::handleLinkToNamedDest(SkData* nameData, const SkRect& r, const SkMatrix& matrix) { - SkAutoTUnref<SkPDFDict> annotation(createLinkAnnotation(r, matrix)); + SkAutoTUnref<SkPDFDict> annotation( + create_link_annotation(r, fInitialTransform, matrix)); SkString name(static_cast<const char *>(nameData->data()), nameData->size() - 1); annotation->insertName("Dest", name); + this->addAnnotation(annotation.detach()); } struct NamedDestination { diff --git a/src/pdf/SkPDFDevice.h b/src/pdf/SkPDFDevice.h index 2850cf943c..18be58de43 100644 --- a/src/pdf/SkPDFDevice.h +++ b/src/pdf/SkPDFDevice.h @@ -297,7 +297,7 @@ private: const SkPaint& paint); bool handlePointAnnotation(const SkPoint* points, size_t count, const SkMatrix& matrix, const SkPaint& paint); - SkPDFDict* createLinkAnnotation(const SkRect& r, const SkMatrix& matrix); + void addAnnotation(SkPDFDict*); void handleLinkToURL(SkData* urlData, const SkRect& r, const SkMatrix& matrix); void handleLinkToNamedDest(SkData* nameData, const SkRect& r, |