QXRD  0.11.16
Public Types | Public Slots | Signals | Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
QxrdImagePlot Class Reference

#include <qxrdimageplot.h>

Inheritance diagram for QxrdImagePlot:
Inheritance graph
[legend]
Collaboration diagram for QxrdImagePlot:
Collaboration graph
[legend]

Public Types

enum  { PercentageMode, PercentileMode, AbsoluteMode }
 

Public Slots

void autoScale ()
 
void set005Range ()
 
void set010Range ()
 
void set100Range ()
 
void recalculateDisplayedRange ()
 
void setAutoRange ()
 
void setGrayscale ()
 
void setInverseGrayscale ()
 
void setEarthTones ()
 
void setSpectrum ()
 
void setFire ()
 
void setIce ()
 
void redoColorMap ()
 
void setColorMap (int index)
 
void toggleShowImage ()
 
void toggleShowMask ()
 
void toggleShowOverflow ()
 
void toggleShowROI ()
 
void toggleLogDisplay ()
 
void changeImageShown (bool shown)
 
void changeMaskShown (bool shown)
 
void changeOverflowShown (bool shown)
 
void changeROIShown (bool shown)
 
void changeLogDisplay (bool isLog)
 
void onInterpolateChanged (bool interp)
 
void onMaintainAspectChanged (bool interp)
 
void onProcessedImageAvailable (QcepImageDataBasePtr image, QcepMaskDataPtr overflow)
 
void onMaskedImageAvailable (QcepImageDataBasePtr image, QcepMaskDataPtr mask)
 
void onDarkImageAvailable (QcepImageDataBasePtr image)
 
void onCenterXChanged (double cx)
 
void onCenterYChanged (double cy)
 
void onCenterChanged (QPointF c)
 
void onMarkedPointsChanged ()
 
void onImageScaleChanged ()
 
void enableZooming ()
 
void enableCentering ()
 
void enableSlicing ()
 
void enableMeasuring ()
 
void enableHistograms ()
 
void enableMaskCircles ()
 
void enableMaskPolygons ()
 
void enablePowderPoints ()
 
void clearPowderMarkers ()
 
void displayPowderMarkers ()
 
void enableContextMenu ()
 
void disableContextMenu ()
 
void zapPixel (int x, int y)
 
virtual void onLegendChecked (const QVariant &itemInfo, bool on, int index)
 
- Public Slots inherited from QcepPlot
virtual void autoScale ()
 
void printGraph ()
 
void zoomIn ()
 
void zoomOut ()
 
void enableZooming ()
 
void enableMeasuring ()
 
virtual void onLegendClicked (const QVariant &itemInfo, int index)
 
virtual void onLegendChecked (const QVariant &itemInfo, bool on, int index)
 
void setXAxisLog (bool isLog)
 
void setYAxisLog (bool isLog)
 
void setX2AxisLog (bool isLog)
 
void setY2AxisLog (bool isLog)
 
void setLogAxis (int axis, int isLog)
 
int logAxis (int axis)
 

Signals

void slicePolygon (QVector< QPointF > poly)
 
void selectHistogram (QRectF rect)
 

Public Member Functions

 QxrdImagePlot (QWidget *parent=0)
 
void init (QxrdImagePlotSettingsWPtr settings)
 
QxrdImagePlotSettingsWPtr imagePlotSettings ()
 
const QxrdRasterDataraster () const
 
QxrdRasterDataraster ()
 
const QxrdMaskRasterDatamaskRaster () const
 
QxrdMaskRasterDatamaskRaster ()
 
QxrdDataProcessorWPtr processor () const
 
void setProcessor (QxrdDataProcessorWPtr proc)
 
void replot ()
 
virtual QwtText trackerTextF (const QPointF &pos)
 
void contextMenuEvent (QContextMenuEvent *event)
 
void enableROIDisplay (bool enable)
 
void setROIModel (QxrdROICoordinatesListModelPtr model)
 
void setROISelection (QItemSelectionModel *select)
 
- Public Member Functions inherited from QcepPlot
 QcepPlot (QWidget *parent=0)
 
virtual ~QcepPlot ()
 
void init (QcepPlotSettingsWPtr settings)
 
void setPlotCurveStyle (int index, QwtPlotCurve *curve)
 
void contextMenuEvent (QContextMenuEvent *event)
 
void updateZoomer ()
 

Protected Member Functions

void selectROILabel (int i, bool on)
 
void moveSelectedROICenter (double x, double y)
 

Protected Attributes

QxrdImagePlotSettingsWPtr m_ImagePlotSettings
 
- Protected Attributes inherited from QcepPlot
QcepPlotSettingsWPtr m_PlotSettings
 
QwtLegend * m_Legend
 
QwtPlotZoomer * m_Zoomer
 
QwtPlotPanner * m_Panner
 
QwtPlotMagnifier * m_Magnifier
 
QcepPlotMeasurerPtr m_Measurer
 
int m_IsLog [QwtPlot::axisCnt]
 

Private Member Functions

void replotImage ()
 
void setImage (QxrdRasterData *data)
 
void setMask (QxrdMaskRasterData *data)
 
void setOverflows (QxrdMaskRasterData *overflow)
 
void colorMapStart (QColor startColor, QColor endColor)
 
void colorMapRange (double value1, QColor color1, double value2, QColor color2)
 
void changedColorMap ()
 
void setTrackerPen (const QPen &pen)
 
void disablePickers ()
 
void clearROIDisplay ()
 
void updateROIDisplay ()
 
void selectROIItem (int n, bool selected)
 
void updateROISelection (const QItemSelection &selected, const QItemSelection &deselected)
 

Private Attributes

QcepObjectNamer m_ObjectNamer
 
QwtPlotRescaler * m_Rescaler
 
QxrdPlotSlicerm_Slicer
 
QxrdImagePlotMeasurerm_Measurer
 
QxrdHistogramSelectorm_HistogramSelector
 
QcepImageDataBasePtr m_Data
 
QcepMaskDataPtr m_Mask
 
QcepMaskDataPtr m_Overflow
 
QxrdRasterDatam_DataRaster
 
QxrdMaskRasterDatam_MaskRaster
 
QxrdMaskRasterDatam_OverflowRaster
 
QwtPlotSpectrogram * m_DataImage
 
QwtPlotSpectrogram * m_MaskImage
 
QwtPlotSpectrogram * m_OverflowImage
 
QwtLinearColorMap * m_ColorMap
 
QxrdMaskColorMapm_MaskColorMap
 
int m_MaskAlpha
 
QxrdMaskColorMapm_OverflowColorMap
 
int m_OverflowAlpha
 
QxrdDataProcessorWPtr m_DataProcessor
 
QxrdCenterFinderPickerm_CenterFinderPicker
 
QwtPlotMarker * m_CenterMarker
 
QxrdMaskPickerm_Circles
 
QxrdMaskPickerm_Polygons
 
QxrdPowderPointPickerm_PowderPointPicker
 
QVector< QwtPlotCurve * > m_PowderPointCurves
 
bool m_FirstTime
 
bool m_ContextMenuEnabled
 
QxrdROICoordinatesListModelPtr m_ROIModel
 
QItemSelectionModel * m_ROISelection
 
QVector< QwtPlotCurve * > m_ROICurves
 

Detailed Description

Definition at line 30 of file qxrdimageplot.h.

Member Enumeration Documentation

anonymous enum
Enumerator
PercentageMode 
PercentileMode 
AbsoluteMode 

Definition at line 149 of file qxrdimageplot.h.

Constructor & Destructor Documentation

QxrdImagePlot::QxrdImagePlot ( QWidget *  parent = 0)

Definition at line 30 of file qxrdimageplot.cpp.

31  : QcepPlot(parent),
32  m_ObjectNamer(this, "imageGraph"),
34  m_Rescaler(NULL),
35  m_Slicer(NULL),
36  m_Measurer(NULL),
37  m_HistogramSelector(NULL),
38  m_Data(NULL),
39  m_Mask(NULL),
40  m_Overflow(NULL),
41  m_DataRaster(NULL),
42  m_MaskRaster(NULL),
43  m_OverflowRaster(NULL),
44  m_DataImage(NULL),
45  m_MaskImage(NULL),
46  m_OverflowImage(NULL),
47  m_ColorMap(new QwtLinearColorMap(Qt::black, Qt::white)),
48  m_MaskColorMap(new QxrdMaskColorMap(Qt::red, QColor(0,0,0,0))),
49  m_MaskAlpha(80),
50  m_OverflowColorMap(new QxrdMaskColorMap(QColor(0,0,0,0), Qt::green)),
51  m_OverflowAlpha(256),
54  m_CenterMarker(NULL),
55  m_Circles(NULL),
56  m_Polygons(NULL),
57  m_PowderPointPicker(NULL),
58  m_FirstTime(true),
60 
61  m_ROIModel(),
62  m_ROISelection(NULL),
63  m_ROICurves()
64 {
65 }
QxrdROICoordinatesListModelPtr m_ROIModel
QwtPlotSpectrogram * m_DataImage
QwtPlotMarker * m_CenterMarker
QxrdPlotSlicer * m_Slicer
QcepObjectNamer m_ObjectNamer
QwtLinearColorMap * m_ColorMap
QcepPlot(QWidget *parent=0)
Definition: qcepplot.cpp:18
QwtPlotSpectrogram * m_OverflowImage
QxrdImagePlotSettingsWPtr m_ImagePlotSettings
QxrdMaskRasterData * m_MaskRaster
QwtPlotSpectrogram * m_MaskImage
QwtPlotRescaler * m_Rescaler
QxrdMaskColorMap * m_MaskColorMap
QxrdImagePlotMeasurer * m_Measurer
QxrdMaskRasterData * m_OverflowRaster
QxrdMaskPicker * m_Polygons
QxrdMaskPicker * m_Circles
QxrdHistogramSelector * m_HistogramSelector
QcepMaskDataPtr m_Overflow
QItemSelectionModel * m_ROISelection
QxrdMaskColorMap * m_OverflowColorMap
QxrdRasterData * m_DataRaster
bool m_ContextMenuEnabled
QxrdDataProcessorWPtr m_DataProcessor
QcepMaskDataPtr m_Mask
QxrdCenterFinderPicker * m_CenterFinderPicker
QVector< QwtPlotCurve * > m_ROICurves
QcepImageDataBasePtr m_Data
QxrdPowderPointPicker * m_PowderPointPicker

Member Function Documentation

void QxrdImagePlot::autoScale ( )
slot

Definition at line 219 of file qxrdimageplot.cpp.

References QcepPlot::autoScale(), and onImageScaleChanged().

Referenced by QxrdDetectorImagePlot::contextMenuEvent(), contextMenuEvent(), QxrdWindow::initialize(), and replotImage().

220 {
222 
224 }
void onImageScaleChanged()
virtual void autoScale()
Definition: qcepplot.cpp:188

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::changedColorMap ( )
private

Definition at line 634 of file qxrdimageplot.cpp.

References m_ColorMap, m_DataImage, m_MaskColorMap, m_MaskImage, m_OverflowColorMap, m_OverflowImage, replotImage(), and setColorMap().

Referenced by setEarthTones(), setFire(), setGrayscale(), setIce(), setInverseGrayscale(), and setSpectrum().

