222
|
1 #pragma once
|
|
2
|
223
|
3 #include <emscripten/emscripten.h>
|
|
4
|
222
|
5 #include <Framework/dev.h>
|
|
6 #include <Framework/Viewport/WidgetViewport.h>
|
|
7 #include <Framework/Widgets/LayerWidget.h>
|
|
8 #include <Framework/Widgets/LayoutWidget.h>
|
223
|
9 #include <Applications/Wasm/BasicWasmApplication.h>
|
|
10 #include <Applications/Wasm/BasicWasmApplicationContext.h>
|
222
|
11
|
233
|
12 typedef OrthancStone::WidgetViewport* ViewportHandle; // the objects exchanged between JS and C++
|
227
|
13
|
222
|
14 #ifdef __cplusplus
|
|
15 extern "C" {
|
|
16 #endif
|
|
17
|
223
|
18 // JS methods accessible from C++
|
229
|
19 extern void ScheduleWebViewportRedrawFromCpp(ViewportHandle cppViewportHandle);
|
222
|
20
|
223
|
21 // C++ methods accessible from JS
|
229
|
22 extern void EMSCRIPTEN_KEEPALIVE CreateWasmApplication(ViewportHandle cppViewportHandle);
|
223
|
23
|
222
|
24 #ifdef __cplusplus
|
|
25 }
|
|
26 #endif
|
|
27
|
223
|
28 extern OrthancStone::BasicWasmApplication* CreateUserApplication();
|
222
|
29
|
|
30 namespace OrthancStone {
|
|
31
|
223
|
32 // default Ovserver to trigger Viewport redraw when something changes in the Viewport
|
222
|
33 class ChangeObserver :
|
|
34 public OrthancStone::IViewport::IObserver
|
|
35 {
|
|
36 private:
|
|
37 // Flag to avoid flooding JavaScript with redundant Redraw requests
|
|
38 bool isScheduled_;
|
|
39
|
|
40 public:
|
|
41 ChangeObserver() :
|
|
42 isScheduled_(false)
|
|
43 {
|
|
44 }
|
|
45
|
|
46 void Reset()
|
|
47 {
|
|
48 isScheduled_ = false;
|
|
49 }
|
|
50
|
229
|
51 virtual void NotifyChange(const OrthancStone::IViewport &viewport)
|
222
|
52 {
|
|
53 if (!isScheduled_)
|
|
54 {
|
229
|
55 ScheduleWebViewportRedrawFromCpp((ViewportHandle)&viewport); // loosing constness when transmitted to Web
|
222
|
56 isScheduled_ = true;
|
|
57 }
|
|
58 }
|
|
59 };
|
|
60
|
223
|
61 // default status bar to log messages on the console/stdout
|
222
|
62 class StatusBar : public OrthancStone::IStatusBar
|
|
63 {
|
|
64 public:
|
|
65 virtual void ClearMessage()
|
|
66 {
|
|
67 }
|
|
68
|
|
69 virtual void SetMessage(const std::string& message)
|
|
70 {
|
|
71 printf("%s\n", message.c_str());
|
|
72 }
|
|
73 };
|
|
74 } |