aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/pdf/SkPDFGraphicState.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/pdf/SkPDFGraphicState.cpp')
-rw-r--r--src/pdf/SkPDFGraphicState.cpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/pdf/SkPDFGraphicState.cpp b/src/pdf/SkPDFGraphicState.cpp
index 7c4c5e30eb..19e9a36d05 100644
--- a/src/pdf/SkPDFGraphicState.cpp
+++ b/src/pdf/SkPDFGraphicState.cpp
@@ -126,7 +126,7 @@ SkPDFGraphicState* SkPDFGraphicState::GetGraphicStateForPaint(
return pdfGraphicState;
}
-static SkPDFObject* create_invert_function() {
+static SkPDFStream* create_invert_function() {
// Acrobat crashes if we use a type 0 function, kpdf crashes if we use
// a type 2 function, so we use a type 4 function.
auto domainAndRange = sk_make_sp<SkPDFArray>();
@@ -141,12 +141,17 @@ static SkPDFObject* create_invert_function() {
auto invertFunction = sk_make_sp<SkPDFStream>(psInvertStream.get());
invertFunction->insertInt("FunctionType", 4);
- invertFunction->insertObject("Domain", SkRef(domainAndRange.get()));
- invertFunction->insertObject("Range", domainAndRange.release());
+ invertFunction->insertObject("Domain", domainAndRange);
+ invertFunction->insertObject("Range", std::move(domainAndRange));
return invertFunction.release();
}
-SK_DECLARE_STATIC_ONCE_PTR(SkPDFObject, invertFunction);
+SK_DECLARE_STATIC_ONCE_PTR(SkPDFStream, invertFunction);
+
+static sk_sp<SkPDFStream> make_invert_function() {
+ return sk_sp<SkPDFStream>(
+ SkRef(invertFunction.get(create_invert_function)));
+}
// static
SkPDFDict* SkPDFGraphicState::GetSMaskGraphicState(SkPDFFormXObject* sMask,
@@ -160,13 +165,13 @@ SkPDFDict* SkPDFGraphicState::GetSMaskGraphicState(SkPDFFormXObject* sMask,
} else if (sMaskMode == kLuminosity_SMaskMode) {
sMaskDict->insertName("S", "Luminosity");
}
- sMaskDict->insertObjRef("G", SkRef(sMask));
+ sMaskDict->insertObjRef("G", sk_sp<SkPDFFormXObject>(SkRef(sMask)));
if (invert) {
- sMaskDict->insertObjRef("TR", SkRef(invertFunction.get(create_invert_function)));
+ sMaskDict->insertObjRef("TR", make_invert_function());
}
auto result = sk_make_sp<SkPDFDict>("ExtGState");
- result->insertObject("SMask", sMaskDict.release());
+ result->insertObject("SMask", std::move(sMaskDict));
return result.release();
}