635 {
637  m_DataImage -> invalidateCache();
638  m_DataImage -> itemChanged();
639 
641  m_MaskImage -> invalidateCache();
642  m_MaskImage -> itemChanged();
643 
645  m_OverflowImage -> invalidateCache();
646  m_OverflowImage -> itemChanged();
647 
648  replotImage();
649 }
QwtPlotSpectrogram * m_DataImage
QwtLinearColorMap * m_ColorMap
QwtPlotSpectrogram * m_OverflowImage
QwtPlotSpectrogram * m_MaskImage
QxrdMaskColorMap * m_MaskColorMap
void setColorMap(int index)
QxrdMaskColorMap * m_OverflowColorMap

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::changeImageShown ( bool  shown)
slot

Definition at line 527 of file qxrdimageplot.cpp.

References m_DataImage, m_ImagePlotSettings, and replotImage().

Referenced by init(), and toggleShowImage().

528 {
530 
531  if (set) {
532  set->set_ImageShown(shown);
533 
534  if (m_DataImage) {
535  m_DataImage -> setAlpha(set->get_ImageShown() ? 255 : 0);
536  m_DataImage -> invalidateCache();
537  m_DataImage -> itemChanged();
538 
539  replotImage();
540  }
541  }
542 }
QwtPlotSpectrogram * m_DataImage
QxrdImagePlotSettingsWPtr m_ImagePlotSettings
QSharedPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsPtr

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::changeLogDisplay ( bool  isLog)
slot

Definition at line 625 of file qxrdimageplot.cpp.

References m_ImagePlotSettings.

Referenced by toggleLogDisplay().

626 {
628 
629  if (set) {
630  set->set_DisplayLog(isLog);
631  }
632 }
QxrdImagePlotSettingsWPtr m_ImagePlotSettings
QSharedPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsPtr

Here is the caller graph for this function:

void QxrdImagePlot::changeMaskShown ( bool  shown)
slot

Definition at line 553 of file qxrdimageplot.cpp.

References m_ImagePlotSettings, m_MaskAlpha, m_MaskImage, and replotImage().

Referenced by init(), and toggleShowMask().

554 {
556 
557  if (set) {
558  set->set_MaskShown(shown);
559 
560  if (m_MaskImage) {
561  m_MaskImage -> setAlpha(set->get_MaskShown() ? m_MaskAlpha : 0);
562  m_MaskImage -> invalidateCache();
563  m_MaskImage -> itemChanged();
564 
565  replotImage();
566  }
567  }
568 }
QxrdImagePlotSettingsWPtr m_ImagePlotSettings
QwtPlotSpectrogram * m_MaskImage
QSharedPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsPtr

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::changeOverflowShown ( bool  shown)
slot

Definition at line 579 of file qxrdimageplot.cpp.

References m_ImagePlotSettings, m_OverflowAlpha, m_OverflowImage, and replotImage().

Referenced by init(), and toggleShowOverflow().

580 {
582 
583  if (set) {
584  set->set_OverflowShown(shown);
585 
586  if (m_OverflowImage) {
587  m_OverflowImage -> setAlpha(set->get_OverflowShown() ? m_OverflowAlpha : 0);
588  m_OverflowImage -> invalidateCache();
589  m_OverflowImage -> itemChanged();
590 
591  replotImage();
592  }
593  }
594 }
QwtPlotSpectrogram * m_OverflowImage
QxrdImagePlotSettingsWPtr m_ImagePlotSettings
QSharedPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsPtr

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::changeROIShown ( bool  shown)
slot

Definition at line 605 of file qxrdimageplot.cpp.

References m_ImagePlotSettings, and updateROIDisplay().

Referenced by toggleShowROI().

606 {
608 
609  if (set) {
610  set->set_DisplayROI(shown);
611 
613  }
614 }
QxrdImagePlotSettingsWPtr m_ImagePlotSettings
QSharedPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsPtr

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::clearPowderMarkers ( )
slot

Definition at line 1166 of file qxrdimageplot.cpp.

References m_PowderPointCurves.

Referenced by displayPowderMarkers().

1167 {
1168  foreach(QwtPlotCurve *curve, m_PowderPointCurves) {
1169  curve->detach();
1170  delete curve;
1171  }
1172 
1173  m_PowderPointCurves.clear();
1174 }
QVector< QwtPlotCurve * > m_PowderPointCurves

Here is the caller graph for this function:

void QxrdImagePlot::clearROIDisplay ( )
private

Definition at line 1214 of file qxrdimageplot.cpp.

References m_ROICurves.

Referenced by updateROIDisplay().

1215 {
1216  foreach (QwtPlotCurve *curve, m_ROICurves) {
1217  curve->detach();
1218  delete curve;
1219  }
1220 
1221  m_ROICurves.clear();
1222 }
QVector< QwtPlotCurve * > m_ROICurves

Here is the caller graph for this function:

void QxrdImagePlot::colorMapRange ( double  value1,
QColor  color1,
double  value2,
QColor  color2 
)
private

Definition at line 375 of file qxrdimageplot.cpp.

References m_ColorMap, and m_ImagePlotSettings.

Referenced by setEarthTones(), setFire(), setGrayscale(), setIce(), setInverseGrayscale(), and setSpectrum().

376 {
378 
379  if (set && set->get_DisplayLog()) {
380  int n1 = int(value1*100);
381  int n2 = int(value2*100);
382  double r1 = color1.redF();
383  double r2 = color2.redF();
384  double g1 = color1.greenF();
385  double g2 = color2.greenF();
386  double b1 = color1.blueF();
387  double b2 = color2.blueF();
388 
389  for (int n=n1; n<n2; n++) {
390  double pos = double(n)/100.0;
391  double val = (pow(10.0, pos) - 1.0)/9.0;
392  double interp = (pos-value1)/(value2-value1);
393 
394  QColor col = QColor::fromRgbF(r1 + (r2-r1)*interp, g1 + (g2 - g1)*interp, b1 + (b2 - b1)*interp);
395 
396  m_ColorMap->addColorStop(val, col);
397  }
398  } else {
399  m_ColorMap->addColorStop(value1, color1);
400  }
401 }
QwtLinearColorMap * m_ColorMap
QxrdImagePlotSettingsWPtr m_ImagePlotSettings
QSharedPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsPtr

Here is the caller graph for this function:

void QxrdImagePlot::colorMapStart ( QColor  startColor,
QColor  endColor 
)
private

Definition at line 370 of file qxrdimageplot.cpp.

References m_ColorMap.

Referenced by setEarthTones(), setFire(), setGrayscale(), setIce(), setInverseGrayscale(), and setSpectrum().

371 {
372  m_ColorMap->setColorInterval(startColor, endColor);
373 }
QwtLinearColorMap * m_ColorMap

Here is the caller graph for this function:

void QxrdImagePlot::contextMenuEvent ( QContextMenuEvent *  event)

Definition at line 974 of file qxrdimageplot.cpp.

References autoScale(), m_ContextMenuEnabled, m_DataProcessor, m_ImagePlotSettings, QxrdPowderPoint::n1(), QcepPlot::printGraph(), QxrdPowderPoint::x(), QxrdPowderPoint::y(), and zapPixel().

975 {
976  if (m_ContextMenuEnabled) {
978 
979  if (set) {
980  QMenu plotMenu(NULL, NULL);
981 
982  QAction *auSc = plotMenu.addAction("Autoscale");
983  QAction *prGr = plotMenu.addAction("Print Graph...");
984 
985  plotMenu.addSeparator();
986 
988 
989  if (dp) {
990  QxrdCenterFinderPtr cf(dp->centerFinder());
991 
992  if (cf) {
993  QwtScaleMap xMap = canvasMap(QwtPlot::xBottom);
994  QwtScaleMap yMap = canvasMap(QwtPlot::yLeft);
995 
996  QWidget *canv = canvas();
997 
998  QPoint evlocal = canv->mapFromParent(event->pos());
999 
1000  double x = xMap.invTransform(evlocal.x());
1001  double y = yMap.invTransform(evlocal.y());
1002 
1003  QxrdPowderPoint nearest = cf->nearestPowderPoint(x, y);
1004 
1005  QAction *fitCircle = plotMenu.addAction(tr("Fit Circle Center from Points on Ring %1").arg(nearest.n1()));
1006  QAction *fitEllipse = plotMenu.addAction(tr("Fit Ellipse from Points on Ring %1").arg(nearest.n1()));
1007  QAction *fitEllipses = plotMenu.addAction(tr("Fit Ellipses to all powder rings"));
1008 
1009  QAction *adjustEnergy = plotMenu.addAction(tr("Adjust Energy to match Calibrant Ring %1").arg(nearest.n1()));
1010  QAction *adjustDistance = plotMenu.addAction(tr("Adjust Detector Distance to match Calibrant Ring %1").arg(nearest.n1()));
1011 
1012  QAction *adjustFit = plotMenu.addAction(tr("Fit to nearby peak when adding powder points?"));
1013  adjustFit->setCheckable(true); adjustFit->setChecked(cf->get_FitPowderPointPosition());
1014  QAction *addPoint = plotMenu.addAction(tr("Add point at (%1,%2)").arg(x).arg(y));
1015  QAction *delPoint = plotMenu.addAction(tr("Delete point at (%1,%2)").arg(nearest.x()).arg(nearest.y()));
1016  QAction *delRing = plotMenu.addAction(tr("Delete Ring %1").arg(nearest.n1()));
1017  QAction *deleteAllPoints = plotMenu.addAction(tr("Delete all Rings"));
1018  QAction *disableRing = plotMenu.addAction(tr("Disable Ring %1").arg(nearest.n1()));
1019  QAction *enableRing = plotMenu.addAction(tr("Enable Ring %1").arg(nearest.n1()));
1020  QAction *normalizeRings = plotMenu.addAction(tr("Normalize Powder Rings"));
1021  QAction *fitPeakNear = plotMenu.addAction(tr("Fit Diffracted Peak near (%1,%2) [%3,%4]").arg(x).arg(y).arg(event->x()).arg(event->y()));
1022  QAction *fitRingNear = plotMenu.addAction(tr("Fit Point on Diffracted Ring near (%1,%2) [%3,%4]").arg(x).arg(y).arg(event->x()).arg(event->y()));
1023  QAction *traceRingClockwise = plotMenu.addAction(tr("Trace Diffracted Ring starting at (%1,%2) [%3,%4]").arg(x).arg(y).arg(event->x()).arg(event->y()));
1024  QAction *missingRing = plotMenu.addAction(tr("Missing Diffracted Ring near (%1,%2)").arg(x).arg(y));
1025  // QAction *traceRingParallel = plotMenu.addAction(tr("Trace Diffracted Ring starting at (%1,%2) [%3,%4] in parallel").arg(x).arg(y).arg(event->x()).arg(event->y()));
1026  QAction *zapPixel = plotMenu.addAction(tr("Zap (replace with avg of neighboring values) pixel [%1,%2]").arg((int)x).arg(int(y)));
1027 
1028  QAction *action = plotMenu.exec(event->globalPos());
1029 
1030  if (action == auSc) {
1031  autoScale();
1032  } else if (action == prGr) {
1033  printGraph();
1034  } else if (action == fitCircle) {
1035  cf->fitPowderCircle(nearest.n1());
1036  } else if (action == fitEllipse) {
1037  cf->fitPowderEllipse(nearest.n1());
1038  } else if (action == fitEllipses) {
1039  cf->fitPowderEllipses();
1040  } else if (action == adjustEnergy) {
1041  cf->adjustEnergy(nearest.n1());
1042  } else if (action == adjustDistance) {
1043  cf->adjustDistance(nearest.n1());
1044  } else if (action == adjustFit) {
1045  cf->toggle_FitPowderPointPosition();
1046  } else if (action == addPoint) {
1047  cf->appendPowderPoint(x,y);
1048  } else if (action == delPoint) {
1049  cf->deletePowderPointNear(x,y);
1050  } else if (action == delRing) {
1051  cf->deletePowderRing(nearest.n1());
1052  } else if (action == deleteAllPoints) {
1053  cf->deletePowderPoints();
1054  } else if (action == enableRing) {
1055  cf->enablePowderRing(nearest.n1());
1056  } else if (action == disableRing) {
1057  cf->disablePowderRing(nearest.n1());
1058  } else if (action == normalizeRings) {
1059  cf->normalizePowderRings();
1060  } else if (action == fitPeakNear) {
1061  QMetaObject::invokeMethod(cf.data(), "fitPeakNear",
1062  Q_ARG(double,x),
1063  Q_ARG(double,y));
1064  } else if (action == fitRingNear) {
1065  QMetaObject::invokeMethod(cf.data(), "fitRingNear",
1066  Q_ARG(double,x),
1067  Q_ARG(double,y));
1068  } else if (action == traceRingClockwise) {
1069  QMetaObject::invokeMethod(cf.data(), "traceRingNear",
1070  Q_ARG(double,x),
1071  Q_ARG(double,y),
1072  Q_ARG(double,25.0));
1073  } else if (action == missingRing) {
1074  cf->missingRingNear(x,y);
1075 // QMetaObject::invokeMethod((cf.data(), "missingRingNear",
1076 // Q_ARG(double,x),
1077 // Q_ARG(double,y));
1078 // } else if (action == traceRingParallel) {
1079 // QMetaObject::invokeMethod(cf.data(), "traceRingNearParallel",
1080 // Q_ARG(double,x),
1081 // Q_ARG(double,y),
1082 // Q_ARG(double,25.0));
1083  } else if (action == zapPixel) {
1084  this->zapPixel(qRound(x),qRound(y));
1085  }
1086  }
1087  }
1088  }
1089 
1090  event->accept();
1091  } else {
1092  event->accept();
1093  }
1094 }
double y() const
QSharedPointer< QxrdCenterFinder > QxrdCenterFinderPtr
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
QxrdImagePlotSettingsWPtr m_ImagePlotSettings
void zapPixel(int x, int y)
void printGraph()
Definition: qcepplot.cpp:199
QSharedPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsPtr
double x() const
int n1() const
bool m_ContextMenuEnabled
QxrdDataProcessorWPtr m_DataProcessor

