# HG changeset patch # User Sebastien Jodogne # Date 1571167726 -7200 # Node ID d7887f88710fb8e09190e260da6aa720e69a2304 # Parent 5d1b0d2f4b155d3ae9f084c1a1715ff25a4fb174 fix diff -r 5d1b0d2f4b15 -r d7887f88710f Applications/Samples/SimpleViewerApplicationSingleFile.h --- a/Applications/Samples/SimpleViewerApplicationSingleFile.h Tue Oct 15 21:11:09 2019 +0200 +++ b/Applications/Samples/SimpleViewerApplicationSingleFile.h Tue Oct 15 21:28:46 2019 +0200 @@ -243,7 +243,7 @@ std::auto_ptr thumbnailInteractor_; Deprecated::LayoutWidget* mainLayout_; Deprecated::LayoutWidget* thumbnailsLayout_; - std::vector thumbnails_; + std::vector > thumbnails_; std::map > instancesIdsPerSeriesId_; std::map seriesTags_; @@ -296,18 +296,20 @@ mainLayout_->SetBackgroundColor(0, 0, 0); mainLayout_->SetHorizontal(); - thumbnailsLayout_ = new Deprecated::LayoutWidget("thumbnail-layout"); + boost::shared_ptr thumbnailsLayout_(new Deprecated::LayoutWidget("thumbnail-layout")); thumbnailsLayout_->SetPadding(10); thumbnailsLayout_->SetBackgroundCleared(true); thumbnailsLayout_->SetBackgroundColor(50, 50, 50); thumbnailsLayout_->SetVertical(); - mainWidget_ = new Deprecated::SliceViewerWidget("main-viewport"); + boost::shared_ptr widget + (new Deprecated::SliceViewerWidget("main-viewport")); + SetCentralWidget(widget); //mainWidget_->RegisterObserver(*this); // hierarchy mainLayout_->AddWidget(thumbnailsLayout_); - mainLayout_->AddWidget(mainWidget_); + mainLayout_->AddWidget(widget); // sources smartLoader_.reset(new Deprecated::SmartLoader(context->GetOrthancApiClient())); @@ -315,7 +317,7 @@ mainLayout_->SetTransmitMouseOver(true); mainWidgetInteractor_.reset(new MainWidgetInteractor(*this)); - mainWidget_->SetInteractor(*mainWidgetInteractor_); + widget->SetInteractor(*mainWidgetInteractor_); thumbnailInteractor_.reset(new ThumbnailInteractor(*this)); } @@ -326,7 +328,7 @@ if (parameters.count("studyId") < 1) { LOG(WARNING) << "The study ID is missing, will take the first studyId found in Orthanc"; - context->GetOrthancApiClient().GetJsonAsync( + context->GetOrthancApiClient()->GetJsonAsync( "/studies", new Callable (GetSharedObserver(), &SimpleViewerApplication::OnStudyListReceived)); @@ -356,7 +358,7 @@ { for (size_t i=0; i < response["Series"].size(); i++) { - context_->GetOrthancApiClient().GetJsonAsync( + context_->GetOrthancApiClient()->GetJsonAsync( "/series/" + response["Series"][(int)i].asString(), new Callable (GetSharedObserver(), &SimpleViewerApplication::OnSeriesReceived)); @@ -386,7 +388,7 @@ LoadThumbnailForSeries(seriesId, instancesIdsPerSeriesId_[seriesId][0]); // if this is the first thumbnail loaded, load the first instance in the mainWidget - Deprecated::SliceViewerWidget& widget = *dynamic_cast(mainWidget_); + Deprecated::SliceViewerWidget& widget = dynamic_cast(*GetCentralWidget()); if (widget.GetLayerCount() == 0) { smartLoader_->SetFrameInWidget(widget, 0, instancesIdsPerSeriesId_[seriesId][0], 0); @@ -397,7 +399,7 @@ void LoadThumbnailForSeries(const std::string& seriesId, const std::string& instanceId) { LOG(INFO) << "Loading thumbnail for series " << seriesId; - Deprecated::SliceViewerWidget* thumbnailWidget = new Deprecated::SliceViewerWidget("thumbnail-series-" + seriesId); + boost::shared_ptr thumbnailWidget(new Deprecated::SliceViewerWidget("thumbnail-series-" + seriesId)); thumbnails_.push_back(thumbnailWidget); thumbnailsLayout_->AddWidget(thumbnailWidget); Register(*thumbnailWidget, &SimpleViewerApplication::OnWidgetGeometryChanged); @@ -408,7 +410,7 @@ void SelectStudy(const std::string& studyId) { LOG(INFO) << "Selecting study: " << studyId; - context_->GetOrthancApiClient().GetJsonAsync( + context_->GetOrthancApiClient()->GetJsonAsync( "/studies/" + studyId, new Callable (GetSharedObserver(), &SimpleViewerApplication::OnStudyReceived)); } @@ -421,7 +423,7 @@ void SelectSeriesInMainViewport(const std::string& seriesId) { - Deprecated::SliceViewerWidget& widget = *dynamic_cast(mainWidget_); + Deprecated::SliceViewerWidget& widget = dynamic_cast(*GetCentralWidget()); smartLoader_->SetFrameInWidget(widget, 0, instancesIdsPerSeriesId_[seriesId][0], 0); } @@ -450,7 +452,7 @@ virtual void InitializeWasm() { AttachWidgetToWasmViewport("canvas", thumbnailsLayout_); - AttachWidgetToWasmViewport("canvas2", mainWidget_); + AttachWidgetToWasmViewport("canvas2", widget); } #endif diff -r 5d1b0d2f4b15 -r d7887f88710f Applications/Samples/SingleFrameEditorApplication.h --- a/Applications/Samples/SingleFrameEditorApplication.h Tue Oct 15 21:11:09 2019 +0200 +++ b/Applications/Samples/SingleFrameEditorApplication.h Tue Oct 15 21:28:46 2019 +0200 @@ -345,7 +345,7 @@ if (context_ != NULL) { - widget.GetScene().ExportDicom(context_->GetOrthancApiClient(), + widget.GetScene().ExportDicom(*context_->GetOrthancApiClient(), tags, std::string(), 0.1, 0.1, widget.IsInverted(), widget.GetInterpolation(), EXPORT_USING_PAM); } @@ -484,7 +484,7 @@ scene_.reset(new RadiographyScene); - RadiographyLayer& dicomLayer = scene_->LoadDicomFrame(context->GetOrthancApiClient(), instance, 0, false, NULL); + RadiographyLayer& dicomLayer = scene_->LoadDicomFrame(*context->GetOrthancApiClient(), instance, 0, false, NULL); //scene_->LoadDicomFrame(instance, frame, false); //.SetPan(200, 0); // = scene_->LoadDicomFrame(context->GetOrthancApiClient(), "61f3143e-96f34791-ad6bbb8d-62559e75-45943e1b", 0, false, NULL); @@ -514,10 +514,10 @@ layer.SetPan(0, 200); } - - mainWidget_ = new RadiographyWidget(scene_, "main-widget"); - mainWidget_->SetTransmitMouseOver(true); - mainWidget_->SetInteractor(interactor_); + boost::shared_ptr widget(new RadiographyWidget(scene_, "main-widget")); + widget->SetTransmitMouseOver(true); + widget->SetInteractor(interactor_); + SetCentralWidget(widget); //scene_->SetWindowing(128, 256); } diff -r 5d1b0d2f4b15 -r d7887f88710f Framework/Deprecated/Widgets/LayoutWidget.cpp --- a/Framework/Deprecated/Widgets/LayoutWidget.cpp Tue Oct 15 21:11:09 2019 +0200 +++ b/Framework/Deprecated/Widgets/LayoutWidget.cpp Tue Oct 15 21:28:46 2019 +0200 @@ -85,14 +85,14 @@ class LayoutWidget::ChildWidget : public boost::noncopyable { private: - std::auto_ptr widget_; + boost::shared_ptr widget_; int left_; int top_; unsigned int width_; unsigned int height_; public: - ChildWidget(IWidget* widget) : + ChildWidget(boost::shared_ptr widget) : widget_(widget) { assert(widget != NULL); @@ -354,7 +354,7 @@ } - IWidget& LayoutWidget::AddWidget(IWidget* widget) // Takes ownership + void LayoutWidget::AddWidget(boost::shared_ptr widget) // Takes ownership { if (widget == NULL) { @@ -375,8 +375,6 @@ { hasAnimation_ = true; } - - return *widget; } diff -r 5d1b0d2f4b15 -r d7887f88710f Framework/Deprecated/Widgets/LayoutWidget.h --- a/Framework/Deprecated/Widgets/LayoutWidget.h Tue Oct 15 21:11:09 2019 +0200 +++ b/Framework/Deprecated/Widgets/LayoutWidget.h Tue Oct 15 21:28:46 2019 +0200 @@ -94,7 +94,7 @@ return paddingInternal_; } - IWidget& AddWidget(IWidget* widget); // Takes ownership + void AddWidget(boost::shared_ptr widget); virtual void SetStatusBar(IStatusBar& statusBar); diff -r 5d1b0d2f4b15 -r d7887f88710f Framework/Radiography/RadiographySceneReader.cpp --- a/Framework/Radiography/RadiographySceneReader.cpp Tue Oct 15 21:11:09 2019 +0200 +++ b/Framework/Radiography/RadiographySceneReader.cpp Tue Oct 15 21:28:46 2019 +0200 @@ -50,7 +50,7 @@ RadiographyDicomLayer* RadiographySceneReader::LoadDicom(const std::string& instanceId, unsigned int frame, RadiographyLayer::Geometry* geometry) { - return dynamic_cast(&(scene_.LoadDicomFrame(orthancApiClient_, instanceId, frame, false, geometry))); + return dynamic_cast(&(scene_.LoadDicomFrame(*orthancApiClient_, instanceId, frame, false, geometry))); } void RadiographySceneBuilder::Read(const Json::Value& input) @@ -161,7 +161,7 @@ if (jsonLayer["type"].asString() == "dicom") { ReadLayerGeometry(geometry, jsonLayer); - dicomLayer = dynamic_cast(&(scene_.LoadDicomFrame(orthancApiClient_, jsonLayer["instanceId"].asString(), jsonLayer["frame"].asUInt(), false, &geometry))); + dicomLayer = dynamic_cast(&(scene_.LoadDicomFrame(*orthancApiClient_, jsonLayer["instanceId"].asString(), jsonLayer["frame"].asUInt(), false, &geometry))); } else if (jsonLayer["type"].asString() == "mask") { diff -r 5d1b0d2f4b15 -r d7887f88710f Framework/Radiography/RadiographySceneReader.h --- a/Framework/Radiography/RadiographySceneReader.h Tue Oct 15 21:11:09 2019 +0200 +++ b/Framework/Radiography/RadiographySceneReader.h Tue Oct 15 21:28:46 2019 +0200 @@ -75,10 +75,12 @@ class RadiographySceneReader : public RadiographySceneBuilder { - Deprecated::OrthancApiClient& orthancApiClient_; + private: + boost::shared_ptr orthancApiClient_; public: - RadiographySceneReader(RadiographyScene& scene, Deprecated::OrthancApiClient& orthancApiClient) : + RadiographySceneReader(RadiographyScene& scene, + boost::shared_ptr orthancApiClient) : RadiographySceneBuilder(scene), orthancApiClient_(orthancApiClient) {