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);
|
254
|
22 extern void EMSCRIPTEN_KEEPALIVE SetStartupParameter(const char* keyc, const char* value);
|
|
23
|
223
|
24
|
222
|
25 #ifdef __cplusplus
|
|
26 }
|
|
27 #endif
|
|
28
|
253
|
29 extern OrthancStone::IBasicApplication* CreateUserApplication(OrthancStone::MessageBroker& broker);
|
222
|
30
|
|
31 namespace OrthancStone {
|
|
32
|
223
|
33 // default Ovserver to trigger Viewport redraw when something changes in the Viewport
|
222
|
34 class ChangeObserver :
|
|
35 public OrthancStone::IViewport::IObserver
|
|
36 {
|
|
37 private:
|
|
38 // Flag to avoid flooding JavaScript with redundant Redraw requests
|
|
39 bool isScheduled_;
|
|
40
|
|
41 public:
|
|
42 ChangeObserver() :
|
|
43 isScheduled_(false)
|
|
44 {
|
|
45 }
|
|
46
|
|
47 void Reset()
|
|
48 {
|
|
49 isScheduled_ = false;
|
|
50 }
|
|
51
|
229
|
52 virtual void NotifyChange(const OrthancStone::IViewport &viewport)
|
222
|
53 {
|
|
54 if (!isScheduled_)
|
|
55 {
|
229
|
56 ScheduleWebViewportRedrawFromCpp((ViewportHandle)&viewport); // loosing constness when transmitted to Web
|
222
|
57 isScheduled_ = true;
|
|
58 }
|
|
59 }
|
|
60 };
|
|
61
|
223
|
62 // default status bar to log messages on the console/stdout
|
222
|
63 class StatusBar : public OrthancStone::IStatusBar
|
|
64 {
|
|
65 public:
|
|
66 virtual void ClearMessage()
|
|
67 {
|
|
68 }
|
|
69
|
|
70 virtual void SetMessage(const std::string& message)
|
|
71 {
|
|
72 printf("%s\n", message.c_str());
|
|
73 }
|
|
74 };
|
|
75 } |