Here is the call graph for this function:

void QxrdImagePlot::disableContextMenu ( )
slot

Definition at line 969 of file qxrdimageplot.cpp.

References m_ContextMenuEnabled.

Referenced by QxrdPolygonalMaskPicker::append().

970 {
971  m_ContextMenuEnabled = false;
972 }
bool m_ContextMenuEnabled

Here is the caller graph for this function:

void QxrdImagePlot::disablePickers ( )
private

Definition at line 806 of file qxrdimageplot.cpp.

References displayPowderMarkers(), enableContextMenu(), m_CenterFinderPicker, m_Circles, m_HistogramSelector, m_Measurer, m_Polygons, m_PowderPointPicker, m_Slicer, and QcepPlot::m_Zoomer.

Referenced by enableCentering(), enableHistograms(), enableMaskCircles(), enableMaskPolygons(), enableMeasuring(), enablePowderPoints(), enableSlicing(), and enableZooming().

807 {
808  m_Zoomer -> setEnabled(false);
809  m_CenterFinderPicker -> setEnabled(false);
810  m_Slicer -> setEnabled(false);
811  m_Measurer -> setEnabled(false);
812  m_HistogramSelector -> setEnabled(false);
813  m_Circles -> setEnabled(false);
814  m_Polygons -> setEnabled(false);
815  m_PowderPointPicker -> setEnabled(false);
816 
818 
820 }
QxrdPlotSlicer * m_Slicer
void enableContextMenu()
QwtPlotZoomer * m_Zoomer
Definition: qcepplot.h:59
QxrdImagePlotMeasurer * m_Measurer
QxrdMaskPicker * m_Polygons
QxrdMaskPicker * m_Circles
QxrdHistogramSelector * m_HistogramSelector
void displayPowderMarkers()
QxrdCenterFinderPicker * m_CenterFinderPicker
QxrdPowderPointPicker * m_PowderPointPicker

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::displayPowderMarkers ( )
slot

Definition at line 1123 of file qxrdimageplot.cpp.

References clearPowderMarkers(), m_DataProcessor, m_PowderPointCurves, QxrdPowderPoint::n1(), replot(), QcepPlot::setPlotCurveStyle(), QxrdPowderPoint::x(), and QxrdPowderPoint::y().

Referenced by disablePickers(), and onMarkedPointsChanged().

1124 {
1126 
1128 
1129  if (dp) {
1130  QxrdCenterFinderPtr cf(dp->centerFinder());
1131 
1132  if (cf) {
1133  int nrgs = cf->countPowderRings();
1134  int npts = cf->countPowderRingPoints();
1135 
1136  for (int r=0; r<nrgs; r++) {
1137  QVector<double> x,y;
1138 
1139  for (int i=0; i<npts; i++) {
1140  QxrdPowderPoint pt = cf->powderRingPoint(i);
1141 
1142  if (pt.n1() == r) {
1143  x.append(pt.x());
1144  y.append(pt.y());
1145  }
1146  }
1147 
1148  if (x.count() > 0) {
1149  QwtPlotCurve *pc = new QwtPlotCurve(tr("Ring %1").arg(r));
1150 
1151  setPlotCurveStyle(r, pc);
1152  pc -> setSamples(x, y);
1153  pc -> setStyle(QwtPlotCurve::NoCurve);
1154  pc -> setLegendAttribute(QwtPlotCurve::LegendShowSymbol, true);
1155  pc -> attach(this);
1156 
1157  m_PowderPointCurves.append(pc);
1158  }
1159  }
1160 
1161  replot();
1162  }
1163  }
1164 }
double y() const
QSharedPointer< QxrdCenterFinder > QxrdCenterFinderPtr
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
QVector< QwtPlotCurve * > m_PowderPointCurves
void setPlotCurveStyle(int index, QwtPlotCurve *curve)
Definition: qcepplot.cpp:103
void clearPowderMarkers()
double x() const
int n1() const
QxrdDataProcessorWPtr m_DataProcessor

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::enableCentering ( )
slot

Definition at line 829 of file qxrdimageplot.cpp.

References disablePickers(), and m_CenterFinderPicker.

Referenced by QxrdWindow::initialize().

830 {
831  disablePickers();
832 
833  m_CenterFinderPicker -> setEnabled(true);
834 }
QxrdCenterFinderPicker * m_CenterFinderPicker

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::enableContextMenu ( )
slot

Definition at line 964 of file qxrdimageplot.cpp.

References m_ContextMenuEnabled.

Referenced by disablePickers(), and QxrdPolygonalMaskPicker::end().

965 {
966  m_ContextMenuEnabled = true;
967 }
bool m_ContextMenuEnabled

Here is the caller graph for this function:

void QxrdImagePlot::enableHistograms ( )
slot

Definition at line 850 of file qxrdimageplot.cpp.

References disablePickers(), and m_HistogramSelector.

Referenced by QxrdWindow::initialize().

851 {
852  disablePickers();
853 
854  m_HistogramSelector -> setEnabled(true);
855 }
QxrdHistogramSelector * m_HistogramSelector

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::enableMaskCircles ( )
slot

Definition at line 857 of file qxrdimageplot.cpp.

References disablePickers(), and m_Circles.

Referenced by QxrdWindow::initialize().

858 {
859  disablePickers();
860 
861  m_Circles -> setEnabled(true);
862 }
QxrdMaskPicker * m_Circles

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::enableMaskPolygons ( )
slot

Definition at line 864 of file qxrdimageplot.cpp.

References disablePickers(), and m_Polygons.

Referenced by QxrdWindow::initialize().

865 {
866  disablePickers();
867 
868  m_Polygons -> setEnabled(true);
869 }
QxrdMaskPicker * m_Polygons

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::enableMeasuring ( )
slot

Definition at line 843 of file qxrdimageplot.cpp.

References disablePickers(), and m_Measurer.

Referenced by QxrdWindow::initialize().

844 {
845  disablePickers();
846 
847  m_Measurer -> setEnabled(true);
848 }
QxrdImagePlotMeasurer * m_Measurer

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::enablePowderPoints ( )
slot

Definition at line 871 of file qxrdimageplot.cpp.

References disablePickers(), and m_PowderPointPicker.

Referenced by QxrdWindow::initialize().

872 {
873  disablePickers();
874 
875  m_PowderPointPicker -> setEnabled(true);
876 
877 // displayPowderMarkers();
878 }
QxrdPowderPointPicker * m_PowderPointPicker

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::enableROIDisplay ( bool  enable)

Definition at line 1176 of file qxrdimageplot.cpp.

References m_ImagePlotSettings, and updateROIDisplay().

1177 {
1179 
1180  if (set) {
1181  set->set_DisplayROI(enable);
1182  }
1183 
1184  updateROIDisplay();
1185 }
QxrdImagePlotSettingsWPtr m_ImagePlotSettings
QSharedPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsPtr

Here is the call graph for this function:

void QxrdImagePlot::enableSlicing ( )
slot

Definition at line 836 of file qxrdimageplot.cpp.

References disablePickers(), and m_Slicer.

Referenced by QxrdWindow::initialize().

837 {
838  disablePickers();
839 
840  m_Slicer -> setEnabled(true);
841 }
QxrdPlotSlicer * m_Slicer

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::enableZooming ( )
slot

Definition at line 822 of file qxrdimageplot.cpp.

References disablePickers(), and QcepPlot::m_Zoomer.

Referenced by init(), and QxrdWindow::initialize().

823 {
824  disablePickers();
825 
826  m_Zoomer -> setEnabled(true);
827 }
QwtPlotZoomer * m_Zoomer
Definition: qcepplot.h:59

Here is the call graph for this function:

Here is the caller graph for this function:

QxrdImagePlotSettingsWPtr QxrdImagePlot::imagePlotSettings ( )

Definition at line 214 of file qxrdimageplot.cpp.

References m_ImagePlotSettings.

215 {
216  return m_ImagePlotSettings;
217 }
QxrdImagePlotSettingsWPtr m_ImagePlotSettings
void QxrdImagePlot::init ( QxrdImagePlotSettingsWPtr  settings)

Definition at line 67 of file qxrdimageplot.cpp.

