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
|
227
|
12 typedef OrthancStone::WidgetViewport* ViewportHandle; // the objects exchanged between JS and C++
|
|
13
|
222
|
14 #ifdef __cplusplus
|
|
15 extern "C" {
|
|
16 #endif
|
|
17
|
223
|
18 // JS methods accessible from C++
|
222
|
19 extern void ScheduleRedraw();
|
|
20
|
223
|
21 // C++ methods accessible from JS
|
227
|
22 extern void EMSCRIPTEN_KEEPALIVE CreateWasmApplication(ViewportHandle viewport);
|
223
|
23 // extern void EMSCRIPTEN_KEEPALIVE SetStartupParameter(const char* keyc, const char* value);
|
|
24 // extern void EMSCRIPTEN_KEEPALIVE StartWasmApplication();
|
|
25
|
222
|
26 #ifdef __cplusplus
|
|
27 }
|
|
28 #endif
|
|
29
|
223
|
30 extern OrthancStone::BasicWasmApplication* CreateUserApplication();
|
222
|
31
|
|
32 namespace OrthancStone {
|
|
33
|
223
|
34 // default Ovserver to trigger Viewport redraw when something changes in the Viewport
|
222
|
35 class ChangeObserver :
|
|
36 public OrthancStone::IViewport::IObserver
|
|
37 {
|
|
38 private:
|
|
39 // Flag to avoid flooding JavaScript with redundant Redraw requests
|
|
40 bool isScheduled_;
|
|
41
|
|
42 public:
|
|
43 ChangeObserver() :
|
|
44 isScheduled_(false)
|
|
45 {
|
|
46 }
|
|
47
|
|
48 void Reset()
|
|
49 {
|
|
50 isScheduled_ = false;
|
|
51 }
|
|
52
|
|
53 virtual void NotifyChange(const OrthancStone::IViewport &scene)
|
|
54 {
|
|
55 if (!isScheduled_)
|
|
56 {
|
|
57 ScheduleRedraw();
|
|
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 } |