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