Mercurial > hg > orthanc-stone
comparison Samples/WebAssembly/BasicScene.cpp @ 895:6073c980323a am-dev
wip: adapting basic scene webassembly sample
author | Alain Mazy <alain@mazy.be> |
---|---|
date | Fri, 12 Jul 2019 14:57:06 +0200 |
parents | 2de01660debe |
children | 9c2f6d6b9f4a |
comparison
equal
deleted
inserted
replaced
886:5cfb479fdbde | 895:6073c980323a |
---|---|
31 // From Orthanc framework | 31 // From Orthanc framework |
32 #include <Core/Images/Image.h> | 32 #include <Core/Images/Image.h> |
33 #include <Core/Logging.h> | 33 #include <Core/Logging.h> |
34 #include <Core/OrthancException.h> | 34 #include <Core/OrthancException.h> |
35 | 35 |
36 void PrepareScene(OrthancStone::Scene2D& scene) | 36 #include "../Shared/SharedBasicScene.h" |
37 { | |
38 using namespace OrthancStone; | |
39 | |
40 // Texture of 2x2 size | |
41 if (1) | |
42 { | |
43 Orthanc::Image i(Orthanc::PixelFormat_RGB24, 2, 2, false); | |
44 | |
45 uint8_t *p = reinterpret_cast<uint8_t*>(i.GetRow(0)); | |
46 p[0] = 255; | |
47 p[1] = 0; | |
48 p[2] = 0; | |
49 | |
50 p[3] = 0; | |
51 p[4] = 255; | |
52 p[5] = 0; | |
53 | |
54 p = reinterpret_cast<uint8_t*>(i.GetRow(1)); | |
55 p[0] = 0; | |
56 p[1] = 0; | |
57 p[2] = 255; | |
58 | |
59 p[3] = 255; | |
60 p[4] = 0; | |
61 p[5] = 0; | |
62 | |
63 scene.SetLayer(12, new ColorTextureSceneLayer(i)); | |
64 | |
65 std::auto_ptr<ColorTextureSceneLayer> l(new ColorTextureSceneLayer(i)); | |
66 l->SetOrigin(-3, 2); | |
67 l->SetPixelSpacing(1.5, 1); | |
68 l->SetAngle(20.0 / 180.0 * M_PI); | |
69 scene.SetLayer(14, l.release()); | |
70 } | |
71 | |
72 // Texture of 1x1 size | |
73 if (1) | |
74 { | |
75 Orthanc::Image i(Orthanc::PixelFormat_RGB24, 1, 1, false); | |
76 | |
77 uint8_t *p = reinterpret_cast<uint8_t*>(i.GetRow(0)); | |
78 p[0] = 255; | |
79 p[1] = 0; | |
80 p[2] = 0; | |
81 | |
82 std::auto_ptr<ColorTextureSceneLayer> l(new ColorTextureSceneLayer(i)); | |
83 l->SetOrigin(-2, 1); | |
84 l->SetAngle(20.0 / 180.0 * M_PI); | |
85 scene.SetLayer(13, l.release()); | |
86 } | |
87 | |
88 // Some lines | |
89 { | |
90 std::auto_ptr<PolylineSceneLayer> layer(new PolylineSceneLayer); | |
91 | |
92 layer->SetThickness(1); | |
93 | |
94 PolylineSceneLayer::Chain chain; | |
95 chain.push_back(ScenePoint2D(0 - 0.5, 0 - 0.5)); | |
96 chain.push_back(ScenePoint2D(0 - 0.5, 2 - 0.5)); | |
97 chain.push_back(ScenePoint2D(2 - 0.5, 2 - 0.5)); | |
98 chain.push_back(ScenePoint2D(2 - 0.5, 0 - 0.5)); | |
99 layer->AddChain(chain, true, 255, 0, 0); | |
100 | |
101 chain.clear(); | |
102 chain.push_back(ScenePoint2D(-5, -5)); | |
103 chain.push_back(ScenePoint2D(5, -5)); | |
104 chain.push_back(ScenePoint2D(5, 5)); | |
105 chain.push_back(ScenePoint2D(-5, 5)); | |
106 layer->AddChain(chain, true, 0, 255, 0); | |
107 | |
108 double dy = 1.01; | |
109 chain.clear(); | |
110 chain.push_back(ScenePoint2D(-4, -4)); | |
111 chain.push_back(ScenePoint2D(4, -4 + dy)); | |
112 chain.push_back(ScenePoint2D(-4, -4 + 2.0 * dy)); | |
113 chain.push_back(ScenePoint2D(4, 2)); | |
114 layer->AddChain(chain, false, 0, 0, 255); | |
115 | |
116 scene.SetLayer(50, layer.release()); | |
117 } | |
118 | |
119 // Some text | |
120 if (1) | |
121 { | |
122 std::auto_ptr<TextSceneLayer> layer(new TextSceneLayer); | |
123 layer->SetText("Hello"); | |
124 scene.SetLayer(100, layer.release()); | |
125 } | |
126 } | |
127 | |
128 | 37 |
129 std::auto_ptr<OrthancStone::WebAssemblyViewport> viewport1_; | 38 std::auto_ptr<OrthancStone::WebAssemblyViewport> viewport1_; |
130 std::auto_ptr<OrthancStone::WebAssemblyViewport> viewport2_; | 39 std::auto_ptr<OrthancStone::WebAssemblyViewport> viewport2_; |
131 std::auto_ptr<OrthancStone::WebAssemblyViewport> viewport3_; | 40 std::auto_ptr<OrthancStone::WebAssemblyViewport> viewport3_; |
132 OrthancStone::MessageBroker broker_; | 41 OrthancStone::MessageBroker broker_; |