QXRD  0.11.16
qxrdimageplot.h
Go to the documentation of this file.
1 #ifndef QXRDIMAGEPLOT_H
2 #define QXRDIMAGEPLOT_H
3 
4 #include "qcepplot.h"
5 
6 #include <qwt_color_map.h>
7 #include <qwt_plot_rescaler.h>
8 #include <qwt_plot_spectrogram.h>
9 #include <qwt_plot_marker.h>
10 
11 #include "qcepobjectnamer.h"
12 #include "qcepimagedata-ptr.h"
13 #include "qcepmaskdata-ptr.h"
14 
15 #include "qxrddataprocessor-ptr.h"
16 #include "qxrdrasterdata.h"
17 #include "qxrdmaskrasterdata.h"
18 #include "qxrdmaskcolormap.h"
20 #include "qxrdplotslicer-ptr.h"
23 #include "qxrdmaskpicker-ptr.h"
24 #include "qxrddataprocessor-ptr.h"
25 #include "qxrdimageplotsettings.h"
26 #include "qxrdpowderpointpicker.h"
28 #include <QItemSelectionModel>
29 
30 class QxrdImagePlot : public QcepPlot
31 {
32  Q_OBJECT
33 
34 public:
35  QxrdImagePlot(QWidget *parent = 0);
36  void init(QxrdImagePlotSettingsWPtr settings);
37 
38 signals:
39  void slicePolygon(QVector<QPointF> poly);
40  void selectHistogram(QRectF rect);
41 
42 public slots:
43  void autoScale();
44  void set005Range();
45  void set010Range();
46  void set100Range();
48  void setAutoRange();
49 
50  void setGrayscale();
51  void setInverseGrayscale();
52  void setEarthTones();
53  void setSpectrum();
54  void setFire();
55  void setIce();
56 
57  void redoColorMap();
58  void setColorMap(int index);
59 
60  void toggleShowImage();
61  void toggleShowMask();
62  void toggleShowOverflow();
63  void toggleShowROI();
64  void toggleLogDisplay();
65 
66  void changeImageShown(bool shown);
67  void changeMaskShown(bool shown);
68  void changeOverflowShown(bool shown);
69  void changeROIShown(bool shown);
70  void changeLogDisplay(bool isLog);
71 
72  void onInterpolateChanged(bool interp);
73  void onMaintainAspectChanged(bool interp);
74 
78  void onCenterXChanged(double cx);
79  void onCenterYChanged(double cy);
80  void onCenterChanged(QPointF c);
81  void onMarkedPointsChanged();
82  void onImageScaleChanged();
83 
84  void enableZooming();
85  void enableCentering();
86  void enableSlicing();
87  void enableMeasuring();
88  void enableHistograms();
89  void enableMaskCircles();
90  void enableMaskPolygons();
91  void enablePowderPoints();
92 
93  void clearPowderMarkers();
94  void displayPowderMarkers();
95 
96  void enableContextMenu();
97  void disableContextMenu();
98 
99  void zapPixel(int x, int y);
100 
101  virtual void onLegendChecked(const QVariant &itemInfo, bool on, int index);
102 
103 public:
105 
106  const QxrdRasterData* raster() const;
108 
109  const QxrdMaskRasterData* maskRaster() const;
111 
114 
115  void replot();
116 
117  virtual QwtText trackerTextF(const QPointF &pos);
118 
119  void contextMenuEvent(QContextMenuEvent *event);
120 
121  void enableROIDisplay(bool enable);
123  void setROISelection(QItemSelectionModel *select);
124 
125 private:
126  void replotImage();
127  void setImage(QxrdRasterData *data);
128  void setMask(QxrdMaskRasterData *data);
129  void setOverflows(QxrdMaskRasterData *overflow);
130 
131  void colorMapStart(QColor startColor, QColor endColor);
132  void colorMapRange(double value1, QColor color1, double value2, QColor color2);
133  void changedColorMap();
134  void setTrackerPen(const QPen &pen);
135 
136  void disablePickers();
137 
138  void clearROIDisplay();
139  void updateROIDisplay();
140  void selectROIItem(int n, bool selected);
141  void updateROISelection(const QItemSelection &selected,
142  const QItemSelection &deselected);
143 
144 protected:
145  void selectROILabel(int i, bool on);
146  void moveSelectedROICenter(double x, double y);
147 
148 public:
149  enum {
153  };
154 
155 private:
157 
158 protected:
160 
161 private:
162  QwtPlotRescaler *m_Rescaler;
166 // QwtLegendPtr m_Legend;
167 
171 
175 
176  QwtPlotSpectrogram *m_DataImage;
177  QwtPlotSpectrogram *m_MaskImage;
178  QwtPlotSpectrogram *m_OverflowImage;
179  QwtLinearColorMap *m_ColorMap;
180 
183 
186 
188 
190  QwtPlotMarker *m_CenterMarker;
191 
194 
196  QVector<QwtPlotCurve*> m_PowderPointCurves;
197 
198 // QPen m_Pen;
200 
202 
204  QItemSelectionModel *m_ROISelection;
205  QVector<QwtPlotCurve*> m_ROICurves;
206 };
207 
208 #endif
void changeMaskShown(bool shown)
void changeOverflowShown(bool shown)
QxrdROICoordinatesListModelPtr m_ROIModel
QWeakPointer< QxrdDataProcessor > QxrdDataProcessorWPtr
QwtPlotSpectrogram * m_DataImage
void changeImageShown(bool shown)
QwtPlotMarker * m_CenterMarker
QxrdPlotSlicer * m_Slicer
void selectHistogram(QRectF rect)
QcepObjectNamer m_ObjectNamer
QwtLinearColorMap * m_ColorMap
void setInverseGrayscale()
void contextMenuEvent(QContextMenuEvent *event)
void moveSelectedROICenter(double x, double y)
void enableMaskCircles()
void toggleShowOverflow()
QVector< QwtPlotCurve * > m_PowderPointCurves
void onImageScaleChanged()
void toggleLogDisplay()
QxrdImagePlotSettingsWPtr imagePlotSettings()
void setROISelection(QItemSelectionModel *select)
void onDarkImageAvailable(QcepImageDataBasePtr image)
void setMask(QxrdMaskRasterData *data)
void enableContextMenu()
QwtPlotSpectrogram * m_OverflowImage
QWeakPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsWPtr
QxrdImagePlotSettingsWPtr m_ImagePlotSettings
QxrdDataProcessorWPtr processor() const
void colorMapRange(double value1, QColor color1, double value2, QColor color2)
void setProcessor(QxrdDataProcessorWPtr proc)
const QxrdRasterData * raster() const
void zapPixel(int x, int y)
void updateROISelection(const QItemSelection &selected, const QItemSelection &deselected)
void onCenterYChanged(double cy)
const QxrdMaskRasterData * maskRaster() const
QxrdMaskRasterData * m_MaskRaster
void onCenterChanged(QPointF c)
QwtPlotSpectrogram * m_MaskImage
void init(QxrdImagePlotSettingsWPtr settings)
QwtPlotRescaler * m_Rescaler
void enableCentering()
void changedColorMap()
QxrdMaskColorMap * m_MaskColorMap
QxrdImagePlotMeasurer * m_Measurer
QxrdMaskRasterData * m_OverflowRaster
QxrdMaskPicker * m_Polygons
void setColorMap(int index)
void slicePolygon(QVector< QPointF > poly)
QxrdImagePlot(QWidget *parent=0)
void changeROIShown(bool shown)
void toggleShowImage()
void recalculateDisplayedRange()
void enableMeasuring()
void enablePowderPoints()
QxrdMaskPicker * m_Circles
void clearPowderMarkers()
void onMarkedPointsChanged()
QxrdHistogramSelector * m_HistogramSelector
void setTrackerPen(const QPen &pen)
QcepMaskDataPtr m_Overflow
void onMaintainAspectChanged(bool interp)
QItemSelectionModel * m_ROISelection
QxrdMaskColorMap * m_OverflowColorMap
void onMaskedImageAvailable(QcepImageDataBasePtr image, QcepMaskDataPtr mask)
QxrdRasterData * m_DataRaster
void displayPowderMarkers()
void selectROIItem(int n, bool selected)
bool m_ContextMenuEnabled
void onProcessedImageAvailable(QcepImageDataBasePtr image, QcepMaskDataPtr overflow)
void enableMaskPolygons()
virtual void onLegendChecked(const QVariant &itemInfo, bool on, int index)
void selectROILabel(int i, bool on)
void setOverflows(QxrdMaskRasterData *overflow)
void changeLogDisplay(bool isLog)
QxrdDataProcessorWPtr m_DataProcessor
QSharedPointer< QcepImageDataBase > QcepImageDataBasePtr
QSharedPointer< QcepMaskData > QcepMaskDataPtr
void setROIModel(QxrdROICoordinatesListModelPtr model)
virtual QwtText trackerTextF(const QPointF &pos)
void setImage(QxrdRasterData *data)
QcepMaskDataPtr m_Mask
void disableContextMenu()
QSharedPointer< QxrdROICoordinatesListModel > QxrdROICoordinatesListModelPtr
void onCenterXChanged(double cx)
QxrdCenterFinderPicker * m_CenterFinderPicker
QVector< QwtPlotCurve * > m_ROICurves
QcepImageDataBasePtr m_Data
void enableHistograms()
void enableROIDisplay(bool enable)
QxrdPowderPointPicker * m_PowderPointPicker
void onInterpolateChanged(bool interp)
void colorMapStart(QColor startColor, QColor endColor)