Mercurial > hg > orthanc-stone
comparison Applications/Samples/SingleFrameEditorApplication.h @ 337:c4d4213f095c am-2
cont
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 18 Oct 2018 20:07:09 +0200 |
parents | c7fdc8bac581 |
children | b3b3fa0e3689 |
comparison
equal
deleted
inserted
replaced
336:c7fdc8bac581 | 337:c4d4213f095c |
---|---|
30 namespace OrthancStone | 30 namespace OrthancStone |
31 { | 31 { |
32 | 32 |
33 class GrayscaleBitmapStack : | 33 class GrayscaleBitmapStack : |
34 public WorldSceneWidget, | 34 public WorldSceneWidget, |
35 public IObserver, | |
35 public IObservable | 36 public IObservable |
36 { | 37 { |
37 public: | 38 public: |
38 typedef OriginMessage<MessageType_Widget_GeometryChanged, GrayscaleBitmapStack> GeometryChangedMessage; | 39 typedef OriginMessage<MessageType_Widget_GeometryChanged, GrayscaleBitmapStack> GeometryChangedMessage; |
39 typedef OriginMessage<MessageType_Widget_ContentChanged, GrayscaleBitmapStack> ContentChangedMessage; | 40 typedef OriginMessage<MessageType_Widget_ContentChanged, GrayscaleBitmapStack> ContentChangedMessage; |
40 | 41 |
42 private: | |
43 OrthancApiClient& orthanc_; | |
44 | |
41 protected: | 45 protected: |
42 virtual Extent2D GetSceneExtent() | 46 virtual Extent2D GetSceneExtent() |
43 { | 47 { |
48 return Extent2D(-1, -1, 1, 1); | |
44 } | 49 } |
45 | 50 |
46 virtual bool RenderScene(CairoContext& context, | 51 virtual bool RenderScene(CairoContext& context, |
47 const ViewportGeometry& view) | 52 const ViewportGeometry& view) |
48 { | 53 { |
54 return true; | |
49 } | 55 } |
50 | 56 |
51 public: | 57 public: |
52 GrayscaleBitmapStack(MessageBroker& broker, | 58 GrayscaleBitmapStack(MessageBroker& broker, |
59 OrthancApiClient& orthanc, | |
53 const std::string& name) : | 60 const std::string& name) : |
54 WorldSceneWidget(name), | 61 WorldSceneWidget(name), |
55 IObservable(broker) | 62 IObserver(broker), |
56 { | 63 IObservable(broker), |
64 orthanc_(orthanc) | |
65 { | |
66 } | |
67 | |
68 void LoadDicom(const std::string& dicom) | |
69 { | |
70 orthanc_.GetBinaryAsync("/instances/" + dicom + "/file", "application/dicom", | |
71 new Callable<GrayscaleBitmapStack, OrthancApiClient::BinaryResponseReadyMessage>(*this, &GrayscaleBitmapStack::OnDicomReceived)); | |
57 } | 72 } |
58 | 73 |
74 void OnDicomReceived(const OrthancApiClient::BinaryResponseReadyMessage& message) | |
75 { | |
76 printf("DICOM received: [%s] (%d bytes)\n", message.Uri.c_str(), message.AnswerSize); | |
77 } | |
78 | |
59 }; | 79 }; |
60 | 80 |
61 | 81 |
62 namespace Samples | 82 namespace Samples |
63 { | 83 { |
228 | 248 |
229 std::string instance = parameters["instance"].as<std::string>(); | 249 std::string instance = parameters["instance"].as<std::string>(); |
230 int frame = parameters["frame"].as<unsigned int>(); | 250 int frame = parameters["frame"].as<unsigned int>(); |
231 | 251 |
232 orthancApiClient_.reset(new OrthancApiClient(IObserver::broker_, context_->GetWebService())); | 252 orthancApiClient_.reset(new OrthancApiClient(IObserver::broker_, context_->GetWebService())); |
233 mainWidget_ = new GrayscaleBitmapStack(broker_, "main-widget"); | 253 |
254 | |
255 mainWidget_ = new GrayscaleBitmapStack(broker_, *orthancApiClient_, "main-widget"); | |
256 dynamic_cast<GrayscaleBitmapStack*>(mainWidget_)->LoadDicom(instance); | |
234 | 257 |
235 dynamic_cast<GrayscaleBitmapStack*>(mainWidget_)->RegisterObserverCallback( | 258 dynamic_cast<GrayscaleBitmapStack*>(mainWidget_)->RegisterObserverCallback( |
236 new Callable<SingleFrameEditorApplication, | 259 new Callable<SingleFrameEditorApplication, |
237 GrayscaleBitmapStack::GeometryChangedMessage> | 260 GrayscaleBitmapStack::GeometryChangedMessage> |
238 (*this, &SingleFrameEditorApplication::OnGeometryChanged)); | 261 (*this, &SingleFrameEditorApplication::OnGeometryChanged)); |