diff OrthancStone/Sources/Viewport/WebAssemblyCairoViewport.cpp @ 1551:c54bc5bffd01

software rendering
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 13 Aug 2020 22:05:13 +0200
parents 244ad1e4e76a
children 314b6dc507d9
line wrap: on
line diff
--- a/OrthancStone/Sources/Viewport/WebAssemblyCairoViewport.cpp	Thu Aug 13 21:00:55 2020 +0200
+++ b/OrthancStone/Sources/Viewport/WebAssemblyCairoViewport.cpp	Thu Aug 13 22:05:13 2020 +0200
@@ -19,9 +19,15 @@
  **/
 
 
-#include "WebAssemblyCairoViewport.h"
-
-#include "../Scene2D/CairoCompositor.h"
+#if defined(ORTHANC_BUILDING_STONE_LIBRARY) && ORTHANC_BUILDING_STONE_LIBRARY == 1
+#  include "WebAssemblyCairoViewport.h"
+#  include "../Scene2D/CairoCompositor.h"
+#else
+// This is the case when using the WebAssembly side module, and this
+// source file must be compiled within the WebAssembly main module
+#  include <Viewport/WebAssemblyCairoViewport.h>
+#  include <Scene2D/CairoCompositor.h>
+#endif
 
 #include <Images/Image.h>
 
@@ -124,16 +130,25 @@
   }
 
 
-  WebAssemblyCairoViewport::WebAssemblyCairoViewport(
-    const std::string& canvasId) :
-    WebAssemblyViewport(canvasId)
+  WebAssemblyCairoViewport::WebAssemblyCairoViewport(const std::string& canvasId,
+                                                     bool enableEmscriptenMouseEvents) :
+    WebAssemblyViewport(canvasId,enableEmscriptenMouseEvents)
   {
     unsigned int width, height;
     GetCanvasSize(width, height);
-    emscripten_set_canvas_element_size(GetCanvasCssSelector().c_str(), 
-                                       width, 
-                                       height);
+    emscripten_set_canvas_element_size(GetCanvasCssSelector().c_str(), width, height);
 
     AcquireCompositor(new CairoCompositor(width, height));
   }
+  
+
+  boost::shared_ptr<WebAssemblyCairoViewport> WebAssemblyCairoViewport::Create(
+    const std::string& canvasId, bool enableEmscriptenMouseEvents)
+  {
+    boost::shared_ptr<WebAssemblyCairoViewport> that = boost::shared_ptr<WebAssemblyCairoViewport>(
+        new WebAssemblyCairoViewport(canvasId, enableEmscriptenMouseEvents));
+    
+    that->WebAssemblyViewport::PostConstructor();
+    return that;
+  }
 }