diff options
author | 2017-02-06 09:51:42 -0500 | |
---|---|---|
committer | 2017-02-06 19:00:28 +0000 | |
commit | 5e221e7ca26130393a0527bb9b5155d6685b74ba (patch) | |
tree | cbb8e6de7ac74aed54d8292b2d9448329aaa2bdf /src/xps/SkXPSDocument.cpp | |
parent | 604971e39a20392fd4c74a56bcdc187311cf86dc (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.cpp | 36 |
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; } |