diff options
author | 2016-03-08 13:03:55 -0800 | |
---|---|---|
committer | 2016-03-08 13:03:55 -0800 | |
commit | 51d04d3c17954f9f8629e7d8a9fe870a7b19962f (patch) | |
tree | 0238b33291f8166aacc332d0c0d5df0c0b3e5dcf /src/pdf/SkPDFDevice.cpp | |
parent | 647cc8474828202c98d540f799742e3074a2aace (diff) |
Revert of SkPDF: Add sk_sp setters; .release() becomes std::move() (patchset #2 id:20001 of https://codereview.chromium.org/1775043002/ )
Reason for revert:
https://build.chromium.org/p/client.skia/builders/Linux%20Builder/builds/6405/steps/compile/logs/stdio
Original issue's description:
> SkPDF: Add sk_sp setters; .release() becomes std::move()
>
> Note to reviewers: Start with changes to SkPDFTypes.h
>
> Many places that had a bare pointer owning a reference are refactored to
> use a sk_sp.
>
> There remain several places where a non-owning pointer `T*` should be
> replaced with `const sk_sp<T>&` to eliminate the common pattern
> `sk_sp<T>(SkRef(x))`.
>
> Committed: https://skia.googlesource.com/skia/+/9904c9212074279380e21f96575078734dbbd308
TBR=bungeman@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/1775143002
Diffstat (limited to 'src/pdf/SkPDFDevice.cpp')
-rw-r--r-- | src/pdf/SkPDFDevice.cpp | 52 |
1 files changed, 27 insertions, 25 deletions
diff --git a/src/pdf/SkPDFDevice.cpp b/src/pdf/SkPDFDevice.cpp index 9f7a3700ef..e988112f37 100644 --- a/src/pdf/SkPDFDevice.cpp +++ b/src/pdf/SkPDFDevice.cpp @@ -879,7 +879,7 @@ void SkPDFDevice::drawPoints(const SkDraw& d, } } -static sk_sp<SkPDFDict> create_link_annotation(const SkRect& translatedRect) { +static SkPDFDict* create_link_annotation(const SkRect& translatedRect) { auto annotation = sk_make_sp<SkPDFDict>("Annot"); annotation->insertName("Subtype", "Link"); @@ -888,7 +888,7 @@ static sk_sp<SkPDFDict> create_link_annotation(const SkRect& translatedRect) { border->appendInt(0); // Horizontal corner radius. border->appendInt(0); // Vertical corner radius. border->appendInt(0); // Width, 0 = no border. - annotation->insertObject("Border", std::move(border)); + annotation->insertObject("Border", border.release()); auto rect = sk_make_sp<SkPDFArray>(); rect->reserve(4); @@ -896,29 +896,30 @@ static sk_sp<SkPDFDict> create_link_annotation(const SkRect& translatedRect) { rect->appendScalar(translatedRect.fTop); rect->appendScalar(translatedRect.fRight); rect->appendScalar(translatedRect.fBottom); - annotation->insertObject("Rect", std::move(rect)); + annotation->insertObject("Rect", rect.release()); - return std::move(annotation); + return annotation.release(); } -static sk_sp<SkPDFDict> create_link_to_url(const SkData* urlData, const SkRect& r) { - auto annotation = create_link_annotation(r); +static SkPDFDict* create_link_to_url(const SkData* urlData, const SkRect& r) { + sk_sp<SkPDFDict> annotation(create_link_annotation(r)); + SkString url(static_cast<const char *>(urlData->data()), urlData->size() - 1); auto action = sk_make_sp<SkPDFDict>("Action"); action->insertName("S", "URI"); action->insertString("URI", url); - annotation->insertObject("A", std::move(action)); - return std::move(annotation); + annotation->insertObject("A", action.release()); + return annotation.release(); } -static sk_sp<SkPDFDict> create_link_named_dest(const SkData* nameData, - const SkRect& r) { - auto annotation = create_link_annotation(r); +static SkPDFDict* create_link_named_dest(const SkData* nameData, + const SkRect& r) { + sk_sp<SkPDFDict> annotation(create_link_annotation(r)); SkString name(static_cast<const char *>(nameData->data()), nameData->size() - 1); annotation->insertName("Dest", name); - return std::move(annotation); + return annotation.release(); } void SkPDFDevice::drawRect(const SkDraw& d, @@ -1506,13 +1507,13 @@ void SkPDFDevice::setDrawingArea(DrawingArea drawingArea) { fDrawingArea = drawingArea; } -sk_sp<SkPDFDict> SkPDFDevice::makeResourceDict() const { +SkPDFDict* SkPDFDevice::createResourceDict() const { SkTDArray<SkPDFObject*> fonts; fonts.setReserve(fFontResources.count()); for (SkPDFFont* font : fFontResources) { fonts.push(font); } - return SkPDFResourceDict::Make( + return SkPDFResourceDict::Create( &fGraphicStateResources, &fShaderResources, &fXObjectResources, @@ -1523,23 +1524,24 @@ const SkTDArray<SkPDFFont*>& SkPDFDevice::getFontResources() const { return fFontResources; } -sk_sp<SkPDFArray> SkPDFDevice::copyMediaBox() const { +SkPDFArray* SkPDFDevice::copyMediaBox() const { + // should this be a singleton? + auto mediaBox = sk_make_sp<SkPDFArray>(); mediaBox->reserve(4); mediaBox->appendInt(0); mediaBox->appendInt(0); - mediaBox->appendInt(fPageSize.width()); - mediaBox->appendInt(fPageSize.height()); - return std::move(mediaBox); + mediaBox->appendInt(fPageSize.fWidth); + mediaBox->appendInt(fPageSize.fHeight); + return mediaBox.release(); } -skstd::unique_ptr<SkStreamAsset> SkPDFDevice::content() const { +SkStreamAsset* SkPDFDevice::content() const { SkDynamicMemoryWStream buffer; this->writeContent(&buffer); - return skstd::unique_ptr<SkStreamAsset>( - buffer.bytesWritten() > 0 - ? buffer.detachAsStream() - : new SkMemoryStream); + return buffer.bytesWritten() > 0 + ? buffer.detachAsStream() + : new SkMemoryStream; } void SkPDFDevice::copyContentEntriesToData(ContentEntry* entry, @@ -1711,14 +1713,14 @@ void SkPDFDevice::appendDestinations(SkPDFDict* dict, SkPDFObject* page) const { for (const NamedDestination& dest : fNamedDestinations) { auto pdfDest = sk_make_sp<SkPDFArray>(); pdfDest->reserve(5); - pdfDest->appendObjRef(sk_sp<SkPDFObject>(SkRef(page))); + pdfDest->appendObjRef(SkRef(page)); pdfDest->appendName("XYZ"); SkPoint p = fInitialTransform.mapXY(dest.point.x(), dest.point.y()); pdfDest->appendScalar(p.x()); pdfDest->appendScalar(p.y()); pdfDest->appendInt(0); // Leave zoom unchanged SkString name(static_cast<const char*>(dest.nameData->data())); - dict->insertObject(name, std::move(pdfDest)); + dict->insertObject(name, pdfDest.release()); } } |