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_;