3 #include "AbstractMeasureItem.h"
9 #include "CnetDisplayProperties.h"
16 #include "TableColumn.h"
17 #include "TableColumnList.h"
22 QString AbstractMeasureItem::getColumnName(Column col) {
39 return "Measure Type";
40 case Obsolete_Eccentricity:
41 return "Obsolete_Eccentricity";
43 return "Goodness of Fit";
45 return "Minimum Pixel Z-Score";
47 return "Maximum Pixel Z-Score";
49 return "Sample Shift";
53 return "Sample Sigma";
57 return "A Priori Sample";
59 return "A Priori Line";
63 return "Rejected by Jigsaw";
65 return "Residual Sample";
67 return "Residual Line";
68 case ResidualMagnitude:
69 return "Residual Magnitude";
77 AbstractMeasureItem::Column AbstractMeasureItem::getColumn(
78 QString columnTitle) {
79 for (
int i = 0; i < COLS; i++) {
80 if (columnTitle == getColumnName((Column) i))
84 QString msg =
"Column title [" + columnTitle +
"] does not match any of "
85 "the defined column types";
90 TableColumnList *AbstractMeasureItem::createColumns() {
91 TableColumnList *columnList =
new TableColumnList;
93 columnList->append(
new TableColumn(getColumnName(PointId),
true,
false));
94 columnList->append(
new TableColumn(getColumnName(ImageId),
true,
96 columnList->append(
new TableColumn(getColumnName(Sample),
true,
false));
97 columnList->append(
new TableColumn(getColumnName(Line),
true,
false));
98 columnList->append(
new TableColumn(getColumnName(EditLock),
false,
100 columnList->append(
new TableColumn(getColumnName(Ignored),
false,
true));
101 columnList->append(
new TableColumn(getColumnName(Reference),
true,
true));
102 columnList->append(
new TableColumn(getColumnName(Type),
false,
false));
103 columnList->append(
new TableColumn(getColumnName(Obsolete_Eccentricity),
true,
105 columnList->append(
new TableColumn(getColumnName(GoodnessOfFit),
true,
107 columnList->append(
new TableColumn(getColumnName(MinPixelZScore),
true,
109 columnList->append(
new TableColumn(getColumnName(MaxPixelZScore),
true,
111 columnList->append(
new TableColumn(getColumnName(SampleShift),
true,
113 columnList->append(
new TableColumn(getColumnName(LineShift),
true,
115 columnList->append(
new TableColumn(getColumnName(SampleSigma),
false,
117 columnList->append(
new TableColumn(getColumnName(LineSigma),
false,
119 columnList->append(
new TableColumn(getColumnName(APrioriSample),
true,
121 columnList->append(
new TableColumn(getColumnName(APrioriLine),
true,
123 columnList->append(
new TableColumn(getColumnName(Diameter),
false,
125 columnList->append(
new TableColumn(getColumnName(JigsawRejected),
true,
127 columnList->append(
new TableColumn(getColumnName(ResidualSample),
true,
129 columnList->append(
new TableColumn(getColumnName(ResidualLine),
true,
131 columnList->append(
new TableColumn(getColumnName(ResidualMagnitude),
137 AbstractMeasureItem::AbstractMeasureItem(ControlMeasure *cm,
138 int avgCharWidth, AbstractTreeItem *parent)
139 : AbstractTreeItem(parent) {
142 calcDataWidth(avgCharWidth);
144 connect(m_measure, SIGNAL(destroyed(
QObject *)),
this, SLOT(sourceDeleted()));
148 AbstractMeasureItem::~AbstractMeasureItem() {
153 QVariant AbstractMeasureItem::getData()
const {
154 return getData(getColumnName(ImageId));
158 QVariant AbstractMeasureItem::getData(QString columnTitle)
const {
160 Column column = getColumn(columnTitle);
162 switch ((Column) column) {
164 return QVariant((QString) m_measure->Parent()->
GetId());
166 return QVariant(CnetDisplayProperties::getInstance()->getImageName(
169 return QVariant(m_measure->GetSample());
171 return QVariant(m_measure->GetLine());
174 return QVariant(
"Yes");
176 return QVariant(
"No");
178 if (m_measure->IsIgnored())
179 return QVariant(
"Yes");
181 return QVariant(
"No");
184 return QVariant(
"Yes");
186 return QVariant(
"No");
190 case Obsolete_Eccentricity:
192 m_measure->GetLogData(
196 m_measure->GetLogData(
201 GetNumericalValue());
205 GetNumericalValue());
207 return QVariant(m_measure->GetSampleShift());
209 return QVariant(m_measure->GetLineShift());
211 return QVariant(m_measure->GetSampleSigma());
213 return QVariant(m_measure->GetLineSigma());
215 return QVariant(m_measure->GetAprioriSample());
217 return QVariant(m_measure->GetAprioriLine());
221 if (m_measure->IsRejected())
222 return QVariant(
"Yes");
224 return QVariant(
"No");
226 return QVariant(m_measure->GetSampleResidual());
228 return QVariant(m_measure->GetLineResidual());
229 case ResidualMagnitude:
239 void AbstractMeasureItem::setData(QString
const &columnTitle,
240 QString
const &newData) {
242 Column column = getColumn(columnTitle);
244 switch ((Column) column) {
250 CnetDisplayProperties::getInstance()->getSerialNumber(newData));
254 m_measure->GetLine());
261 if (newData ==
"Yes")
262 m_measure->SetEditLock(
true);
264 m_measure->SetEditLock(
false);
267 if (newData ==
"Yes")
268 m_measure->SetIgnored(
true);
269 else if (newData ==
"No")
270 m_measure->SetIgnored(
false);
278 CnetDisplayProperties::getInstance()->getSerialNumber(
281 case Obsolete_Eccentricity:
302 m_measure->SetSampleSigma(catchNull(newData));
305 m_measure->SetLineSigma(catchNull(newData));
308 m_measure->SetAprioriSample(catchNull(newData));
311 m_measure->SetAprioriLine(catchNull(newData));
321 catchNull(newData), m_measure->GetLineResidual());
325 m_measure->GetSampleResidual(), catchNull(newData));
327 case ResidualMagnitude:
340 bool AbstractMeasureItem::isDataEditable(QString columnTitle)
const {
341 bool parentLocked = !m_measure->Parent() ||
342 m_measure->Parent()->IsEditLocked();
343 bool locked = m_measure->
IsEditLocked() || parentLocked;
345 if (getColumn(columnTitle) == EditLock && !parentLocked) {
353 void AbstractMeasureItem::deleteSource() {
355 if (m_measure->Parent()->IsEditLocked()) {
356 QString msg =
"Measures in point [" +
357 getFormattedData(getColumnName(PointId)) +
358 "] cannot be deleted because point is edit locked";
363 QString msg =
"Measure [" + getFormattedData() +
"] in point [" +
364 getFormattedData(getColumnName(PointId)) +
365 "] cannot be deleted because m_measure is edit locked";
375 ControlMeasure *tempMeasure = m_measure;
377 tempMeasure->Parent()->
Delete(tempMeasure);
382 AbstractTreeItem::InternalPointerType AbstractMeasureItem::getPointerType()
384 return AbstractTreeItem::Measure;
388 void *AbstractMeasureItem::getPointer()
const {
393 bool AbstractMeasureItem::hasMeasure(ControlMeasure *m)
const {
394 return m_measure == m;
398 void AbstractMeasureItem::sourceDeleted() {
403 void AbstractMeasureItem::setLogData(ControlMeasure *m_measure,
404 int m_measureLogDataEnum,
const QString &value) {
407 QString newDataStr = value.toLower();
411 if (newDataStr ==
"null") {
412 m_measure->DeleteLogData(type);
415 m_measure->SetLogData(ControlMeasureLogData(type,
Status SetType(MeasureType type)
Set how the coordinate was obtained.
double GetResidualMagnitude() const
Return Residual magnitude.
Deprecated keyword kept for backwards compatability with older Control Networks.
NumericLogDataType
Please do not change existing values in this list except the size - it will break backwards compadibi...
double GetNumericalValue() const
Get the value associated with this log data.
This error is for when a programmer made an API call that was illegal.
const ControlMeasure * GetRefMeasure() const
Get the reference control measure.
Control measures store z-scores in pairs.
Status SetDiameter(double diameter)
Set the crater diameter at the coordinate.
Status SetResidual(double sampResidual, double lineResidual)
Set the BundleAdjust Residual of the coordinate.
QString GetId() const
Return the Id of the control point.
#define _FILEINFO_
Macro for the filename and line number.
A type of error that could only have occurred due to a mistake on the user's part (e...
bool IsEditLocked() const
Return value for p_editLock or implicit lock on reference measure.
GoodnessOfFit is pointreg information for reference measures.
QString GetCubeSerialNumber() const
Return the serial number of the cube containing the coordinate.
Status SetCubeSerialNumber(QString newSerialNumber)
Set cube serial number.
Status SetCoordinate(double sample, double line)
Set the coordinate of the measurement.
int Delete(ControlMeasure *measure)
Remove a measurement from the control point, deleting reference measure is allowed.
double GetDiameter() const
Return the diameter of the crater in pixels (0 implies no crater)
static MeasureType StringToMeasureType(QString str)
static QString MeasureTypeToString(MeasureType type)
Return the String Control Measure type.