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