Mercurial > hg > orthanc-stone
comparison Samples/Sdl/SingleFrameViewer/SdlSimpleViewerApplication.h @ 1507:169adf9090a6
replacing deprecated std::auto_ptr by std::unique_ptr
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 06 Jul 2020 16:47:40 +0200 |
parents | 474360793956 |
children |
comparison
equal
deleted
inserted
replaced
1506:f88265c3f8a0 | 1507:169adf9090a6 |
---|---|
24 #include "../../../Framework/Viewport/IViewport.h" | 24 #include "../../../Framework/Viewport/IViewport.h" |
25 #include "../../../Framework/Loaders/DicomResourcesLoader.h" | 25 #include "../../../Framework/Loaders/DicomResourcesLoader.h" |
26 #include "../../../Framework/Loaders/ILoadersContext.h" | 26 #include "../../../Framework/Loaders/ILoadersContext.h" |
27 #include "../../../Framework/Loaders/SeriesFramesLoader.h" | 27 #include "../../../Framework/Loaders/SeriesFramesLoader.h" |
28 #include "../../../Framework/Loaders/SeriesThumbnailsLoader.h" | 28 #include "../../../Framework/Loaders/SeriesThumbnailsLoader.h" |
29 | |
30 #include <Compatibility.h> // For std::unique_ptr<> | |
29 | 31 |
30 #include <boost/make_shared.hpp> | 32 #include <boost/make_shared.hpp> |
31 | 33 |
32 | 34 |
33 using OrthancStone::ILoadersContext; | 35 using OrthancStone::ILoadersContext; |
54 static boost::shared_ptr<SdlSimpleViewerApplication> Create(ILoadersContext& context, boost::shared_ptr<IViewport> viewport) | 56 static boost::shared_ptr<SdlSimpleViewerApplication> Create(ILoadersContext& context, boost::shared_ptr<IViewport> viewport) |
55 { | 57 { |
56 boost::shared_ptr<SdlSimpleViewerApplication> application(new SdlSimpleViewerApplication(context, viewport)); | 58 boost::shared_ptr<SdlSimpleViewerApplication> application(new SdlSimpleViewerApplication(context, viewport)); |
57 | 59 |
58 { | 60 { |
59 std::auto_ptr<ILoadersContext::ILock> lock(context.Lock()); | 61 std::unique_ptr<ILoadersContext::ILock> lock(context.Lock()); |
60 application->dicomLoader_ = DicomResourcesLoader::Create(*lock); | 62 application->dicomLoader_ = DicomResourcesLoader::Create(*lock); |
61 } | 63 } |
62 | 64 |
63 application->Register<DicomResourcesLoader::SuccessMessage>(*application->dicomLoader_, &SdlSimpleViewerApplication::Handle); | 65 application->Register<DicomResourcesLoader::SuccessMessage>(*application->dicomLoader_, &SdlSimpleViewerApplication::Handle); |
64 | 66 |
65 return application; | 67 return application; |
66 } | 68 } |
67 | 69 |
68 void LoadOrthancFrame(const DicomSource& source, const std::string& instanceId, unsigned int frame) | 70 void LoadOrthancFrame(const DicomSource& source, const std::string& instanceId, unsigned int frame) |
69 { | 71 { |
70 std::auto_ptr<ILoadersContext::ILock> lock(context_.Lock()); | 72 std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock()); |
71 | 73 |
72 dicomLoader_->ScheduleLoadOrthancResource(boost::make_shared<LoadedDicomResources>(Orthanc::DICOM_TAG_SOP_INSTANCE_UID), | 74 dicomLoader_->ScheduleLoadOrthancResource(boost::make_shared<LoadedDicomResources>(Orthanc::DICOM_TAG_SOP_INSTANCE_UID), |
73 0, source, Orthanc::ResourceType_Instance, instanceId, | 75 0, source, Orthanc::ResourceType_Instance, instanceId, |
74 new Orthanc::SingleValueObject<unsigned int>(frame)); | 76 new Orthanc::SingleValueObject<unsigned int>(frame)); |
75 } | 77 } |
79 const std::string& studyInstanceUid, | 81 const std::string& studyInstanceUid, |
80 const std::string& seriesInstanceUid, | 82 const std::string& seriesInstanceUid, |
81 const std::string& sopInstanceUid, | 83 const std::string& sopInstanceUid, |
82 unsigned int frame) | 84 unsigned int frame) |
83 { | 85 { |
84 std::auto_ptr<ILoadersContext::ILock> lock(context_.Lock()); | 86 std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock()); |
85 | 87 |
86 // We first must load the "/metadata" to know the number of frames | 88 // We first must load the "/metadata" to know the number of frames |
87 dicomLoader_->ScheduleGetDicomWeb( | 89 dicomLoader_->ScheduleGetDicomWeb( |
88 boost::make_shared<LoadedDicomResources>(Orthanc::DICOM_TAG_SOP_INSTANCE_UID), 0, source, | 90 boost::make_shared<LoadedDicomResources>(Orthanc::DICOM_TAG_SOP_INSTANCE_UID), 0, source, |
89 "/studies/" + studyInstanceUid + "/series/" + seriesInstanceUid + "/instances/" + sopInstanceUid + "/metadata", | 91 "/studies/" + studyInstanceUid + "/series/" + seriesInstanceUid + "/instances/" + sopInstanceUid + "/metadata", |
91 } | 93 } |
92 #endif | 94 #endif |
93 | 95 |
94 void FitContent() | 96 void FitContent() |
95 { | 97 { |
96 std::auto_ptr<IViewport::ILock> lock(viewport_->Lock()); | 98 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); |
97 lock->GetCompositor().FitContent(lock->GetController().GetScene()); | 99 lock->GetCompositor().FitContent(lock->GetController().GetScene()); |
98 lock->Invalidate(); | 100 lock->Invalidate(); |
99 } | 101 } |
100 | 102 |
101 private: | 103 private: |
115 { | 117 { |
116 LOG(INFO) << "Frame decoded! " | 118 LOG(INFO) << "Frame decoded! " |
117 << message.GetImage().GetWidth() << "x" << message.GetImage().GetHeight() | 119 << message.GetImage().GetWidth() << "x" << message.GetImage().GetHeight() |
118 << " " << Orthanc::EnumerationToString(message.GetImage().GetFormat()); | 120 << " " << Orthanc::EnumerationToString(message.GetImage().GetFormat()); |
119 | 121 |
120 std::auto_ptr<TextureBaseSceneLayer> layer( | 122 std::unique_ptr<TextureBaseSceneLayer> layer( |
121 message.GetInstanceParameters().CreateTexture(message.GetImage())); | 123 message.GetInstanceParameters().CreateTexture(message.GetImage())); |
122 layer->SetLinearInterpolation(true); | 124 layer->SetLinearInterpolation(true); |
123 | 125 |
124 { | 126 { |
125 std::auto_ptr<IViewport::ILock> lock(viewport_->Lock()); | 127 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); |
126 lock->GetController().GetScene().SetLayer(0, layer.release()); | 128 lock->GetController().GetScene().SetLayer(0, layer.release()); |
127 lock->GetCompositor().FitContent(lock->GetController().GetScene()); | 129 lock->GetCompositor().FitContent(lock->GetController().GetScene()); |
128 lock->Invalidate(); | 130 lock->Invalidate(); |
129 } | 131 } |
130 } | 132 } |
137 } | 139 } |
138 | 140 |
139 //message.GetResources()->GetResource(0).Print(stdout); | 141 //message.GetResources()->GetResource(0).Print(stdout); |
140 | 142 |
141 { | 143 { |
142 std::auto_ptr<ILoadersContext::ILock> lock(context_.Lock()); | 144 std::unique_ptr<ILoadersContext::ILock> lock(context_.Lock()); |
143 SeriesFramesLoader::Factory f(*message.GetResources()); | 145 SeriesFramesLoader::Factory f(*message.GetResources()); |
144 | 146 |
145 framesLoader_ = boost::dynamic_pointer_cast<SeriesFramesLoader>( | 147 framesLoader_ = boost::dynamic_pointer_cast<SeriesFramesLoader>( |
146 f.Create(*lock)); | 148 f.Create(*lock)); |
147 | 149 |