aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/core/SkDocument.h
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 /include/core/SkDocument.h
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 'include/core/SkDocument.h')
-rw-r--r--include/core/SkDocument.h35
1 files changed, 27 insertions, 8 deletions
diff --git a/include/core/SkDocument.h b/include/core/SkDocument.h
index 64291fb17c..6594511df8 100644
--- a/include/core/SkDocument.h
+++ b/include/core/SkDocument.h
@@ -19,6 +19,10 @@
class SkCanvas;
class SkWStream;
+#ifdef SK_BUILD_FOR_WIN
+struct IXpsOMObjectFactory;
+#endif
+
/** SK_ScalarDefaultDPI is 72 DPI.
*/
#define SK_ScalarDefaultRasterDPI 72.0f
@@ -141,19 +145,34 @@ public:
static sk_sp<SkDocument> MakePDF(const char outputFilePath[],
SkScalar dpi = SK_ScalarDefaultRasterDPI);
+#ifdef SK_BUILD_FOR_WIN
/**
* Create a XPS-backed document, writing the results into the stream.
- * Returns NULL if XPS is not supported.
+ *
+ * @param stream A XPS document will be written to this stream. The
+ * document may write to the stream at anytime during its
+ * lifetime, until either close() or abort() are called or
+ * the document is deleted.
+ * @param xpsFactory A pointer to a COM XPS factory. Must be non-null.
+ * The document will take a ref to the factory. See
+ * dm/DMSrcSink.cpp for an example.
+ * @param dpi The DPI (pixels-per-inch) at which features without
+ * native XPS support will be rasterized (e.g. draw image
+ * with perspective, draw text with perspective, ...) A
+ * larger DPI would create a XPS that reflects the
+ * original intent with better fidelity, but it can make
+ * for larger XPS files too, which would use more memory
+ * while rendering, and it would be slower to be processed
+ * or sent online or to printer.
+ *
+ * @returns nullptr if XPS is not supported.
*/
static sk_sp<SkDocument> MakeXPS(SkWStream* stream,
+ IXpsOMObjectFactory* xpsFactory,
SkScalar dpi = SK_ScalarDefaultRasterDPI);
-
- /**
- * Create a XPS-backed document, writing the results into a file.
- * Returns NULL if XPS is not supported.
- */
- static sk_sp<SkDocument> MakeXPS(const char path[],
- SkScalar dpi = SK_ScalarDefaultRasterDPI);
+#endif
+ // DEPRECATED; TODO(halcanary): remove this function after Chromium switches to new API.
+ static sk_sp<SkDocument> MakeXPS(SkWStream*) { return nullptr; }
/**
* Begin a new page for the document, returning the canvas that will draw