References changeImageShown(), changeMaskShown(), changeOverflowShown(), enableZooming(), QcepPlot::init(), m_CenterFinderPicker, m_CenterMarker, m_Circles, m_DataImage, m_HistogramSelector, m_ImagePlotSettings, QcepPlot::m_Legend, m_MaskAlpha, m_MaskImage, m_Measurer, m_OverflowAlpha, m_OverflowImage, m_Polygons, m_PowderPointPicker, m_Rescaler, m_Slicer, QcepPlot::m_Zoomer, onImageScaleChanged(), onInterpolateChanged(), onMaintainAspectChanged(), recalculateDisplayedRange(), redoColorMap(), set100Range(), setColorMap(), setGrayscale(), QcepDoubleProperty::valueChanged(), QcepIntProperty::valueChanged(), and QcepBoolProperty::valueChanged().

Referenced by QxrdDetectorImagePlot::init().

68 {
69  QcepPlot::init(settings);
70 
71  m_ImagePlotSettings = settings;
72 
74 
75  delete m_Zoomer;
76 
77  m_Zoomer = new QxrdImagePlotZoomer(canvas(), this);
78  m_Zoomer -> setStateMachine(new QwtPickerDragRectMachine());
79  m_Zoomer -> setTrackerMode(QwtPicker::AlwaysOn);
80  m_Zoomer -> setRubberBand(QwtPicker::RectRubberBand);
81 
82  m_Zoomer -> setMousePattern(QwtEventPattern::MouseSelect2,
83  Qt::LeftButton, Qt::ControlModifier | Qt::ShiftModifier);
84  m_Zoomer -> setMousePattern(QwtEventPattern::MouseSelect3,
85  Qt::LeftButton, Qt::ControlModifier);
86 
87  m_Zoomer -> setEnabled(true);
88 
89  m_Rescaler = new QwtPlotRescaler(canvas(), QwtPlot::yLeft, QwtPlotRescaler::Expanding);
90  m_Rescaler -> setEnabled(true);
91  m_Rescaler -> setExpandingDirection(QwtPlotRescaler::ExpandBoth);
92 
93  m_Slicer = new QxrdPlotSlicer(canvas(), this);
94  m_Slicer -> setEnabled(false);
95 
96  m_Measurer = new QxrdImagePlotMeasurer(canvas(), this);
97  m_Measurer -> setEnabled(false);
98 
99  m_HistogramSelector = new QxrdHistogramSelector(canvas(), this);
100  m_HistogramSelector -> setEnabled(false);
101 
102  m_Legend -> setFrameStyle(QFrame::Box|QFrame::Sunken);
103  m_Legend -> setDefaultItemMode(QwtLegendData::Checkable);
104 
105 // insertLegend(m_Legend, QwtPlot::BottomLegend);
106 
107  m_DataImage = new QwtPlotSpectrogram();
108  m_DataImage -> attach(this);
109 
110  m_MaskImage = new QwtPlotSpectrogram();
111  m_MaskImage -> setAlpha(set && set->get_MaskShown() ? m_MaskAlpha : 0);
112  m_MaskImage -> attach(this);
113 
114  m_OverflowImage = new QwtPlotSpectrogram();
115  m_OverflowImage -> setAlpha(set && set->get_OverflowShown() ? m_OverflowAlpha : 0);
116  m_OverflowImage -> attach(this);
117 
119 
120  m_CenterMarker = new QwtPlotMarker();
121  m_CenterMarker -> setLineStyle(QwtPlotMarker::Cross);
122  m_CenterMarker -> attach(this);
123 
124  m_Circles = new QxrdCircularMaskPicker(canvas(), this);
125  m_Circles -> setEnabled(false);
126 
127  m_Polygons = new QxrdPolygonalMaskPicker(canvas(), this);
128  m_Polygons -> setEnabled(false);
129 
131  m_PowderPointPicker -> setEnabled(false);
132 
133  set100Range();
134  setGrayscale();
135 
136  if (set) {
137  connect(m_Zoomer, &QwtPlotZoomer::zoomed, this, &QxrdImagePlot::onImageScaleChanged);
138  connect(set->prop_ImageShown(), &QcepBoolProperty::valueChanged, this, &QxrdImagePlot::changeImageShown);
139  connect(set->prop_MaskShown(), &QcepBoolProperty::valueChanged, this, &QxrdImagePlot::changeMaskShown);
140  connect(set->prop_OverflowShown(), &QcepBoolProperty::valueChanged, this, &QxrdImagePlot::changeOverflowShown);
141  connect(set->prop_DisplayMinimumPct(), &QcepDoubleProperty::valueChanged, this, &QxrdImagePlot::recalculateDisplayedRange);
142  connect(set->prop_DisplayMaximumPct(), &QcepDoubleProperty::valueChanged, this, &QxrdImagePlot::recalculateDisplayedRange);
143  connect(set->prop_DisplayMinimumVal(), &QcepDoubleProperty::valueChanged, this, &QxrdImagePlot::recalculateDisplayedRange);
144  connect(set->prop_DisplayMaximumVal(), &QcepDoubleProperty::valueChanged, this, &QxrdImagePlot::recalculateDisplayedRange);
145  connect(set->prop_DisplayMinimumPctle(), &QcepDoubleProperty::valueChanged, this, &QxrdImagePlot::recalculateDisplayedRange);
146  connect(set->prop_DisplayMaximumPctle(), &QcepDoubleProperty::valueChanged, this, &QxrdImagePlot::recalculateDisplayedRange);
147  connect(set->prop_DisplayScalingMode(), &QcepIntProperty::valueChanged, this, &QxrdImagePlot::recalculateDisplayedRange);
148  connect(set->prop_InterpolatePixels(), &QcepBoolProperty::valueChanged, this, &QxrdImagePlot::onInterpolateChanged);
149  connect(set->prop_MaintainAspectRatio(), &QcepBoolProperty::valueChanged, this, &QxrdImagePlot::onMaintainAspectChanged);
150  connect(set->prop_DisplayColorMap(), &QcepIntProperty::valueChanged, this, &QxrdImagePlot::setColorMap);
151  connect(set->prop_DisplayLog(), &QcepBoolProperty::valueChanged, this, &QxrdImagePlot::redoColorMap);
152 
153  changeImageShown(set->get_ImageShown());
154  changeMaskShown(set->get_MaskShown());
155  changeOverflowShown(set->get_OverflowShown());
157  onInterpolateChanged(set->get_InterpolatePixels());
158  onMaintainAspectChanged(set->get_MaintainAspectRatio());
159  setColorMap(set->get_DisplayColorMap());
160  redoColorMap();
161  }
162 
163  enableZooming();
164 
166 }
void changeMaskShown(bool shown)
void changeOverflowShown(bool shown)
QwtPlotSpectrogram * m_DataImage
void changeImageShown(bool shown)
QwtPlotMarker * m_CenterMarker
QxrdPlotSlicer * m_Slicer
void onImageScaleChanged()
QwtPlotSpectrogram * m_OverflowImage
QwtLegend * m_Legend
Definition: qcepplot.h:58
QxrdImagePlotSettingsWPtr m_ImagePlotSettings
QwtPlotZoomer * m_Zoomer
Definition: qcepplot.h:59
QwtPlotSpectrogram * m_MaskImage
QwtPlotRescaler * m_Rescaler
void init(QcepPlotSettingsWPtr settings)
Definition: qcepplot.cpp:36
QxrdImagePlotMeasurer * m_Measurer
QxrdMaskPicker * m_Polygons
void setColorMap(int index)
void recalculateDisplayedRange()
QxrdMaskPicker * m_Circles
QSharedPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsPtr
QxrdHistogramSelector * m_HistogramSelector
void onMaintainAspectChanged(bool interp)
void valueChanged(double val, int index)
void valueChanged(int val, int index)
void valueChanged(bool val, int index)
QxrdCenterFinderPicker * m_CenterFinderPicker
QxrdPowderPointPicker * m_PowderPointPicker
void onInterpolateChanged(bool interp)

Here is the call graph for this function:

Here is the caller graph for this function:

const QxrdMaskRasterData * QxrdImagePlot::maskRaster ( ) const

Definition at line 796 of file qxrdimageplot.cpp.

References m_MaskRaster.

797 {
798  return m_MaskRaster;
799 }
QxrdMaskRasterData * m_MaskRaster
QxrdMaskRasterData * QxrdImagePlot::maskRaster ( )

Definition at line 801 of file qxrdimageplot.cpp.

References m_MaskRaster.

802 {
803  return m_MaskRaster;
804 }
QxrdMaskRasterData * m_MaskRaster
void QxrdImagePlot::moveSelectedROICenter ( double  x,
double  y 
)
protected

Definition at line 1370 of file qxrdimageplot.cpp.

References m_ROIModel, and m_ROISelection.

Referenced by QxrdDetectorImagePlot::contextMenuEvent().

1371 {
1372  if (m_ROIModel && m_ROISelection) {
1373  int n = m_ROIModel->roiCount();
1374 
1375  for (int i=0; i<n; i++) {
1376  if (m_ROISelection->rowIntersectsSelection(i,QModelIndex())) {
1377  m_ROIModel->moveROICenter(i, x, y);
1378  }
1379  }
1380  }
1381 }
QxrdROICoordinatesListModelPtr m_ROIModel
QItemSelectionModel * m_ROISelection

Here is the caller graph for this function:

void QxrdImagePlot::onCenterChanged ( QPointF  c)
slot

Definition at line 773 of file qxrdimageplot.cpp.

References m_CenterMarker, and replot().

Referenced by setProcessor().

774 {
775  m_CenterMarker -> setValue(c);
776  replot();
777 }
QwtPlotMarker * m_CenterMarker

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::onCenterXChanged ( double  cx)
slot

Definition at line 761 of file qxrdimageplot.cpp.

References m_CenterMarker, and replot().

Referenced by QxrdWindow::initialize().

762 {
763  m_CenterMarker -> setXValue(cx);
764  replot();
765 }
QwtPlotMarker * m_CenterMarker

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::onCenterYChanged ( double  cy)
slot

Definition at line 767 of file qxrdimageplot.cpp.

References m_CenterMarker, and replot().

Referenced by QxrdWindow::initialize().

768 {
769  m_CenterMarker -> setYValue(cy);
770  replot();
771 }
QwtPlotMarker * m_CenterMarker

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::onDarkImageAvailable ( QcepImageDataBasePtr  image)
slot

Definition at line 757 of file qxrdimageplot.cpp.

758 {
759 }
void QxrdImagePlot::onImageScaleChanged ( )
slot

Definition at line 779 of file qxrdimageplot.cpp.

References m_Rescaler.

Referenced by autoScale(), init(), onMaintainAspectChanged(), and setImage().

780 {
781  if (m_Rescaler && m_Rescaler->isEnabled()) {
782  m_Rescaler->rescale();
783  }
784 }
QwtPlotRescaler * m_Rescaler

Here is the caller graph for this function:

void QxrdImagePlot::onInterpolateChanged ( bool  interp)
slot

Definition at line 308 of file qxrdimageplot.cpp.

References m_DataRaster, replotImage(), and QxrdRasterData::setInterpolate().

Referenced by init().

