Skip to content
Snippets Groups Projects
Commit 6a082351 authored by Andreas Schenk's avatar Andreas Schenk Committed by Marco Biasini
Browse files

fixed fft panel update after switching data in main viewer

parent 944fd29a
No related branches found
No related tags found
No related merge requests found
......@@ -83,6 +83,7 @@ DataViewer::~DataViewer()
void DataViewer::SetData(const Data& d)
{
panel_->SetData(d);
fft_->SetData(d);
info_->SetImageInfo(d);
}
......
......@@ -59,7 +59,7 @@ public:
DataViewerPanelBase(const Data& data,QWidget* parent);
virtual ~DataViewerPanelBase();
void SetData(const Data& d);
virtual void SetData(const Data& d);
//////////////////
// event handling
......
......@@ -36,18 +36,17 @@ FFTPanel::FFTPanel(const Data& 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()),
parent_data_(parent_data),
fft_data_(CreateImage(Extent(Size(size_,size_),Point(0,0)),
COMPLEX,HALF_FREQUENCY))
COMPLEX,HALF_FREQUENCY)),
parent_observer_(parent_data)
{
QAction* a_set_size=new QAction("Set FFT size",this);
popupmenu_->addAction(a_set_size);
connect(a_set_size, SIGNAL(triggered()), this, SLOT(ShowSizeDialog()));
SetData(fft_data_);
DataViewerPanelBase::SetData(fft_data_);
update_fft();
}
FFTPanel::~FFTPanel()
{
}
......@@ -58,8 +57,6 @@ void FFTPanel::ObserverUpdate()
UpdateView(true);
}
void FFTPanel::SetPosition(const Point& p)
{
parent_position_=p;
......@@ -71,9 +68,14 @@ void FFTPanel::ShowSizeDialog()
bool ok;
#if QT_VERSION >= 0x040500
int i = QInputDialog::getInt(this, "Set FFT size","FFT size", size_, 1,
std::min<int>(parent_data_.GetSize()[0],parent_data_.GetSize()[1]), 1, &ok);
std::min<int>(parent_observer_.GetObservedData().GetSize()[0],
parent_observer_.GetObservedData().GetSize()[1]),
1, &ok);
#else
int i = QInputDialog::getInteger(this, "Set FFT size","FFT size", size_, 1, std::min<int>(parent_data_.GetSize()[0],parent_data_.GetSize()[1]), 1, &ok);
int i = QInputDialog::getInteger(this, "Set FFT size","FFT size", size_, 1,
std::min<int>(parent_observer_.GetObservedData().GetSize()[0],
parent_observer_.GetObservedData().GetSize()[1]),
1, &ok);
#endif
if (ok){
SetFFTSize(i);
......@@ -93,14 +95,21 @@ unsigned int FFTPanel::GetFFTSize()
return size_;
}
void FFTPanel::update_fft()
void FFTPanel::SetData(const Data& parent_data)
{
ImageHandle im=CreateImage(Extent(Size(size_,size_),
parent_position_));
im.Paste(parent_data_);
parent_observer_=ParentDataObserver(parent_data);
}
void FFTPanel::update_fft()
{
ImageHandle im=CreateImage(Extent(Size(size_,size_),parent_position_));
im.Paste(parent_observer_.GetObservedData());
im.ApplyIP(alg::FFT());
fft_data_.Paste(im);
UpdateView(true);
}
}}} //ns
......@@ -29,6 +29,16 @@
namespace ost { namespace img { namespace gui {
class ParentDataObserver: public DataObserver
{
public:
ParentDataObserver(const Data& d):DataObserver(d){}
virtual void ObserverRelease()
{
// Noop as parent takes care of this.
}
};
class DLLEXPORT_OST_GUI FFTPanel: public DataViewerPanelBase
{
Q_OBJECT
......@@ -39,6 +49,7 @@ public:
void SetFFTSize(unsigned int size);
unsigned int GetFFTSize();
virtual void ObserverUpdate();
virtual void SetData(const Data& parent_data);
public slots:
void SetPosition(const Point& p);
......@@ -48,8 +59,8 @@ protected:
void update_fft();
unsigned int size_;
Point parent_position_;
const Data& parent_data_;
ImageHandle fft_data_;
ParentDataObserver parent_observer_;
};
}}} //ns
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment