QXRD  0.11.16
qxrdroicalculator.cpp
Go to the documentation of this file.
1 #include "qxrdroicalculator.h"
2 #include "qxrddebug.h"
3 #include <stdio.h>
4 #include "qcepmutexlocker.h"
6 #include <QtConcurrentMap>
7 #include "qxrdroicoordinates.h"
8 #include "qcepimagedata.h"
9 
11  : QcepObject("ROIcalculator", NULL),
12  m_Saver(saver),
13  m_Experiment(exp),
14  m_Processor(proc),
16 {
18  printf("QxrdROICalculator::QxrdROICalculator(%p)\n", this);
19  }
20 }
21 
23 {
24 #ifndef QT_NO_DEBUG
25  printf("Deleting ROI Calculator\n");
26 #endif
27 
29  printf("QxrdROICalculator::~QxrdROICalculator(%p)\n", this);
30  }
31 }
32 
33 QScriptValue QxrdROICalculator::toScriptValue(QScriptEngine *engine, const QxrdROICalculatorPtr &proc)
34 {
35  return engine->newQObject(proc.data());
36 }
37 
38 void QxrdROICalculator::fromScriptValue(const QScriptValue &obj, QxrdROICalculatorPtr &proc)
39 {
40  QObject *qobj = obj.toQObject();
41 
42  if (qobj) {
43  QxrdROICalculator *f = qobject_cast<QxrdROICalculator*>(qobj);
44 
45  if (f) {
46  proc = QxrdROICalculatorPtr(f);
47  }
48  }
49 }
50 
51 void QxrdROICalculator::readSettings(QSettings *settings, QString section)
52 {
53  QcepMutexLocker lock(__FILE__, __LINE__, &m_Mutex);
54 
55  QcepObject::readSettings(settings, section);
56 
58  m_ROICoordinatesModel->readSettings(settings, section+"/coords");
59  }
60 }
61 
62 void QxrdROICalculator::writeSettings(QSettings *settings, QString section)
63 {
64  QcepMutexLocker lock(__FILE__, __LINE__, &m_Mutex);
65 
66  QcepObject::writeSettings(settings, section);
67 
69  m_ROICoordinatesModel->writeSettings(settings, section+"/coords");
70  }
71 }
72 
74 {
76  return m_ROICoordinatesModel->roiCount();
77  } else {
78  return 0;
79  }
80 }
81 
83 {
84  return m_ROICoordinatesModel;
85 }
86 
88 {
90  return m_ROICoordinatesModel->roi(i);
91  } else {
92  return QxrdROICoordinatesPtr();
93  }
94 }
95 
97 {
98  QVector<double> res;
99 
100  if (img && m_ROICoordinatesModel) {
101  m_ROICoordinatesModel->recalculate(img, mask);
102 
103  int nVals = m_ROICoordinatesModel->roiCount();
104 
105  for (int i=0; i<nVals; i++) {
107 
108  if (roi) {
109 // res.append();
110 
111  res += roi->values();
112  }
113  }
114  }
115 
116  return res;
117 }
118 
119 //double QxrdROICalculator::value(QcepImageDataBasePtr img, int i)
120 //{
121 // double res = 0;
122 
123 // if (img && m_ROICoordinatesModel) {
124 // QxrdROICoordinatesPtr roi = m_ROICoordinatesModel->roi(i);
125 
126 // if (roi) {
127 // switch (roi->get_RoiType()) {
128 // case QxrdROICoordinates::SumInRectangle:
129 // res = img->sumInRectangle(roi->get_Coords());
130 // break;
131 
132 // case QxrdROICoordinates::AverageInRectangle:
133 // res = img->averageInRectangle(roi->get_Coords());
134 // break;
135 
136 // case QxrdROICoordinates::MinInRectangle:
137 // res = img->minInRectangle(roi->get_Coords());
138 // break;
139 
140 // case QxrdROICoordinates::MaxInRectangle:
141 // res = img->maxInRectangle(roi->get_Coords());
142 // break;
143 
144 // case QxrdROICoordinates::SumInEllipse:
145 // res = img->sumInEllipse(roi->get_Coords());
146 // break;
147 
148 // case QxrdROICoordinates::AverageInEllipse:
149 // res = img->averageInEllipse(roi->get_Coords());
150 // break;
151 
152 // case QxrdROICoordinates::MinInEllipse:
153 // res = img->minInEllipse(roi->get_Coords());
154 // break;
155 
156 // case QxrdROICoordinates::MaxInEllipse:
157 // res = img->maxInEllipse(roi->get_Coords());
158 // break;
159 
160 // case QxrdROICoordinates::SumInPeak:
161 // res = img->sumInPeak(roi->get_Coords());
162 // break;
163 // }
164 
165 // QModelIndex index = m_ROICoordinatesModel->index(i, QxrdROICoordinatesListModel::ValueCol);
166 
167 // m_ROICoordinatesModel->setData(index, res, Qt::DisplayRole);
168 // }
169 // }
170 
171 // return res;
172 //}
qint64 qcepDebug(int cond)
Definition: qcepdebug.cpp:26
static QScriptValue toScriptValue(QScriptEngine *engine, const QxrdROICalculatorPtr &proc)
virtual void readSettings(QSettings *set, QString section)
Definition: qcepobject.cpp:119
QWeakPointer< QxrdDetectorProcessor > QxrdDetectorProcessorWPtr
QSharedPointer< QxrdROICoordinates > QxrdROICoordinatesPtr
QSharedPointer< QxrdROICalculator > QxrdROICalculatorPtr
QWeakPointer< QxrdExperiment > QxrdExperimentWPtr
static void fromScriptValue(const QScriptValue &obj, QxrdROICalculatorPtr &proc)
void readSettings(QSettings *settings, QString section)
QxrdROICoordinatesPtr roi(int i)
QxrdROICalculator(QcepSettingsSaverWPtr saver, QxrdExperimentWPtr exp, QxrdDetectorProcessorWPtr proc)
QVector< double > values(QcepImageDataBasePtr img, QcepMaskDataPtr mask)
void writeSettings(QSettings *settings, QString section)
QxrdROICoordinatesListModelPtr roiModel()
QxrdROICoordinatesListModelPtr m_ROICoordinatesModel
QxrdExperimentWPtr m_Experiment
virtual void writeSettings(QSettings *set, QString section)
Definition: qcepobject.cpp:114
QcepSettingsSaverWPtr m_Saver
QSharedPointer< QcepImageDataBase > QcepImageDataBasePtr
QSharedPointer< QcepMaskData > QcepMaskDataPtr
QSharedPointer< QxrdROICoordinatesListModel > QxrdROICoordinatesListModelPtr
QWeakPointer< QcepSettingsSaver > QcepSettingsSaverWPtr
QxrdDetectorProcessorWPtr m_Processor