309 {
310  // printf("QxrdImagePlot::onInterpolateChanged(%d)\n", interp);
311 
312  if (m_DataRaster) {
313  m_DataRaster->setInterpolate(interp);
314 
315  }
316 
317  replotImage();
318 }
QxrdRasterData * m_DataRaster
void setInterpolate(int interp)

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::onLegendChecked ( const QVariant &  itemInfo,
bool  on,
int  index 
)
virtualslot

Definition at line 1283 of file qxrdimageplot.cpp.

References m_ROICurves, m_ROIModel, m_ROISelection, and QcepPlot::onLegendChecked().

1284 {
1285  QwtPlotItem *item = infoToItem(itemInfo);
1286 
1287  if (item) {
1288  QwtPlotCurve *pc = dynamic_cast<QwtPlotCurve*>(item);
1289 
1290  int i = m_ROICurves.indexOf(pc);
1291 
1292  if (i >= 0) {
1293  if (m_ROISelection && m_ROIModel) {
1294  if (on) {
1295  m_ROISelection->select(m_ROIModel->index(i,0),
1296  QItemSelectionModel::Select | QItemSelectionModel::Rows);
1297  } else {
1298  m_ROISelection->select(m_ROIModel->index(i,0),
1299  QItemSelectionModel::Deselect | QItemSelectionModel::Rows);
1300  }
1301  }
1302  }
1303  }
1304 
1305  QcepPlot::onLegendChecked(itemInfo, on, index);
1306 }
QxrdROICoordinatesListModelPtr m_ROIModel
virtual void onLegendChecked(const QVariant &itemInfo, bool on, int index)
Definition: qcepplot.cpp:280
QItemSelectionModel * m_ROISelection
QVector< QwtPlotCurve * > m_ROICurves

Here is the call graph for this function:

void QxrdImagePlot::onMaintainAspectChanged ( bool  interp)
slot

Definition at line 320 of file qxrdimageplot.cpp.

References m_Rescaler, onImageScaleChanged(), and replotImage().

Referenced by init().

321 {
322  // printf("QxrdImagePlot::onMaintainAspectChanged(%d)\n", interp);
323 
324  if (m_Rescaler) {
325  m_Rescaler -> setEnabled(interp);
326  }
327 
329 
330  replotImage();
331 }
void onImageScaleChanged()
QwtPlotRescaler * m_Rescaler

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::onMarkedPointsChanged ( )
slot

Definition at line 1116 of file qxrdimageplot.cpp.

References displayPowderMarkers(), and replot().

Referenced by setProcessor().

1117 {
1119 
1120  replot();
1121 }
void displayPowderMarkers()

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::onMaskedImageAvailable ( QcepImageDataBasePtr  image,
QcepMaskDataPtr  mask 
)
slot

Definition at line 727 of file qxrdimageplot.cpp.

References QxrdRasterData::height(), m_Data, m_DataRaster, m_FirstTime, m_ImagePlotSettings, m_Mask, replotImage(), setImage(), setMask(), and QxrdRasterData::width().

728 {
730 
731  if (set) {
732  m_Data = image;
733  m_Mask = mask;
734 
735  if (!image ||
736  image->get_Width() != m_DataRaster->width() ||
737  image->get_Height() != m_DataRaster->height()) {
738  m_FirstTime = true;
739  }
740 
741  QxrdRasterData *data = new QxrdRasterData(image, set->get_InterpolatePixels());
742  QxrdMaskRasterData *msk = new QxrdMaskRasterData(mask, false);
743 
744  setImage(data);
745  setMask(msk);
746 
747  if (image) {
748  setTitle(image -> get_Title());
749  } else {
750  setTitle("");
751  }
752 
753  replotImage();
754  }
755 }
int width() const
void setMask(QxrdMaskRasterData *data)
QxrdImagePlotSettingsWPtr m_ImagePlotSettings
QSharedPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsPtr
QxrdRasterData * m_DataRaster
int height() const
void setImage(QxrdRasterData *data)
QcepMaskDataPtr m_Mask
QcepImageDataBasePtr m_Data

Here is the call graph for this function:

void QxrdImagePlot::onProcessedImageAvailable ( QcepImageDataBasePtr  image,
QcepMaskDataPtr  overflow 
)
slot

Definition at line 686 of file qxrdimageplot.cpp.

References DEBUG_DISPLAY, g_Application, QxrdRasterData::height(), m_Data, m_DataRaster, m_FirstTime, m_ImagePlotSettings, m_Overflow, QcepApplication::printMessage(), qcepDebug(), replotImage(), setImage(), setOverflows(), and QxrdRasterData::width().

687 {
688  QTime tic;
689  tic.start();
690 
692 
693  if (set) {
694  m_Data = image;
695  m_Overflow = overflow;
696 
697  if (!image ||
698  m_DataRaster == NULL ||
699  image->get_Width() != m_DataRaster->width() ||
700  image->get_Height() != m_DataRaster->height()) {
701  m_FirstTime = true;
702  }
703 
704  QxrdRasterData *data = new QxrdRasterData(image, set->get_InterpolatePixels());
705 
706  if (overflow == NULL) {
707  setImage(data);
708  } else {
709  setOverflows(new QxrdMaskRasterData(overflow));
710  setImage(data);
711  }
712 
713  if (image) {
714  setTitle(image -> get_Title());
715  } else {
716  setTitle("");
717  }
718 
719  replotImage();
720  }
721 
723  g_Application->printMessage(tr("plot image took %1 msec").arg(tic.elapsed()));
724  }
725 }
qint64 qcepDebug(int cond)
Definition: qcepdebug.cpp:26
int width() const
QxrdImagePlotSettingsWPtr m_ImagePlotSettings
QSharedPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsPtr
QcepMaskDataPtr m_Overflow
QxrdRasterData * m_DataRaster
virtual void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())=0
QcepApplication * g_Application
int height() const
void setOverflows(QxrdMaskRasterData *overflow)
void setImage(QxrdRasterData *data)
QcepImageDataBasePtr m_Data

Here is the call graph for this function:

QxrdDataProcessorWPtr QxrdImagePlot::processor ( ) const

Definition at line 209 of file qxrdimageplot.cpp.

References m_DataProcessor.

Referenced by trackerTextF().

210 {
211  return m_DataProcessor;
212 }
QxrdDataProcessorWPtr m_DataProcessor

Here is the caller graph for this function:

const QxrdRasterData * QxrdImagePlot::raster ( ) const

Definition at line 786 of file qxrdimageplot.cpp.

References m_DataRaster.

Referenced by trackerTextF().

787 {
788  return m_DataRaster;
789 }
QxrdRasterData * m_DataRaster

Here is the caller graph for this function:

QxrdRasterData * QxrdImagePlot::raster ( )

Definition at line 791 of file qxrdimageplot.cpp.

References m_DataRaster.

792 {
793  return m_DataRaster;
794 }
QxrdRasterData * m_DataRaster
void QxrdImagePlot::recalculateDisplayedRange ( )
slot

Definition at line 263 of file qxrdimageplot.cpp.

References m_DataRaster, m_ImagePlotSettings, QxrdRasterData::maxValue(), QxrdRasterData::minValue(), PercentageMode, PercentileMode, QxrdRasterData::percentileRange(), replotImage(), and QxrdRasterData::setDisplayedRange().

Referenced by init(), and setImage().

264 {
266 
267  if (set && m_DataRaster) {
268  double mindis, maxdis;
269 
270  if (set->get_DisplayScalingMode() == PercentageMode) {
271  double minv = m_DataRaster->minValue();
272  double maxv = m_DataRaster->maxValue();
273  double del = maxv-minv;
274 
275  mindis = minv+del*set->get_DisplayMinimumPct()/100.0;
276  maxdis = minv+del*set->get_DisplayMaximumPct()/100.0;
277  } else if (set->get_DisplayScalingMode() == PercentileMode) {
278  QwtInterval range = m_DataRaster->percentileRange(set->get_DisplayMinimumPctle(), set->get_DisplayMaximumPctle());
279 
280  mindis = range.minValue();
281  maxdis = range.maxValue();
282  } else {
283  mindis = set->get_DisplayMinimumVal();
284  maxdis = set->get_DisplayMaximumVal();
285  }
286 
287  m_DataRaster->setDisplayedRange(mindis, maxdis);
288 
289  replotImage();
290  }
291 }
void setDisplayedRange(double min, double max)
QwtInterval percentileRange(double lowpct, double highpct)
QxrdImagePlotSettingsWPtr m_ImagePlotSettings
QSharedPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsPtr
QxrdRasterData * m_DataRaster

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::redoColorMap ( )
slot

Definition at line 480 of file qxrdimageplot.cpp.

References m_ImagePlotSettings, and setColorMap().

Referenced by init().

481 {
483 
484  if (set) {
485  setColorMap(set->get_DisplayColorMap());
486  }
487 }
QxrdImagePlotSettingsWPtr m_ImagePlotSettings
void setColorMap(int index)
QSharedPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsPtr

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::replot ( )

Definition at line 882 of file qxrdimageplot.cpp.

Referenced by displayPowderMarkers(), onCenterChanged(), onCenterXChanged(), onCenterYChanged(), onMarkedPointsChanged(), replotImage(), setMask(), setOverflows(), updateROIDisplay(), updateROISelection(), and zapPixel().

883 {
884  // QTime tic;
885  // tic.start();
886 
887  QcepPlot::replot();
888 
889  // g_Application->printMessage(tr("QxrdImagePlot::replot took %1 msec").arg(tic.restart()));
890 }

Here is the caller graph for this function:

void QxrdImagePlot::replotImage ( )
private

Definition at line 293 of file qxrdimageplot.cpp.

References autoScale(), m_DataImage, m_DataRaster, m_FirstTime, and replot().

Referenced by changedColorMap(), changeImageShown(), changeMaskShown(), changeOverflowShown(), onInterpolateChanged(), onMaintainAspectChanged(), onMaskedImageAvailable(), onProcessedImageAvailable(), and recalculateDisplayedRange().

294 {
295  m_DataImage -> setData(m_DataRaster);
296 
297  m_DataImage -> invalidateCache();
298  m_DataImage -> itemChanged();
299 
300  if (m_FirstTime) {
301  autoScale();
302  m_FirstTime = false;
303  } else {
304  replot();
305  }
306 }
QwtPlotSpectrogram * m_DataImage
QxrdRasterData * m_DataRaster

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::selectHistogram ( QRectF  rect)
signal

Referenced by QxrdWindow::initialize(), and setProcessor().

Here is the caller graph for this function:

void QxrdImagePlot::selectROIItem ( int  n,
bool  selected 
)
private

Definition at line 1308 of file qxrdimageplot.cpp.

References m_ROICurves.

Referenced by updateROISelection().

1309 {
1310  QwtPlotCurve *pc = m_ROICurves.value(n);
1311 
1312  if (pc) {
1313  QPen pen = pc->pen();
1314  const QwtSymbol *oldsym = pc->symbol();
1315  QwtSymbol *sym = NULL;
1316 
1317  if (oldsym) {
1318  sym = new QwtSymbol(oldsym->style(), oldsym->brush(), oldsym->pen(), oldsym->size());
1319  }
1320 
1321  if (selected) {
1322  pen.setWidth(3);
1323  if (sym) {
1324  sym->setSize(9,9);
1325  }
1326  } else {
1327  pen.setWidth(1);
1328  if (sym) {
1329  sym->setSize(5,5);
1330  }
1331  }
1332  pc->setPen(pen);
1333  if (sym) {
1334  pc->setSymbol(sym);
1335  }
1336  }
1337 }
QVector< QwtPlotCurve * > m_ROICurves

