00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef IMG_GUI_DATA_VIEWER_H
00026 #define IMG_GUI_DATA_VIEWER_H
00027
00028 #include <map>
00029
00030 #include <ost/base.hh>
00031 #include <ost/img/data.hh>
00032 #include <ost/img/data_observer.hh>
00033 #include <ost/img/alg/norm.hh>
00034
00035 #include <ost/gui/main_window.hh>
00036
00037 #include "overlay_base_fw.hh"
00038 #include "overlay_manager_fw.hh"
00039 #include "overlay_manager_gui.hh"
00040 #include "argand.hh"
00041 #include "info_panel.hh"
00042 #include "fft_panel.hh"
00043 #include <ost/gui/module_config.hh>
00044
00045
00046 class QLabel;
00047
00048 namespace ost {
00049
00050 namespace gui {
00051 class GostyApp;
00052 }
00053
00054 namespace img { namespace gui {
00055
00056
00057 class DataViewerPanel;
00058
00060 class DLLEXPORT_OST_GUI DataViewer: public ost::gui::MainWindow
00061 {
00062 Q_OBJECT;
00063
00064 friend class ost::gui::GostyApp;
00065
00066 public:
00067 virtual ~DataViewer();
00068
00070 void SetData(const ImageHandle& data);
00071
00073 const ImageHandle& GetData() const;
00074
00076 NormalizerPtr GetNormalizer() const;
00077
00079 void Renormalize();
00080
00081 void Recenter();
00082
00084 Extent GetSelection() const;
00085
00087 void SetSelection(const Extent& selection);
00088
00090 void SetName(const String& name);
00091
00093 int AddOverlay(const OverlayPtr& ov, bool make_active=true);
00094
00096 void ClearOverlays();
00097
00099 void ClearActiveOverlay();
00100
00102 OverlayManagerPtr GetOverlayManager() const;
00103
00105 virtual void OnPanelMouseEvent(QMouseEvent* e);
00106
00108 void SetAntialiasing(bool f);
00109
00111 virtual bool eventFilter(QObject * object, QEvent *event);
00112
00114 void SetSlab(int slab);
00116 int GetSlab() const;
00117
00119 void SetZoomScale(Real zoomscale);
00121 Real GetZoomScale() const;
00122
00124 void SetViewerMin(Real min);
00126 Real GetViewerMin() const;
00127
00129 void SetViewerMax(Real max);
00131 Real GetViewerMax() const;
00132
00134 void SetGamma(Real gamma);
00136 Real GetGamma() const;
00137
00139 void SetInvert(bool invert);
00141 bool GetInvert() const;
00142
00144 void SetOffset(const geom::Vec2& offset);
00146 geom::Vec2 GetOffset() const;
00147
00148 QButtonGroup* GetButtonGroup(void);
00149
00150 signals:
00151 void released();
00152
00153 public slots:
00155 void UpdateView();
00156
00157 void OnSlabChange(int slab);
00158 void OnZoomChange(int zoomlevel);
00159
00160 protected:
00162 DataViewer(QWidget* p, const ImageHandle& data, const QString& name="");
00163
00164 private:
00165
00166 DataViewer(const DataViewer& v);
00167
00168 DataViewer& operator=(const DataViewer& v) {return *this;}
00169
00170 QString name_;
00171 DataViewerPanel* panel_;
00172
00173 OverlayManagerPtr ov_manager_;
00174 OverlayManagerGUI* ov_manager_gui_;
00175
00176 InfoPanel* info_;
00177 Argand* argand_;
00178 FFTPanel* fft_;
00179
00180 QLabel* zoomlabel_;
00181 QLabel* slablabel_;
00182 QPoint lastmouse_;
00183
00184 void build(const ImageHandle& data);
00185
00186 void show_current_window_menu(void);
00187
00188
00189 void build_menu();
00190 };
00191
00192 }}}
00193
00194 #endif