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