Loading isis/src/control/objs/ControlNetVersioner/ControlPointV0002.cpp +80 −3 Original line number Diff line number Diff line Loading @@ -15,10 +15,12 @@ namespace Isis { * Create a ControlPointV0002 object from a protobuf version 1 control point message. * * @param pointData The protobuf message from a control net file. * @param logData The accompanying protobuf control measure log data for the point. */ ControlPointV0002::ControlPointV0002( QSharedPointer<ControlNetFileProtoV0001_PBControlPoint> pointData) : m_pointData(pointData) { QSharedPointer<ControlNetFileProtoV0001_PBControlPoint> pointData, QSharedPointer<ControlNetLogDataProtoV0001_Point> logData) : m_pointData(pointData), m_logData(logData) { } Loading @@ -29,7 +31,8 @@ namespace Isis { * @param pointObject The control point and its measures in a Pvl object */ ControlPointV0002::ControlPointV0002(Pvl &pointObject) : m_pointData(new ControlNetFileProtoV0001_PBControlPoint) { : m_pointData(new ControlNetFileProtoV0001_PBControlPoint), m_logData(new ControlNetLogDataProtoV0001_Point) { // Copy over strings, doubles, and bools copy(pointObject, "PointId", Loading Loading @@ -238,7 +241,70 @@ namespace Isis { } group.deleteKeyword("MeasureType"); // Clean up the remaining keywords for (int cmKeyIndex = 0; cmKeyIndex < group.keywords(); cmKeyIndex ++) { if (group[cmKeyIndex][0] == "" || group[cmKeyIndex].name() == "ZScore" || group[cmKeyIndex].name() == "ErrorMagnitude") { group.deleteKeyword(cmKeyIndex); } } // Create the log data for the measure ControlNetLogDataProtoV0001_Point_Measure measureLogData; for (int keyIndex = 0; keyIndex < group.keywords(); keyIndex++) { PvlKeyword dataKeyword = group[keyIndex]; QString name = dataKeyword.name(); int dataType = 0; double value = 0.0; if (name == "Obsolete_Eccentricity") { dataType = 1; } else if (name == "GoodnessOfFit") { dataType = 2; } else if (name == "MinimumPixelZScore") { dataType = 3; } else if (name == "MaximumPixelZScore") { dataType = 4; } else if (name == "PixelShift") { dataType = 5; } else if (name == "WholePixelCorrelation") { dataType = 6; } else if (name == "SubPixelCorrelation") { dataType = 7; } else if (name == "Obsolete_AverageResidual") { dataType = 8; } else { QString msg = "Invalid control measure log data name [" + name + "]"; throw IException(IException::Programmer, msg, _FILEINFO_); } try { value = toDouble(dataKeyword[0]); } catch (IException e) { QString msg = "Invalid control measure log data value [" + dataKeyword[0] + "]"; throw IException(e, IException::Io, msg, _FILEINFO_); } ControlNetLogDataProtoV0001_Point_Measure_DataEntry logEntry; logEntry.set_datatype(dataType); logEntry.set_datavalue(value); *measureLogData.add_loggedmeasuredata() = logEntry; } // Store the measure and its log data *m_pointData->add_measures() = measure; *m_logData->add_measures() = measureLogData; } if (!m_pointData->IsInitialized()) { Loading Loading @@ -280,6 +346,17 @@ namespace Isis { } /** * Access the protobuf log data for the control measures in the point. * * @return @b QSharedPointer<ControlNetLogDataProtoV0001_Point> A pointer to the internal * measure log data. */ QSharedPointer<ControlNetLogDataProtoV0001_Point> ControlPointV0002::logData() { return m_logData; } /** * This convenience method takes a boolean value from a PvlKeyword and copies it into a version 1 * protobuf field. Loading isis/src/control/objs/ControlNetVersioner/ControlPointV0002.h +6 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ #include <QSharedPointer> #include "ControlNetFileProtoV0001.pb.h" #include "ControlNetLogDataProtoV0001.pb.h" namespace Isis { class ControlPointV0001; Loading @@ -35,10 +36,12 @@ namespace Isis { class ControlPointV0002 { public: ControlPointV0002(Pvl &pointObject); ControlPointV0002(QSharedPointer<ControlNetFileProtoV0001_PBControlPoint> pointData); ControlPointV0002(QSharedPointer<ControlNetFileProtoV0001_PBControlPoint> pointData, QSharedPointer<ControlNetLogDataProtoV0001_Point> logData); ControlPointV0002(ControlPointV0001 &oldPoint); const ControlNetFileProtoV0001_PBControlPoint &pointData(); QSharedPointer<ControlNetLogDataProtoV0001_Point> logData(); private: // These are intentionally not implemented Loading Loading @@ -74,6 +77,8 @@ namespace Isis { QSharedPointer<ControlNetFileProtoV0001_PBControlPoint> m_pointData; /**< protobuf container that holds information used to create a control point.*/ QSharedPointer<ControlNetLogDataProtoV0001_Point> m_logData; /**< Protobuf container that holds log data for the control measures in the point.*/ }; } Loading Loading
isis/src/control/objs/ControlNetVersioner/ControlPointV0002.cpp +80 −3 Original line number Diff line number Diff line Loading @@ -15,10 +15,12 @@ namespace Isis { * Create a ControlPointV0002 object from a protobuf version 1 control point message. * * @param pointData The protobuf message from a control net file. * @param logData The accompanying protobuf control measure log data for the point. */ ControlPointV0002::ControlPointV0002( QSharedPointer<ControlNetFileProtoV0001_PBControlPoint> pointData) : m_pointData(pointData) { QSharedPointer<ControlNetFileProtoV0001_PBControlPoint> pointData, QSharedPointer<ControlNetLogDataProtoV0001_Point> logData) : m_pointData(pointData), m_logData(logData) { } Loading @@ -29,7 +31,8 @@ namespace Isis { * @param pointObject The control point and its measures in a Pvl object */ ControlPointV0002::ControlPointV0002(Pvl &pointObject) : m_pointData(new ControlNetFileProtoV0001_PBControlPoint) { : m_pointData(new ControlNetFileProtoV0001_PBControlPoint), m_logData(new ControlNetLogDataProtoV0001_Point) { // Copy over strings, doubles, and bools copy(pointObject, "PointId", Loading Loading @@ -238,7 +241,70 @@ namespace Isis { } group.deleteKeyword("MeasureType"); // Clean up the remaining keywords for (int cmKeyIndex = 0; cmKeyIndex < group.keywords(); cmKeyIndex ++) { if (group[cmKeyIndex][0] == "" || group[cmKeyIndex].name() == "ZScore" || group[cmKeyIndex].name() == "ErrorMagnitude") { group.deleteKeyword(cmKeyIndex); } } // Create the log data for the measure ControlNetLogDataProtoV0001_Point_Measure measureLogData; for (int keyIndex = 0; keyIndex < group.keywords(); keyIndex++) { PvlKeyword dataKeyword = group[keyIndex]; QString name = dataKeyword.name(); int dataType = 0; double value = 0.0; if (name == "Obsolete_Eccentricity") { dataType = 1; } else if (name == "GoodnessOfFit") { dataType = 2; } else if (name == "MinimumPixelZScore") { dataType = 3; } else if (name == "MaximumPixelZScore") { dataType = 4; } else if (name == "PixelShift") { dataType = 5; } else if (name == "WholePixelCorrelation") { dataType = 6; } else if (name == "SubPixelCorrelation") { dataType = 7; } else if (name == "Obsolete_AverageResidual") { dataType = 8; } else { QString msg = "Invalid control measure log data name [" + name + "]"; throw IException(IException::Programmer, msg, _FILEINFO_); } try { value = toDouble(dataKeyword[0]); } catch (IException e) { QString msg = "Invalid control measure log data value [" + dataKeyword[0] + "]"; throw IException(e, IException::Io, msg, _FILEINFO_); } ControlNetLogDataProtoV0001_Point_Measure_DataEntry logEntry; logEntry.set_datatype(dataType); logEntry.set_datavalue(value); *measureLogData.add_loggedmeasuredata() = logEntry; } // Store the measure and its log data *m_pointData->add_measures() = measure; *m_logData->add_measures() = measureLogData; } if (!m_pointData->IsInitialized()) { Loading Loading @@ -280,6 +346,17 @@ namespace Isis { } /** * Access the protobuf log data for the control measures in the point. * * @return @b QSharedPointer<ControlNetLogDataProtoV0001_Point> A pointer to the internal * measure log data. */ QSharedPointer<ControlNetLogDataProtoV0001_Point> ControlPointV0002::logData() { return m_logData; } /** * This convenience method takes a boolean value from a PvlKeyword and copies it into a version 1 * protobuf field. Loading
isis/src/control/objs/ControlNetVersioner/ControlPointV0002.h +6 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ #include <QSharedPointer> #include "ControlNetFileProtoV0001.pb.h" #include "ControlNetLogDataProtoV0001.pb.h" namespace Isis { class ControlPointV0001; Loading @@ -35,10 +36,12 @@ namespace Isis { class ControlPointV0002 { public: ControlPointV0002(Pvl &pointObject); ControlPointV0002(QSharedPointer<ControlNetFileProtoV0001_PBControlPoint> pointData); ControlPointV0002(QSharedPointer<ControlNetFileProtoV0001_PBControlPoint> pointData, QSharedPointer<ControlNetLogDataProtoV0001_Point> logData); ControlPointV0002(ControlPointV0001 &oldPoint); const ControlNetFileProtoV0001_PBControlPoint &pointData(); QSharedPointer<ControlNetLogDataProtoV0001_Point> logData(); private: // These are intentionally not implemented Loading Loading @@ -74,6 +77,8 @@ namespace Isis { QSharedPointer<ControlNetFileProtoV0001_PBControlPoint> m_pointData; /**< protobuf container that holds information used to create a control point.*/ QSharedPointer<ControlNetLogDataProtoV0001_Point> m_logData; /**< Protobuf container that holds log data for the control measures in the point.*/ }; } Loading