diff --git a/modules/gui/pymod/data_viewer_proxy.cc b/modules/gui/pymod/data_viewer_proxy.cc index 44c7de2174c7a913fc346c7878cb9f269640ec7b..9ee1c099aff32fdf1be85223af69f5bd4c89499e 100644 --- a/modules/gui/pymod/data_viewer_proxy.cc +++ b/modules/gui/pymod/data_viewer_proxy.cc @@ -23,186 +23,178 @@ */ #include <ost/message.hh> -//#include <ost/gui/snapshot.hh> #include "data_viewer_proxy.hh" namespace ost { namespace img { namespace gui { DataViewerProxy::DataViewerProxy(DataViewer* v): - ost::gui::SipHandler<ost::img::gui::DataViewer>(v), - DataObserver(v->GetData()) + viewer_ptr_(v) { } NormalizerPtr DataViewerProxy::GetNormalizer() const { - return Me()->GetNormalizer(); + return viewer()->GetNormalizer(); } void DataViewerProxy::Renormalize() { - Me()->Renormalize(); + viewer()->Renormalize(); } void DataViewerProxy::UpdateView() { - Me()->UpdateView(); + viewer()->UpdateView(); } void DataViewerProxy::Recenter() { - Me()->Recenter(); + viewer()->Recenter(); } Extent DataViewerProxy::GetSelection() const { - return Me()->GetSelection(); + return viewer()->GetSelection(); } void DataViewerProxy::SetSelection(const Extent& selection) { - Me()->SetSelection(selection); + viewer()->SetSelection(selection); } void DataViewerProxy::SetSlab(int slab) { - Me()->SetSlab(slab); + viewer()->SetSlab(slab); } int DataViewerProxy::GetSlab() const { - return Me()->GetSlab(); + return viewer()->GetSlab(); } void DataViewerProxy::SetZoomScale(Real zoomscale) { - Me()->SetZoomScale(zoomscale); + viewer()->SetZoomScale(zoomscale); } Real DataViewerProxy::GetZoomScale() const { - return Me()->GetZoomScale(); + return viewer()->GetZoomScale(); } void DataViewerProxy::SetViewerMin(Real min) { - Me()->SetViewerMin(min); + viewer()->SetViewerMin(min); } Real DataViewerProxy::GetViewerMin() const { - return Me()->GetViewerMin(); + return viewer()->GetViewerMin(); } void DataViewerProxy::SetViewerMax(Real max) { - Me()->SetViewerMax(max); + viewer()->SetViewerMax(max); } Real DataViewerProxy::GetViewerMax() const { - return Me()->GetViewerMax(); + return viewer()->GetViewerMax(); } void DataViewerProxy::SetGamma(Real gamma) { - Me()->SetGamma(gamma); + viewer()->SetGamma(gamma); } Real DataViewerProxy::GetGamma() const { - return Me()->GetGamma(); + return viewer()->GetGamma(); } void DataViewerProxy::SetInvert(bool invert) { - Me()->SetInvert(invert); + viewer()->SetInvert(invert); } bool DataViewerProxy::GetInvert() const { - return Me()->GetInvert(); + return viewer()->GetInvert(); } void DataViewerProxy::SetOffset(const geom::Vec2& offset) { - Me()->SetOffset(offset); + viewer()->SetOffset(offset); } geom::Vec2 DataViewerProxy::GetOffset() const { - return Me()->GetOffset(); + return viewer()->GetOffset(); } -void DataViewerProxy::SetData(const Data& d) +void DataViewerProxy::SetData(const ImageHandle& d) { - Me()->SetData(d); + viewer()->SetData(d); } void DataViewerProxy::SetName(const String& name) { - Me()->SetName(name); + viewer()->SetName(name); } int DataViewerProxy::AddOverlay(const OverlayPtr& ov, bool make_active) { - return Me()->AddOverlay(ov,make_active); + return viewer()->AddOverlay(ov,make_active); } void DataViewerProxy::ClearOverlays() { - Me()->ClearOverlays(); + viewer()->ClearOverlays(); } OverlayManagerPtr DataViewerProxy::GetOverlayManager() const { - return Me()->GetOverlayManager(); + return viewer()->GetOverlayManager(); } void DataViewerProxy::AddDockWidget(QWidget* w, const QString& name, bool shown, int area) { - Me()->AddDockWidget(w,name, shown,area); + viewer()->AddDockWidget(w,name, shown,area); } void DataViewerProxy::RemoveDockWidget(QWidget* w) { - Me()->RemoveDockWidget(w); + viewer()->RemoveDockWidget(w); } void DataViewerProxy::SetAntialiasing(bool f) { - Me()->SetAntialiasing(f); + viewer()->SetAntialiasing(f); } void DataViewerProxy::Show() { - Me()->show(); + viewer()->show(); } void DataViewerProxy::Hide() { - Me()->hide(); + viewer()->hide(); } -void DataViewerProxy::ObserverUpdate() -{ -} -void DataViewerProxy::ObserverUpdate(const Extent& e) -{ -} -void DataViewerProxy::ObserverUpdate(const Point& p) -{ -} -void DataViewerProxy::ObserverRelease() -{ - Release(Me()); -} object DataViewerProxy::GetQObject(){ - return ost::gui::get_py_qobject<DataViewer>(Me()); + return ost::gui::get_py_qobject<DataViewer>(viewer()); } +DataViewer* DataViewerProxy::viewer() const +{ + if(!viewer_ptr_){ + throw Error("DataViewer no longer exists"); + } + return viewer_ptr_; +} }}} //ns diff --git a/modules/gui/pymod/data_viewer_proxy.hh b/modules/gui/pymod/data_viewer_proxy.hh index 77eae302faa85f1749852827bce714ae6648f997..de1cd16fd74831cc371033451c3c93724c244386 100644 --- a/modules/gui/pymod/data_viewer_proxy.hh +++ b/modules/gui/pymod/data_viewer_proxy.hh @@ -28,6 +28,7 @@ #define IMG_GUI_DATA_VIEWER_PROXY_H #include <boost/shared_ptr.hpp> +#include <QPointer> #include <ost/img/point.hh> #include <ost/img/extent.hh> @@ -48,13 +49,13 @@ namespace ost { namespace img { namespace gui { // fw decl class DataViewer; -class TEMPLATE_EXPORT DataViewerProxy : public ost::gui::SipHandler<DataViewer>, public DataObserver { +class TEMPLATE_EXPORT DataViewerProxy { public: DataViewerProxy(DataViewer* v); // data viewer interface - void SetData(const Data& data); + void SetData(const ImageHandle& data); void SetName(const String& name); NormalizerPtr GetNormalizer() const; @@ -96,14 +97,10 @@ public: void Hide(); - ////////////////////// - // observer interface - virtual void ObserverUpdate(); - virtual void ObserverUpdate(const Extent& e); - virtual void ObserverUpdate(const Point& p); - virtual void ObserverRelease(); - object GetQObject(); +protected: + QPointer<DataViewer> viewer_ptr_; + DataViewer* viewer() const; }; typedef boost::shared_ptr<DataViewerProxy> DataViewerProxyPtr; diff --git a/modules/gui/pymod/export_data_viewer.cc b/modules/gui/pymod/export_data_viewer.cc index b3e6e0b954de0349f09e652a49f46e4592b2ba75..e1b047d84cd09022b75a953bbeb25fdf631304d5 100644 --- a/modules/gui/pymod/export_data_viewer.cc +++ b/modules/gui/pymod/export_data_viewer.cc @@ -58,7 +58,7 @@ BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(o_AddDockWidget, AddDockWidget, 2, 4) void export_data_viewer() { - class_<DataViewerProxy, DataViewerProxyPtr, bases<ost::gui::SipHandlerBase> >("DataViewer",no_init) + class_<DataViewerProxy, DataViewerProxyPtr >("DataViewer",no_init) .def("SetData",&DataViewerProxy::SetData) .def("SetName",&DataViewerProxy::SetName) .def("GetOverlayManager",&DataViewerProxy::GetOverlayManager) diff --git a/modules/gui/pymod/export_gosty.cc b/modules/gui/pymod/export_gosty.cc index 7401816de5badf49cd833d958e347596c74c25f9..adc5594a8454dfb71042755a10c28e1818229e5d 100644 --- a/modules/gui/pymod/export_gosty.cc +++ b/modules/gui/pymod/export_gosty.cc @@ -46,11 +46,11 @@ using namespace ost::gui; namespace { #if OST_IMG_ENABLED -DataViewerProxyPtr app_create_data_viewer1(GostyApp* app, const ost::img::Data& d, const QString& name) +DataViewerProxyPtr app_create_data_viewer1(GostyApp* app, const ost::img::ImageHandle& d, const QString& name) { return DataViewerProxyPtr(new DataViewerProxy(app->CreateDataViewer(d,name))); } -DataViewerProxyPtr app_create_data_viewer2(GostyApp* app, const ost::img::Data& d) +DataViewerProxyPtr app_create_data_viewer2(GostyApp* app, const ost::img::ImageHandle& d) { return DataViewerProxyPtr(new DataViewerProxy(app->CreateDataViewer(d))); } diff --git a/modules/gui/src/data_viewer/argand.cc b/modules/gui/src/data_viewer/argand.cc index 6fceabe8f36723f1e0006c5e394cffa891cecb26..585283e2f4ecb3e8fc93c56875b2845431ffee09 100644 --- a/modules/gui/src/data_viewer/argand.cc +++ b/modules/gui/src/data_viewer/argand.cc @@ -31,7 +31,7 @@ #include <QResizeEvent> namespace ost { namespace img { namespace gui { -Argand::Argand(const Data& data, QWidget* p): +Argand::Argand(const ImageHandle& data, QWidget* p): QWidget(p), DataObserver(data), extent_(), diff --git a/modules/gui/src/data_viewer/argand.hh b/modules/gui/src/data_viewer/argand.hh index 492bce04fa481f20e4bc9963ac5142aee81339df..8f09c241499b55a900e1a33b560f726cfedd5ba7 100644 --- a/modules/gui/src/data_viewer/argand.hh +++ b/modules/gui/src/data_viewer/argand.hh @@ -41,7 +41,7 @@ class DLLEXPORT_OST_GUI Argand: public QWidget, public DataObserver { Q_OBJECT; public: - Argand(const Data& data, QWidget* p); + Argand(const ImageHandle& data, QWidget* p); ~Argand(); // QWidget interface diff --git a/modules/gui/src/data_viewer/data_viewer.cc b/modules/gui/src/data_viewer/data_viewer.cc index 82e81fdc7962c6f982e7a09dca59eb897095dade..a13a6d7ab900d2952a9249ba06d13a5b2b5c91e3 100644 --- a/modules/gui/src/data_viewer/data_viewer.cc +++ b/modules/gui/src/data_viewer/data_viewer.cc @@ -60,7 +60,7 @@ int ipow(int base, unsigned int exponent){ } } -DataViewer::DataViewer(QWidget* p, const Data& data, const QString& name): +DataViewer::DataViewer(QWidget* p, const ImageHandle& data, const QString& name): ost::gui::MainWindow(p,0), name_(name), panel_(new DataViewerPanel(data,this)), @@ -80,14 +80,14 @@ DataViewer::~DataViewer() { } -void DataViewer::SetData(const Data& d) +void DataViewer::SetData(const ImageHandle& d) { panel_->SetData(d); fft_->SetData(d); info_->SetImageInfo(d); } -const Data& DataViewer::GetData() const{ +const ImageHandle& DataViewer::GetData() const{ return panel_->GetObservedData(); } @@ -267,7 +267,7 @@ void DataViewer::SetAntialiasing(bool f) ////////////////////////// // private methods -void DataViewer::build(const Data& data) +void DataViewer::build(const ImageHandle& data) { build_menu(); diff --git a/modules/gui/src/data_viewer/data_viewer.hh b/modules/gui/src/data_viewer/data_viewer.hh index b01848471b892c0d0fb17ac8aa331645dad5f6ea..6b056de385de7b07a0fe53fcf3746e2b4bad4ce3 100644 --- a/modules/gui/src/data_viewer/data_viewer.hh +++ b/modules/gui/src/data_viewer/data_viewer.hh @@ -67,10 +67,10 @@ public: virtual ~DataViewer(); //! set new image or function to display - void SetData(const Data& data); + void SetData(const ImageHandle& data); //! get the current displayed image - const Data& GetData() const; + const ImageHandle& GetData() const; //! retrieve used normalizer NormalizerPtr GetNormalizer() const; @@ -154,7 +154,7 @@ public slots: protected: //! initialize with data to view, plus a name - DataViewer(QWidget* p, const Data& data, const QString& name=""); + DataViewer(QWidget* p, const ImageHandle& data, const QString& name=""); private: // inhibit coping and assignement @@ -176,7 +176,7 @@ public slots: QLabel* slablabel_; QPoint lastmouse_; - void build(const Data& data); + void build(const ImageHandle& data); void build_menu(); }; diff --git a/modules/gui/src/data_viewer/data_viewer_panel.cc b/modules/gui/src/data_viewer/data_viewer_panel.cc index 06a58bb1eb46ca12278277524cf94ca459f9607c..9de780147ac2c43179d6f4d2cd80d36029c439d7 100644 --- a/modules/gui/src/data_viewer/data_viewer_panel.cc +++ b/modules/gui/src/data_viewer/data_viewer_panel.cc @@ -21,7 +21,7 @@ namespace ost { namespace img { namespace gui { -DataViewerPanel::DataViewerPanel(const Data& d, QWidget* p): +DataViewerPanel::DataViewerPanel(const ImageHandle& d, QWidget* p): DataViewerPanelBase(d,p) {} diff --git a/modules/gui/src/data_viewer/data_viewer_panel.hh b/modules/gui/src/data_viewer/data_viewer_panel.hh index e72530e36b7810f8a6557740ec0af8abfad16c75..71fe55351ca6038afc73d138d4f9cca87d78b3d9 100644 --- a/modules/gui/src/data_viewer/data_viewer_panel.hh +++ b/modules/gui/src/data_viewer/data_viewer_panel.hh @@ -28,7 +28,7 @@ namespace ost { namespace img { namespace gui { class DLLEXPORT_OST_GUI DataViewerPanel: public DataViewerPanelBase { public: - DataViewerPanel(const Data& d, QWidget* parent); + DataViewerPanel(const ImageHandle& d, QWidget* parent); }; }}} //ns diff --git a/modules/gui/src/data_viewer/data_viewer_panel_base.cc b/modules/gui/src/data_viewer/data_viewer_panel_base.cc index 98e285db0cb9997f115c75af7dc610da96272952..3f145e555ed84c3d216fc0382b5f46d4f01de7ce 100644 --- a/modules/gui/src/data_viewer/data_viewer_panel_base.cc +++ b/modules/gui/src/data_viewer/data_viewer_panel_base.cc @@ -43,7 +43,7 @@ namespace ost { namespace img { namespace gui { -DataViewerPanelBase::DataViewerPanelBase(const Data& data,QWidget* parent): +DataViewerPanelBase::DataViewerPanelBase(const ImageHandle& data,QWidget* parent): QWidget(parent), DataObserver(data), popupmenu_(new QMenu(this)), @@ -171,7 +171,7 @@ DataViewerPanelBase::~DataViewerPanelBase() delete pixmap_; } -void DataViewerPanelBase::SetData(const Data& d) +void DataViewerPanelBase::SetData(const ImageHandle& d) { SetObservedData(d); update_min_max(); diff --git a/modules/gui/src/data_viewer/data_viewer_panel_base.hh b/modules/gui/src/data_viewer/data_viewer_panel_base.hh index d6d125e460930f8aae2c07ed2d75d4d1cb2a5f18..699efd372cad4dc5b0a9f26a205b4487f5b33168 100644 --- a/modules/gui/src/data_viewer/data_viewer_panel_base.hh +++ b/modules/gui/src/data_viewer/data_viewer_panel_base.hh @@ -32,6 +32,7 @@ #include <ost/base.hh> #include <ost/img/extent.hh> +#include <ost/img/data_observer.hh> #include <ost/img/normalizer_impl.hh> #include <ost/img/raster_image/raster_image.hh> @@ -56,10 +57,10 @@ class DLLEXPORT_OST_GUI DataViewerPanelBase: public QWidget, Q_OBJECT; public: - DataViewerPanelBase(const Data& data,QWidget* parent); + DataViewerPanelBase(const ImageHandle& data,QWidget* parent); virtual ~DataViewerPanelBase(); - virtual void SetData(const Data& d); + virtual void SetData(const ImageHandle& d); ////////////////// // event handling diff --git a/modules/gui/src/data_viewer/fft_panel.cc b/modules/gui/src/data_viewer/fft_panel.cc index 17dd63b4a9da18678ae40f712241b1c9a2a98f67..554cc67c2a6c5ec3a62139042a9c66e0ae7172d3 100644 --- a/modules/gui/src/data_viewer/fft_panel.cc +++ b/modules/gui/src/data_viewer/fft_panel.cc @@ -32,7 +32,7 @@ namespace ost { namespace img { namespace gui { -FFTPanel::FFTPanel(const Data& parent_data, QWidget* parent): +FFTPanel::FFTPanel(const ImageHandle& parent_data, QWidget* parent): DataViewerPanelBase(parent_data,parent), size_(std::min<int>(256,std::min<int>(parent_data.GetSize()[0],parent_data.GetSize()[1]))), parent_position_(parent_data.GetExtent().GetCenter()), @@ -95,7 +95,7 @@ unsigned int FFTPanel::GetFFTSize() return size_; } -void FFTPanel::SetData(const Data& parent_data) +void FFTPanel::SetData(const ImageHandle& parent_data) { parent_observer_=ParentDataObserver(parent_data); } diff --git a/modules/gui/src/data_viewer/fft_panel.hh b/modules/gui/src/data_viewer/fft_panel.hh index 2add54b8d2ca8140a078249250382751dc18ae3e..75a30fed87e8a1018887d10a56fd7e0465674ce0 100644 --- a/modules/gui/src/data_viewer/fft_panel.hh +++ b/modules/gui/src/data_viewer/fft_panel.hh @@ -25,6 +25,7 @@ */ #include <ost/gui/module_config.hh> +#include <ost/img/data_observer.hh> #include "data_viewer_panel_base.hh" namespace ost { namespace img { namespace gui { @@ -32,7 +33,7 @@ namespace ost { namespace img { namespace gui { class ParentDataObserver: public DataObserver { public: - ParentDataObserver(const Data& d):DataObserver(d){} + ParentDataObserver(const ImageHandle& d):DataObserver(d){} virtual void ObserverRelease() { // Noop as parent takes care of this. @@ -44,12 +45,12 @@ class DLLEXPORT_OST_GUI FFTPanel: public DataViewerPanelBase Q_OBJECT public: - FFTPanel(const Data& parent_data, QWidget* parent); + FFTPanel(const ImageHandle& parent_data, QWidget* parent); virtual ~FFTPanel(); void SetFFTSize(unsigned int size); unsigned int GetFFTSize(); virtual void ObserverUpdate(); - virtual void SetData(const Data& parent_data); + virtual void SetData(const ImageHandle& parent_data); public slots: void SetPosition(const Point& p); diff --git a/modules/gui/src/gosty_app.cc b/modules/gui/src/gosty_app.cc index ac5ce3105fec41b031796ae17e86712b7af2ad7e..2c1b644ec94221e4e18ff7ece0957e8cacdef3da 100644 --- a/modules/gui/src/gosty_app.cc +++ b/modules/gui/src/gosty_app.cc @@ -109,12 +109,14 @@ SequenceViewer* GostyApp::GetSequenceViewer() } #if OST_IMG_ENABLED -ost::img::gui::DataViewer* GostyApp::CreateDataViewer(const ost::img::Data& d, const QString& name) +ost::img::gui::DataViewer* GostyApp::CreateDataViewer(const ost::img::ImageHandle& d, const QString& name) { ost::img::gui::DataViewer* viewer=new ost::img::gui::DataViewer(main_,d,name); QMdiSubWindow* mdi=new QMdiSubWindow(this->GetPerspective()->GetMainArea()); mdi->setWindowTitle(name); mdi->setWidget(viewer); + viewer->setAttribute(Qt::WA_DeleteOnClose); + mdi->setAttribute(Qt::WA_DeleteOnClose); viewer->setParent(mdi); this->GetPerspective()->GetMainArea()->addSubWindow(mdi); mdi->showMaximized(); diff --git a/modules/gui/src/gosty_app.hh b/modules/gui/src/gosty_app.hh index 787404aa34abefc5df6a628929284eb8fc8735ed..a635c407ae9cd3e75570101b73aeb3948f0f5910 100644 --- a/modules/gui/src/gosty_app.hh +++ b/modules/gui/src/gosty_app.hh @@ -46,7 +46,7 @@ namespace ost { namespace img { -class Data; +class ImageHandle; namespace gui { class DataViewer; @@ -124,7 +124,7 @@ public: #if OST_IMG_ENABLED /// \brief create new DataViewer /// - ost::img::gui::DataViewer* CreateDataViewer(const ost::img::Data& d, const QString& name=""); + ost::img::gui::DataViewer* CreateDataViewer(const ost::img::ImageHandle& d, const QString& name=""); #endif /// \brief give the application time to run the mainloop and process events diff --git a/modules/img/base/src/data_observer.cc b/modules/img/base/src/data_observer.cc index 804056db48593dd92ebe6a69bd1c85de3bce0f7f..4d42d66213ae5e60f4ae131f76229576c0caa957 100644 --- a/modules/img/base/src/data_observer.cc +++ b/modules/img/base/src/data_observer.cc @@ -30,54 +30,54 @@ namespace ost { namespace img { -DataObserver::DataObserver(const Data& d): - data_(boost::cref(d)) +DataObserver::DataObserver(const ImageHandle& d): + data_(d) { - data_.get().Attach(this); + data_.Attach(this); } DataObserver::DataObserver(const DataObserver& o): data_(o.data_) { - data_.get().Attach(this); + data_.Attach(this); } DataObserver& DataObserver::operator=(const DataObserver& o) { if(this!=&o) { - data_.get().Detach(this); + data_.Detach(this); data_=o.data_; - data_.get().Attach(this); + data_.Attach(this); } return *this; } DataObserver::~DataObserver() { - data_.get().Detach(this); + data_.Detach(this); } void DataObserver::ObserverInvalidate() { - data_=boost::cref(NullData::Instance()); + data_=ImageHandle(); } -const Data& DataObserver::GetObservedData() const +const ImageHandle& DataObserver::GetObservedData() const { if(!is_valid()) { std::cerr << "invalid observed data access" << std::endl; throw InvalidObserver("GetData called for invalidated observer"); } - return data_.get(); + return data_; } -void DataObserver::SetObservedData(const Data& d) +void DataObserver::SetObservedData(const ImageHandle& d) { if(is_valid()) { - data_.get().Detach(this); + data_.Detach(this); } - data_ = boost::cref(d); - data_.get().Attach(this); + data_ = d; + data_.Attach(this); } void DataObserver::ObserverUpdate() @@ -97,7 +97,7 @@ void DataObserver::ObserverUpdate(const Point&) bool DataObserver::is_valid() const { - return data_.get_pointer() != &NullData::Instance(); + return data_.IsValid(); } }} // namespace diff --git a/modules/img/base/src/data_observer.hh b/modules/img/base/src/data_observer.hh index c99e2f5855eb719a056b839730acaec8b6e47a01..0d369a2bdadf2597c60a12e06922b65d91d57cc3 100644 --- a/modules/img/base/src/data_observer.hh +++ b/modules/img/base/src/data_observer.hh @@ -27,9 +27,8 @@ #ifndef IMG_DATA_OBSERVER #define IMG_DATA_OBSERVER -#include <boost/ref.hpp> -#include "data.hh" +#include "image_handle.hh" namespace ost { namespace img { @@ -63,7 +62,7 @@ class DLLEXPORT_OST_IMG_BASE DataObserver { /*! requires reference to data, then attaches itself to data */ - DataObserver(const Data& d); + DataObserver(const ImageHandle& d); DataObserver(const DataObserver& o); @@ -92,7 +91,7 @@ class DLLEXPORT_OST_IMG_BASE DataObserver { void ObserverInvalidate(); //! Returns data that is observed - virtual const Data& GetObservedData() const; + virtual const ImageHandle& GetObservedData() const; bool IsDataValid() const {return is_valid();} @@ -102,12 +101,12 @@ class DLLEXPORT_OST_IMG_BASE DataObserver { /*! Automatically unregister previously observed data */ - void SetObservedData(const Data& d); + void SetObservedData(const ImageHandle& d); bool is_valid() const; private: - boost::reference_wrapper<const Data> data_; + ImageHandle data_; }; diff --git a/modules/img/base/src/image_handle.cc b/modules/img/base/src/image_handle.cc index 94709ec95172939c64c313df6e5f258acafd2601..c0059be0b852490c5e50306fffab6fca18f23208 100644 --- a/modules/img/base/src/image_handle.cc +++ b/modules/img/base/src/image_handle.cc @@ -21,7 +21,7 @@ /* image handle and const handle - Author: Ansgar Philippsen + Author: Ansgar Philippsen, Andreas Schenk */ #include <ost/message.hh> @@ -37,6 +37,7 @@ #include "image_impl.hh" #include "observable.hh" #include "paste_impl.hh" +#include "data_observer.hh" #include "image_state/image_state_factory.hh" #include "image_state/image_state_base.hh" diff --git a/modules/img/base/src/image_handle.hh b/modules/img/base/src/image_handle.hh index 13a6cb2429674bcb6864eac57055278439e2e727..847d897c40b88b7ed3bf0c31516e048c922c967c 100644 --- a/modules/img/base/src/image_handle.hh +++ b/modules/img/base/src/image_handle.hh @@ -23,7 +23,7 @@ offers the Image interface - Author: Ansgar Philippsen + Author: Ansgar Philippsen, Andreas Schenk */ #ifndef IMG_IMAGE_HANDLE_H @@ -37,7 +37,6 @@ #include "data.hh" #include "observable.hh" -#include "data_observer.hh" #include "extent_iterator.hh" #include "image_state/image_state_visitor_fw.hh" @@ -69,6 +68,7 @@ class ModIPAlgorithm; class ConstModIPAlgorithm; class ModOPAlgorithm; class ConstModOPAlgorithm; +class DataObserver; //! Exception thrown upon invalid image handle usage class DLLEXPORT InvalidImageHandle: public Error {