Here is the caller graph for this function:

void QxrdImagePlot::selectROILabel ( int  i,
bool  on 
)
protected

Definition at line 1339 of file qxrdimageplot.cpp.

References QcepPlot::m_Legend, and m_ROICurves.

Referenced by updateROISelection().

1340 {
1341  const QVariant itemInfo = itemToInfo(m_ROICurves.value(i));
1342 
1343  QwtLegendLabel *legendLabel =
1344  qobject_cast<QwtLegendLabel*>(
1345  m_Legend->legendWidget(itemInfo));
1346 
1347  if (legendLabel) {
1348  legendLabel->setChecked(on);
1349  }
1350 }
QwtLegend * m_Legend
Definition: qcepplot.h:58
QVector< QwtPlotCurve * > m_ROICurves

Here is the caller graph for this function:

void QxrdImagePlot::set005Range ( )
slot

Definition at line 233 of file qxrdimageplot.cpp.

References m_ImagePlotSettings.

Referenced by QxrdWindow::initialize().

234 {
236 
237  if (set) {
238  set->set_DisplayMinimumPct(0);
239  set->set_DisplayMaximumPct(5);
240  }
241 }
QxrdImagePlotSettingsWPtr m_ImagePlotSettings
QSharedPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsPtr

Here is the caller graph for this function:

void QxrdImagePlot::set010Range ( )
slot

Definition at line 243 of file qxrdimageplot.cpp.

References m_ImagePlotSettings.

Referenced by QxrdWindow::initialize().

244 {
246 
247  if (set) {
248  set->set_DisplayMinimumPct(0);
249  set->set_DisplayMaximumPct(10);
250  }
251 }
QxrdImagePlotSettingsWPtr m_ImagePlotSettings
QSharedPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsPtr

Here is the caller graph for this function:

void QxrdImagePlot::set100Range ( )
slot

Definition at line 253 of file qxrdimageplot.cpp.

References m_ImagePlotSettings.

Referenced by init(), and QxrdWindow::initialize().

254 {
256 
257  if (set) {
258  set->set_DisplayMinimumPct(0);
259  set->set_DisplayMaximumPct(100);
260  }
261 }
QxrdImagePlotSettingsWPtr m_ImagePlotSettings
QSharedPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsPtr

Here is the caller graph for this function:

void QxrdImagePlot::setAutoRange ( )
slot

Definition at line 226 of file qxrdimageplot.cpp.

References QcepApplication::criticalMessage(), and g_Application.

Referenced by QxrdWindow::initialize().

227 {
228  if (g_Application) {
229  g_Application->criticalMessage("QxrdImagePlot::setAutoRange To do...");
230  }
231 }
virtual void criticalMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())=0
QcepApplication * g_Application

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::setColorMap ( int  index)
slot

Definition at line 489 of file qxrdimageplot.cpp.

References setEarthTones(), setFire(), setGrayscale(), setIce(), setInverseGrayscale(), and setSpectrum().

Referenced by changedColorMap(), init(), and redoColorMap().

490 {
491  switch(n) {
492  case 0:
493  setGrayscale();
494  break;
495 
496  case 1:
498  break;
499 
500  case 2:
501  setEarthTones();
502  break;
503 
504  case 3:
505  setSpectrum();
506  break;
507 
508  case 4:
509  setFire();
510  break;
511 
512  case 5:
513  setIce();
514  break;
515  }
516 }
void setInverseGrayscale()

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::setEarthTones ( )
slot

Definition at line 423 of file qxrdimageplot.cpp.

References changedColorMap(), colorMapRange(), colorMapStart(), and setTrackerPen().

Referenced by QxrdWindow::initialize(), and setColorMap().

424 {
425  colorMapStart(Qt::black, Qt::white);
426 
427  colorMapRange(0.0, Qt::black, 0.15, Qt::blue);
428  colorMapRange(0.15, Qt::blue, 0.25, Qt::gray);
429  colorMapRange(0.25, Qt::gray, 0.35, Qt::green);
430  colorMapRange(0.35, Qt::green, 0.5, Qt::darkYellow);
431  colorMapRange(0.5, Qt::darkYellow, 0.85, Qt::darkMagenta);
432  colorMapRange(0.85, Qt::darkMagenta, 1.0, Qt::white);
433 
434  setTrackerPen(QPen(Qt::red));
435 
436  changedColorMap();
437 }
void colorMapRange(double value1, QColor color1, double value2, QColor color2)
void changedColorMap()
void setTrackerPen(const QPen &pen)
void colorMapStart(QColor startColor, QColor endColor)

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::setFire ( )
slot

Definition at line 454 of file qxrdimageplot.cpp.

References changedColorMap(), colorMapRange(), colorMapStart(), and setTrackerPen().

Referenced by QxrdWindow::initialize(), and setColorMap().

455 {
456  colorMapStart(Qt::black, Qt::white);
457 
458  colorMapRange(0.0, Qt::black, 0.25, Qt::red);
459  colorMapRange(0.25, Qt::red, 0.75, Qt::yellow);
460  colorMapRange(0.75, Qt::yellow, 1.0, Qt::white);
461 
462  setTrackerPen(QPen(Qt::blue));
463 
464  changedColorMap();
465 }
void colorMapRange(double value1, QColor color1, double value2, QColor color2)
void changedColorMap()
void setTrackerPen(const QPen &pen)
void colorMapStart(QColor startColor, QColor endColor)

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::setGrayscale ( )
slot

Definition at line 403 of file qxrdimageplot.cpp.

References changedColorMap(), colorMapRange(), colorMapStart(), and setTrackerPen().

Referenced by init(), QxrdWindow::initialize(), and setColorMap().

404 {
405  colorMapStart(Qt::black, Qt::white);
406  colorMapRange(0.0, Qt::black, 1.0, Qt::white);
407 
408  setTrackerPen(QPen(Qt::red));
409 
410  changedColorMap();
411 }
void colorMapRange(double value1, QColor color1, double value2, QColor color2)
void changedColorMap()
void setTrackerPen(const QPen &pen)
void colorMapStart(QColor startColor, QColor endColor)

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::setIce ( )
slot

Definition at line 467 of file qxrdimageplot.cpp.

References changedColorMap(), colorMapRange(), colorMapStart(), and setTrackerPen().

Referenced by QxrdWindow::initialize(), and setColorMap().

468 {
469  colorMapStart(Qt::black, Qt::white);
470 
471  colorMapRange(0.0, Qt::black, 0.25, Qt::blue);
472  colorMapRange(0.25, Qt::blue, 0.75, Qt::cyan);
473  colorMapRange(0.75, Qt::cyan, 1.0, Qt::white);
474 
475  setTrackerPen(QPen(Qt::red));
476 
477  changedColorMap();
478 }
void colorMapRange(double value1, QColor color1, double value2, QColor color2)
void changedColorMap()
void setTrackerPen(const QPen &pen)
void colorMapStart(QColor startColor, QColor endColor)

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::setImage ( QxrdRasterData data)
private

Definition at line 651 of file qxrdimageplot.cpp.

References m_DataImage, m_DataRaster, onImageScaleChanged(), and recalculateDisplayedRange().

Referenced by onMaskedImageAvailable(), and onProcessedImageAvailable().

652 {
653  m_DataRaster = data;
654 
655  m_DataImage -> setData(data);
656  m_DataImage -> invalidateCache();
657  m_DataImage -> itemChanged();
658 
660 
662 }
QwtPlotSpectrogram * m_DataImage
void onImageScaleChanged()
void recalculateDisplayedRange()
QxrdRasterData * m_DataRaster

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::setInverseGrayscale ( )
slot

Definition at line 413 of file qxrdimageplot.cpp.

References changedColorMap(), colorMapRange(), colorMapStart(), and setTrackerPen().

Referenced by QxrdWindow::initialize(), and setColorMap().

414 {
415  colorMapStart(Qt::white, Qt::black);
416  colorMapRange(0.0, Qt::white, 1.0, Qt::black);
417 
418  setTrackerPen(QPen(Qt::red));
419 
420  changedColorMap();
421 }
void colorMapRange(double value1, QColor color1, double value2, QColor color2)
void changedColorMap()
void setTrackerPen(const QPen &pen)
void colorMapStart(QColor startColor, QColor endColor)

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::setMask ( QxrdMaskRasterData data)
private

Definition at line 664 of file qxrdimageplot.cpp.

References m_MaskImage, m_MaskRaster, and replot().

Referenced by onMaskedImageAvailable().

665 {
666  m_MaskRaster = mask;
667 
668  m_MaskImage -> setData(mask);
669  m_MaskImage -> invalidateCache();
670  m_MaskImage -> itemChanged();
671 
672  replot();
673 }
QxrdMaskRasterData * m_MaskRaster
QwtPlotSpectrogram * m_MaskImage

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::setOverflows ( QxrdMaskRasterData overflow)
private

Definition at line 675 of file qxrdimageplot.cpp.

References m_OverflowImage, m_OverflowRaster, and replot().

Referenced by onProcessedImageAvailable().

676 {
677  m_OverflowRaster = overflow;
678 
679  m_OverflowImage -> setData(overflow);
680  m_OverflowImage -> invalidateCache();
681  m_OverflowImage -> itemChanged();
682 
683  replot();
684 }
QwtPlotSpectrogram * m_OverflowImage
QxrdMaskRasterData * m_OverflowRaster

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::setProcessor ( QxrdDataProcessorWPtr  proc)

Definition at line 168 of file qxrdimageplot.cpp.

References m_CenterFinderPicker, m_Circles, m_DataProcessor, m_HistogramSelector, m_Measurer, m_Polygons, m_PowderPointPicker, m_Slicer, QxrdDataProcessorBase::maskCircle(), QxrdDataProcessorBase::maskPolygon(), QxrdDataProcessorBase::measurePolygon(), onCenterChanged(), QxrdCenterFinder::onCenterChanged(), onMarkedPointsChanged(), QxrdCenterFinder::onPointSelected(), selectHistogram(), slicePolygon(), and QxrdPowderPointVectorProperty::valueChanged().

