fixes for XPS
authorMatthew Leibowitz <mattleibow@live.com>
Sat, 6 May 2017 23:24:24 +0000 (19:24 -0400)
committerMatthew Leibowitz <mattleibow@live.com>
Sat, 6 May 2017 23:24:24 +0000 (19:24 -0400)
include/core/SkDocument.h
src/xps/SkXPSDocument.cpp

index 6594511..55ab086 100644 (file)
@@ -170,6 +170,14 @@ public:
     static sk_sp<SkDocument> MakeXPS(SkWStream* stream,
                                      IXpsOMObjectFactory* xpsFactory,
                                      SkScalar dpi = SK_ScalarDefaultRasterDPI);
+    static sk_sp<SkDocument> MakeXPS(SkWStream* stream,
+                                     SkScalar dpi = SK_ScalarDefaultRasterDPI);
+#else
+    // DEPRECATED; TODO(mattleibow): we should remove this function.
+    static sk_sp<SkDocument> MakeXPS(SkWStream* stream,
+                                     SkScalar dpi = SK_ScalarDefaultRasterDPI) {
+        return nullptr;
+    }
 #endif
     // DEPRECATED; TODO(halcanary): remove this function after Chromium switches to new API.
     static sk_sp<SkDocument> MakeXPS(SkWStream*) { return nullptr; }
index 319b332..23aa695 100644 (file)
@@ -60,30 +60,23 @@ void SkXPSDocument::onAbort() {}
 
 ///////////////////////////////////////////////////////////////////////////////
 
-// UWP Mobile does not support XPS, but Desktop does
-static inline bool xps_available() {
-#ifdef SK_BUILD_FOR_WINRT
-    static bool available = []{ 
-        SkTScopedComPtr<IXpsOMObjectFactory> factory;
-        auto hr = CoCreateInstance(
-            CLSID_XpsOMObjectFactory,
-            nullptr,
-            CLSCTX_INPROC_SERVER,
-            IID_PPV_ARGS(&factory));
-        return SUCCEEDED(hr);
-    }();
-    return available;
-#else
-    return true;
-#endif
+sk_sp<SkDocument> SkDocument::MakeXPS(SkWStream* stream,
+                                      SkScalar dpi) {
+    SkTScopedComPtr<IXpsOMObjectFactory> factory;
+    auto hr = CoCreateInstance(
+        CLSID_XpsOMObjectFactory,
+        nullptr,
+        CLSCTX_INPROC_SERVER,
+        IID_PPV_ARGS(&factory));
+    if (!SUCCEEDED(hr)) {
+        return nullptr;
+    }
+    return SkDocument::MakeXPS (stream, factory, dpi);
 }
 
 sk_sp<SkDocument> SkDocument::MakeXPS(SkWStream* stream,
                                       IXpsOMObjectFactory* factoryPtr,
                                       SkScalar dpi) {
-    if (!xps_available()) {
-        return nullptr;
-    }
     SkTScopedComPtr<IXpsOMObjectFactory> factory(SkSafeRefComPtr(factoryPtr));
     return stream && factory
            ? sk_make_sp<SkXPSDocument>(stream, dpi, std::move(factory))