aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/pdf/SkPDFDevice.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/pdf/SkPDFDevice.cpp')
-rw-r--r--src/pdf/SkPDFDevice.cpp52
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());
}
}