169 {
170  m_DataProcessor = proc;
171 
173 
174  if (dp) {
175  QxrdCenterFinderPtr cf(dp->centerFinder());
176 
177  if (cf) {
178  connect(m_CenterFinderPicker, (void (QcepPlotMeasurer::*)( const QPointF &)) &QwtPlotPicker::selected,
180 
181  connect(m_Circles, (void (QcepPlotMeasurer::*)( const QRectF &)) &QwtPlotPicker::selected,
183 
184  connect(m_Polygons, (void (QcepPlotMeasurer::*)( const QVector<QPointF> &)) &QwtPlotPicker::selected,
186 
187  connect(m_Measurer, (void (QcepPlotMeasurer::*)( const QVector<QPointF> &)) &QwtPlotPicker::selected,
189 
190  connect(m_PowderPointPicker, (void (QcepPlotMeasurer::*)( const QPointF &)) &QwtPlotPicker::selected,
192 
193  onCenterChanged(QPointF(cf->get_CenterX(), cf->get_CenterY()));
194 
195  connect(cf->prop_MarkedPoints(), &QxrdPowderPointVectorProperty::valueChanged,
197 
199  }
200  }
201 
202  connect(m_Slicer, (void (QcepPlotMeasurer::*)( const QVector<QPointF> &)) &QwtPlotPicker::selected,
204 
205  connect(m_HistogramSelector, (void (QcepPlotMeasurer::*)( const QRectF &)) &QwtPlotPicker::selected,
207 }
QSharedPointer< QxrdCenterFinder > QxrdCenterFinderPtr
QxrdPlotSlicer * m_Slicer
void selectHistogram(QRectF rect)
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
void valueChanged(QxrdPowderPointVector val, int index)
void onPointSelected(QPointF pt)
void maskPolygon(QVector< QPointF > poly)
void onCenterChanged(QPointF c)
QxrdImagePlotMeasurer * m_Measurer
void measurePolygon(QVector< QPointF > poly)
QxrdMaskPicker * m_Polygons
void slicePolygon(QVector< QPointF > poly)
void onCenterChanged(QPointF pt)
QxrdMaskPicker * m_Circles
void onMarkedPointsChanged()
QxrdHistogramSelector * m_HistogramSelector
QxrdDataProcessorWPtr m_DataProcessor
QxrdCenterFinderPicker * m_CenterFinderPicker
QxrdPowderPointPicker * m_PowderPointPicker

Here is the call graph for this function:

void QxrdImagePlot::setROIModel ( QxrdROICoordinatesListModelPtr  model)

Definition at line 1187 of file qxrdimageplot.cpp.

References m_ROIModel, and updateROIDisplay().

1188 {
1189  m_ROIModel = model;
1190 
1191  updateROIDisplay();
1192 
1193  if (m_ROIModel) {
1194  connect(m_ROIModel.data(), &QAbstractItemModel::modelReset, this, &QxrdImagePlot::updateROIDisplay);
1195  connect(m_ROIModel.data(), &QAbstractItemModel::dataChanged, this, &QxrdImagePlot::updateROIDisplay);
1196  connect(m_ROIModel.data(), &QAbstractItemModel::rowsInserted, this, &QxrdImagePlot::updateROIDisplay);
1197  connect(m_ROIModel.data(), &QAbstractItemModel::rowsMoved, this, &QxrdImagePlot::updateROIDisplay);
1198  connect(m_ROIModel.data(), &QAbstractItemModel::rowsRemoved, this, &QxrdImagePlot::updateROIDisplay);
1199  }
1200 }
QxrdROICoordinatesListModelPtr m_ROIModel

Here is the call graph for this function:

void QxrdImagePlot::setROISelection ( QItemSelectionModel *  select)

Definition at line 1202 of file qxrdimageplot.cpp.

References m_ROISelection, updateROIDisplay(), and updateROISelection().

1203 {
1204  m_ROISelection = select;
1205 
1206  updateROIDisplay();
1207 
1208  if (m_ROISelection) {
1209  connect(m_ROISelection, &QItemSelectionModel::selectionChanged,
1211  }
1212 }
void updateROISelection(const QItemSelection &selected, const QItemSelection &deselected)
QItemSelectionModel * m_ROISelection

Here is the call graph for this function:

void QxrdImagePlot::setSpectrum ( )
slot

Definition at line 439 of file qxrdimageplot.cpp.

References changedColorMap(), colorMapRange(), colorMapStart(), and setTrackerPen().

Referenced by QxrdWindow::initialize(), and setColorMap().

440 {
441  colorMapStart(Qt::magenta, Qt::red);
442 
443  colorMapRange(0.0, Qt::magenta,0.2, Qt::blue);
444  colorMapRange(0.2, Qt::blue, 0.4, Qt::cyan);
445  colorMapRange(0.4, Qt::cyan, 0.6, Qt::green);
446  colorMapRange(0.6, Qt::green, 0.8, Qt::yellow);
447  colorMapRange(0.8, Qt::yellow, 1.0, Qt::red);
448 
449  setTrackerPen(QPen(Qt::black));
450 
451  changedColorMap();
452 }
void colorMapRange(double value1, QColor color1, double value2, QColor color2)
void changedColorMap()
void setTrackerPen(const QPen &pen)
void colorMapStart(QColor startColor, QColor endColor)

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::setTrackerPen ( const QPen &  pen)
private

Definition at line 333 of file qxrdimageplot.cpp.

References m_CenterFinderPicker, m_CenterMarker, m_Circles, m_HistogramSelector, m_MaskColorMap, m_Measurer, m_Polygons, m_PowderPointPicker, m_Slicer, and QcepPlot::m_Zoomer.

Referenced by setEarthTones(), setFire(), setGrayscale(), setIce(), setInverseGrayscale(), and setSpectrum().

334 {
335  m_Zoomer -> setTrackerPen(pen);
336  m_Zoomer -> setRubberBandPen(pen);
338  m_CenterFinderPicker -> setRubberBandPen(pen);
339  m_Circles -> setTrackerPen(pen);
340  m_Circles -> setRubberBandPen(pen);
341  m_Polygons -> setTrackerPen(pen);
342  m_Polygons -> setRubberBandPen(pen);
343  m_Measurer -> setTrackerPen(pen);
344  m_Measurer -> setRubberBandPen(pen);
345  m_Slicer -> setTrackerPen(pen);
346  m_Slicer -> setRubberBandPen(pen);
348  m_HistogramSelector -> setRubberBandPen(pen);
350  m_PowderPointPicker -> setRubberBandPen(pen);
351 
352  if (m_CenterMarker) {
353  m_CenterMarker -> setLinePen(pen);
354  }
355 
356  m_MaskColorMap->setColorInterval(pen.color(), QColor(0,0,0,0));
357 
358 // foreach (QwtPlotMarker *m, m_PowderPointMarkers) {
359 // const QwtSymbol *oldsym = m->symbol();
360 
361 // QwtSymbol *sym = new QwtSymbol(oldsym->style(),oldsym->brush(),oldsym->pen(),oldsym->size());
362 
363 // sym->setPen(pen);
364 // sym->setBrush(QBrush(pen.color()));
365 
366 // m->setSymbol(sym);
367 // }
368 }
QwtPlotMarker * m_CenterMarker
QxrdPlotSlicer * m_Slicer
QwtPlotZoomer * m_Zoomer
Definition: qcepplot.h:59
QxrdMaskColorMap * m_MaskColorMap
QxrdImagePlotMeasurer * m_Measurer
QxrdMaskPicker * m_Polygons
QxrdMaskPicker * m_Circles
QxrdHistogramSelector * m_HistogramSelector
void setTrackerPen(const QPen &pen)
QxrdCenterFinderPicker * m_CenterFinderPicker
QxrdPowderPointPicker * m_PowderPointPicker

Here is the caller graph for this function:

void QxrdImagePlot::slicePolygon ( QVector< QPointF >  poly)
signal

Referenced by QxrdWindow::initialize(), and setProcessor().

Here is the caller graph for this function:

void QxrdImagePlot::toggleLogDisplay ( )
slot

Definition at line 616 of file qxrdimageplot.cpp.

References changeLogDisplay(), and m_ImagePlotSettings.

Referenced by QxrdDetectorImagePlot::contextMenuEvent().

617 {
619 
620  if (set) {
621  changeLogDisplay(!set->get_DisplayLog());
622  }
623 }
QxrdImagePlotSettingsWPtr m_ImagePlotSettings
QSharedPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsPtr
void changeLogDisplay(bool isLog)

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::toggleShowImage ( )
slot

Definition at line 518 of file qxrdimageplot.cpp.

References changeImageShown(), and m_ImagePlotSettings.

Referenced by QxrdWindow::initialize().

519 {
521 
522  if (set) {
523  changeImageShown(!set->get_ImageShown());
524  }
525 }
void changeImageShown(bool shown)
QxrdImagePlotSettingsWPtr m_ImagePlotSettings
QSharedPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsPtr

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::toggleShowMask ( )
slot

Definition at line 544 of file qxrdimageplot.cpp.

References changeMaskShown(), and m_ImagePlotSettings.

Referenced by QxrdDetectorImagePlot::contextMenuEvent(), and QxrdWindow::initialize().

545 {
547 
548  if (set) {
549  changeMaskShown(!set->get_MaskShown());
550  }
551 }
void changeMaskShown(bool shown)
QxrdImagePlotSettingsWPtr m_ImagePlotSettings
QSharedPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsPtr

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::toggleShowOverflow ( )
slot

Definition at line 570 of file qxrdimageplot.cpp.

References changeOverflowShown(), and m_ImagePlotSettings.

Referenced by QxrdWindow::initialize().

571 {
573 
574  if (set) {
575  changeOverflowShown(!set->get_OverflowShown());
576  }
577 }
void changeOverflowShown(bool shown)
QxrdImagePlotSettingsWPtr m_ImagePlotSettings
QSharedPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsPtr

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::toggleShowROI ( )
slot

Definition at line 596 of file qxrdimageplot.cpp.

References changeROIShown(), and m_ImagePlotSettings.

Referenced by QxrdDetectorImagePlot::contextMenuEvent().

597 {
599 
600  if (set) {
601  changeROIShown(!set->get_DisplayROI());
602  }
603 }
QxrdImagePlotSettingsWPtr m_ImagePlotSettings
void changeROIShown(bool shown)
QSharedPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsPtr

Here is the call graph for this function:

Here is the caller graph for this function:

QwtText QxrdImagePlot::trackerTextF ( const QPointF &  pos)
virtual

Reimplemented from QcepPlot.

Definition at line 892 of file qxrdimageplot.cpp.

References QxrdMaskRasterData::data(), m_ImagePlotSettings, m_MaskRaster, m_PowderPointPicker, QxrdRasterData::optimizePeakPosition(), processor(), raster(), QxrdMaskRasterData::value(), and QxrdRasterData::value().

893 {
894  const QxrdRasterData *ras = this->raster();
895 
897  QxrdCenterFinderPtr centerFinder;
898 
899  if (processor) {
900  centerFinder = processor->centerFinder();
901  }
902 
903  QString res = tr("%1, %2").arg(pos.x()).arg(pos.y());
904 
906 
907  if (set) {
908  set->set_XMouse(pos.x());
909  set->set_YMouse(pos.y());
910  }
911 
912  if (ras) {
913  double val = ras->value(pos.x(),pos.y());
914  res += tr(", %1").arg(val);
915 
916  if (set) {
917  set->set_ValMouse(val);
918  }
919  }
920 
921  if (m_MaskRaster && m_MaskRaster->data()) {
922  double mask = m_MaskRaster->value(pos.x(),pos.y());
923  res += tr(", %1").arg(mask);
924 
925  if (set) {
926  set->set_MaskMouse(mask);
927  }
928  }
929 
930  if (centerFinder) {
931  double tth = centerFinder->getTTH(pos);
932  res += tr("\nTTH %1").arg(tth);
933 
934  if (set) {
935  set->set_TTHMouse(tth);
936  }
937 
938  double q = centerFinder->getQ(pos);
939  res += tr(", Q %1").arg(q);
940 
941  if (set) {
942  set->set_QMouse(q);
943  }
944 
945  double r = centerFinder->getR(pos);
946  res += tr(", R %1").arg(r);
947 
948  if (set) {
949  set->set_RMouse(r);
950  }
951 
952  double chi = centerFinder->getChi(pos);
953  res += tr(", Chi %1").arg(chi);
954 
955  if (m_PowderPointPicker -> isEnabled()) {
956  QPointF rpt = ras->optimizePeakPosition(pos);
957  res += tr("\nPtx %1, Pty %2").arg(rpt.x()).arg(rpt.y());
958  }
959  }
960 
961  return res;
962 }
QSharedPointer< QxrdCenterFinder > QxrdCenterFinderPtr
QSharedPointer< QxrdDataProcessor > QxrdDataProcessorPtr
QxrdImagePlotSettingsWPtr m_ImagePlotSettings
QxrdDataProcessorWPtr processor() const
const QxrdRasterData * raster() const
short int * data() const
QxrdMaskRasterData * m_MaskRaster
double value(double x, double y) const
QSharedPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsPtr
QPointF optimizePeakPosition(QPointF pt) const
double value(double x, double y) const
QxrdPowderPointPicker * m_PowderPointPicker

Here is the call graph for this function:

void QxrdImagePlot::updateROIDisplay ( )
private

Definition at line 1224 of file qxrdimageplot.cpp.

References clearROIDisplay(), m_ImagePlotSettings, m_ROICurves, m_ROIModel, m_ROISelection, replot(), and QcepPlot::setPlotCurveStyle().

Referenced by changeROIShown(), enableROIDisplay(), setROIModel(), and setROISelection().

1225 {
1226  clearROIDisplay();
1227 
1229 
1230  if (set && set->get_DisplayROI() && m_ROIModel && m_ROISelection) {
1231  int nROI = m_ROIModel->rowCount(QModelIndex());
1232 
1233  for (int i=0; i<nROI; i++) {
1234  QxrdROICoordinatesPtr roi = m_ROIModel->roi(i);
1235 
1236  if (roi) {
1237  QVector<QPointF> pts = roi->markerCoords();
1238 
1239  QwtPlotPiecewiseCurve *pc = new QwtPlotPiecewiseCurve(this, tr("ROI %1").arg(i));
1240 
1241  setPlotCurveStyle(i, pc);
1242 
1243  bool on = m_ROISelection->rowIntersectsSelection(i, QModelIndex());
1244 
1245  if (pc) {
1246  QPen pen = pc->pen();
1247  const QwtSymbol *oldsym = pc->symbol();
1248  QwtSymbol *sym = NULL;
1249 
1250  if (oldsym) {
1251  sym = new QwtSymbol(oldsym->style(), oldsym->brush(), oldsym->pen(), oldsym->size());
1252  }
1253 
1254  if (on) {
1255  pen.setWidth(3);
1256  if (sym) {
1257  sym->setSize(9,9);
1258  }
1259  } else {
1260  pen.setWidth(1);
1261  if (sym) {
1262  sym->setSize(5,5);
1263  }
1264  }
1265  pc->setPen(pen);
1266  if (sym) {
1267  pc->setSymbol(sym);
1268  }
1269  }
1270 
1271  pc->setSamples(pts);
1272 
1273  pc->attach(this);
1274 
1275  m_ROICurves.append(pc);
1276  }
1277  }
1278  }
1279 
1280  replot();
1281 }
QxrdROICoordinatesListModelPtr m_ROIModel
QSharedPointer< QxrdROICoordinates > QxrdROICoordinatesPtr
void setPlotCurveStyle(int index, QwtPlotCurve *curve)
Definition: qcepplot.cpp:103
QxrdImagePlotSettingsWPtr m_ImagePlotSettings
A class which draws piecewise curves.
QSharedPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsPtr
QItemSelectionModel * m_ROISelection
QVector< QwtPlotCurve * > m_ROICurves

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::updateROISelection ( const QItemSelection &  selected,
const QItemSelection &  deselected 
)
private

Definition at line 1352 of file qxrdimageplot.cpp.

References m_ROIModel, m_ROISelection, replot(), selectROIItem(), and selectROILabel().

Referenced by setROISelection().

1355 {
1356  if (m_ROIModel && m_ROISelection) {
1357  int n = m_ROIModel->roiCount();
1358 
1359  for (int i=0; i<n; i++) {
1360  bool sel = m_ROISelection->rowIntersectsSelection(i, QModelIndex());
1361 
1362  selectROIItem(i, sel);
1363  selectROILabel(i, sel);
1364  }
1365 
1366  replot();
1367  }
1368 }
QxrdROICoordinatesListModelPtr m_ROIModel
QItemSelectionModel * m_ROISelection
void selectROIItem(int n, bool selected)
void selectROILabel(int i, bool on)

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdImagePlot::zapPixel ( int  x,
int  y 
)
slot

Definition at line 1096 of file qxrdimageplot.cpp.

References m_Data, and replot().

Referenced by QxrdDetectorImagePlot::contextMenuEvent(), and contextMenuEvent().

1097 {
1098  double sum = 0;
1099  int npx = 0;
1100 
1101  for (int ix = x-1; ix <= x+1; ix++) {
1102  for (int iy = y-1; iy <= y+1; iy++) {
1103  sum += m_Data->getImageData(ix, iy);
1104  npx += 1;
1105  }
1106  }
1107 
1108  sum -= m_Data->getImageData(x,y);
1109  npx -= 1;
1110 
1111  m_Data->setImageData(x,y, sum/npx);
1112 
1113  replot();
1114 }
QcepImageDataBasePtr m_Data

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

QxrdCenterFinderPicker* QxrdImagePlot::m_CenterFinderPicker
private

Definition at line 189 of file qxrdimageplot.h.

Referenced by disablePickers(), enableCentering(), init(), setProcessor(), and setTrackerPen().

QwtPlotMarker* QxrdImagePlot::m_CenterMarker
private
QxrdMaskPicker* QxrdImagePlot::m_Circles
private

Definition at line 192 of file qxrdimageplot.h.

Referenced by disablePickers(), enableMaskCircles(), init(), setProcessor(), and setTrackerPen().

QwtLinearColorMap* QxrdImagePlot::m_ColorMap
private

Definition at line 179 of file qxrdimageplot.h.

Referenced by changedColorMap(), colorMapRange(), and colorMapStart().

bool QxrdImagePlot::m_ContextMenuEnabled
private

Definition at line 201 of file qxrdimageplot.h.

Referenced by contextMenuEvent(), disableContextMenu(), and enableContextMenu().

QcepImageDataBasePtr QxrdImagePlot::m_Data
private

Definition at line 168 of file qxrdimageplot.h.

Referenced by onMaskedImageAvailable(), onProcessedImageAvailable(), and zapPixel().

QwtPlotSpectrogram* QxrdImagePlot::m_DataImage
private

Definition at line 176 of file qxrdimageplot.h.

Referenced by changedColorMap(), changeImageShown(), init(), replotImage(), and setImage().

QxrdDataProcessorWPtr QxrdImagePlot::m_DataProcessor
private

Definition at line 187 of file qxrdimageplot.h.

Referenced by contextMenuEvent(), displayPowderMarkers(), processor(), and setProcessor().

QxrdRasterData* QxrdImagePlot::m_DataRaster
private
bool QxrdImagePlot::m_FirstTime
private

Definition at line 199 of file qxrdimageplot.h.

Referenced by onMaskedImageAvailable(), onProcessedImageAvailable(), and replotImage().

QxrdHistogramSelector* QxrdImagePlot::m_HistogramSelector
private

Definition at line 165 of file qxrdimageplot.h.

Referenced by disablePickers(), enableHistograms(), init(), setProcessor(), and setTrackerPen().

QxrdImagePlotSettingsWPtr QxrdImagePlot::m_ImagePlotSettings
protected
QcepMaskDataPtr QxrdImagePlot::m_Mask
private

Definition at line 169 of file qxrdimageplot.h.

Referenced by onMaskedImageAvailable().

int QxrdImagePlot::m_MaskAlpha
private

Definition at line 182 of file qxrdimageplot.h.

Referenced by changeMaskShown(), and init().

QxrdMaskColorMap* QxrdImagePlot::m_MaskColorMap
private

Definition at line 181 of file qxrdimageplot.h.

Referenced by changedColorMap(), and setTrackerPen().

QwtPlotSpectrogram* QxrdImagePlot::m_MaskImage
private

Definition at line 177 of file qxrdimageplot.h.

Referenced by changedColorMap(), changeMaskShown(), init(), and setMask().

QxrdMaskRasterData* QxrdImagePlot::m_MaskRaster
private

Definition at line 173 of file qxrdimageplot.h.

Referenced by maskRaster(), setMask(), and trackerTextF().

QxrdImagePlotMeasurer* QxrdImagePlot::m_Measurer
private

Definition at line 164 of file qxrdimageplot.h.

Referenced by disablePickers(), enableMeasuring(), init(), setProcessor(), and setTrackerPen().

QcepObjectNamer QxrdImagePlot::m_ObjectNamer
private

Definition at line 156 of file qxrdimageplot.h.

QcepMaskDataPtr QxrdImagePlot::m_Overflow
private

Definition at line 170 of file qxrdimageplot.h.

Referenced by onProcessedImageAvailable().

int QxrdImagePlot::m_OverflowAlpha
private

Definition at line 185 of file qxrdimageplot.h.

Referenced by changeOverflowShown(), and init().

QxrdMaskColorMap* QxrdImagePlot::m_OverflowColorMap
private

Definition at line 184 of file qxrdimageplot.h.

Referenced by changedColorMap().

QwtPlotSpectrogram* QxrdImagePlot::m_OverflowImage
private

Definition at line 178 of file qxrdimageplot.h.

Referenced by changedColorMap(), changeOverflowShown(), init(), and setOverflows().

QxrdMaskRasterData* QxrdImagePlot::m_OverflowRaster
private

Definition at line 174 of file qxrdimageplot.h.

Referenced by setOverflows().

QxrdMaskPicker* QxrdImagePlot::m_Polygons
private
QVector<QwtPlotCurve*> QxrdImagePlot::m_PowderPointCurves
private

Definition at line 196 of file qxrdimageplot.h.

Referenced by clearPowderMarkers(), and displayPowderMarkers().

QxrdPowderPointPicker* QxrdImagePlot::m_PowderPointPicker
private
QwtPlotRescaler* QxrdImagePlot::m_Rescaler
private

Definition at line 162 of file qxrdimageplot.h.

Referenced by init(), onImageScaleChanged(), and onMaintainAspectChanged().

QVector<QwtPlotCurve*> QxrdImagePlot::m_ROICurves
private
QxrdROICoordinatesListModelPtr QxrdImagePlot::m_ROIModel
private
QItemSelectionModel* QxrdImagePlot::m_ROISelection
private
QxrdPlotSlicer* QxrdImagePlot::m_Slicer
private

Definition at line 163 of file qxrdimageplot.h.

Referenced by disablePickers(), enableSlicing(), init(), setProcessor(), and setTrackerPen().


The documentation for this class was generated from the following files: