aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/xps/SkXPSDocument.cpp
diff options
context:
space:
mode:
authorGravatar Hal Canary <halcanary@google.com>2017-02-06 09:51:42 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-02-06 19:00:28 +0000
commit5e221e7ca26130393a0527bb9b5155d6685b74ba (patch)
treecbb8e6de7ac74aed54d8292b2d9448329aaa2bdf /src/xps/SkXPSDocument.cpp
parent604971e39a20392fd4c74a56bcdc187311cf86dc (diff)
SkXPS: new document API.
Now requires a IXpsOMObjectFactory pointer. This will allow sandboxing to be used in Chromium. (Chrome will create a IXpsOMObjectFactory, then go into sandbox mode, then call SkDocumenent::MakeXPS().) Change-Id: Ic4b48d4b148c44e188d12a9481fb74735546528a Reviewed-on: https://skia-review.googlesource.com/8052 Reviewed-by: Ben Wagner <bungeman@google.com> Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Hal Canary <halcanary@google.com>
Diffstat (limited to 'src/xps/SkXPSDocument.cpp')
-rw-r--r--src/xps/SkXPSDocument.cpp36
1 files changed, 2 insertions, 34 deletions
diff --git a/src/xps/SkXPSDocument.cpp b/src/xps/SkXPSDocument.cpp
index 68672271e8..80dd5eea6a 100644
--- a/src/xps/SkXPSDocument.cpp
+++ b/src/xps/SkXPSDocument.cpp
@@ -14,10 +14,9 @@
#include "SkHRESULT.h"
SkXPSDocument::SkXPSDocument(SkWStream* stream,
- void (*doneProc)(SkWStream*, bool),
SkScalar dpi,
SkTScopedComPtr<IXpsOMObjectFactory> xpsFactory)
- : SkDocument(stream, doneProc)
+ : SkDocument(stream, nullptr)
, fXpsFactory(std::move(xpsFactory))
, fDevice(SkISize{10000, 10000})
{
@@ -59,45 +58,14 @@ void SkXPSDocument::onClose(SkWStream*) {
void SkXPSDocument::onAbort() {}
-
-static SkTScopedComPtr<IXpsOMObjectFactory> make_xps_factory() {
- IXpsOMObjectFactory* factory;
- HRN(CoCreateInstance(CLSID_XpsOMObjectFactory,
- nullptr,
- CLSCTX_INPROC_SERVER,
- IID_PPV_ARGS(&factory)));
- return SkTScopedComPtr<IXpsOMObjectFactory>(factory);
-}
-
-
///////////////////////////////////////////////////////////////////////////////
-// TODO(halcanary, reed): modify the SkDocument API to take a IXpsOMObjectFactory* pointer.
-/*
sk_sp<SkDocument> SkDocument::MakeXPS(SkWStream* stream,
IXpsOMObjectFactory* factoryPtr,
SkScalar dpi) {
SkTScopedComPtr<IXpsOMObjectFactory> factory(SkSafeRefComPtr(factoryPtr));
return stream && factory
- ? sk_make_sp<SkXPSDocument>(stream, nullptr, dpi, std::move(factory))
- : nullptr;
-}
-*/
-
-sk_sp<SkDocument> SkDocument::MakeXPS(SkWStream* stream, SkScalar dpi) {
- auto factory = make_xps_factory();
- return stream && factory
- ? sk_make_sp<SkXPSDocument>(stream, nullptr, dpi, std::move(factory))
- : nullptr;
-}
-
-sk_sp<SkDocument> SkDocument::MakeXPS(const char path[], SkScalar dpi) {
- std::unique_ptr<SkFILEWStream> stream(new SkFILEWStream(path));
- auto factory = make_xps_factory();
- return stream->isValid() && factory
- ? sk_make_sp<SkXPSDocument>(stream.release(),
- [](SkWStream* s, bool) { delete s; },
- dpi, std::move(factory))
+ ? sk_make_sp<SkXPSDocument>(stream, dpi, std::move(factory))
: nullptr;
}