#include "Raster.h" #include "ThicknessVector.h" #include #include #include #include "QFile" #pragma execution_character_set("utf-8") CRaster::CRaster(QString strPath) : m_pThickness(NULL), m_pRasSt(NULL), m_strPath(strPath) { m_pThickness = new ThicknessVector(); m_pRasSt = new RasterST; m_pRasCom = new RasterCom; readRasterJson(); m_pThickness->setRasterST(m_pRasSt); } CRaster::~CRaster() { delete m_pRasSt; delete m_pRasCom; delete m_pThickness; } RasterST * CRaster::getRasterSt() const { return m_pRasSt; } bool CRaster::readRasterJson() { //!>读取调试模式信息 是否保存good的图片 是否保存bad的图片 是否使用调试模式 QFile loadFile(m_strPath); if (!loadFile.open(QIODevice::ReadOnly)) { qWarning("Couldn't open save file."); return false; } QByteArray readData = loadFile.readAll(); QJsonDocument readDoc = QJsonDocument::fromJson(readData); QJsonObject jsRaster = readDoc.object(); QJsonObject Rsaterobj = jsRaster.value("Raster").toObject(); if (!Rsaterobj.isEmpty()) { m_pRasSt->m_beilv = Rsaterobj.value("beilv").toDouble(5.07); m_pRasSt->m_baseHight = Rsaterobj.value("basehight").toDouble(87); m_pRasSt->mid_value = Rsaterobj.value("mid_value").toDouble(0.8);//中值 m_pRasSt->m_maxsize = Rsaterobj.value("maxsize").toInt(10); m_pRasSt->m_lowNum = Rsaterobj.value("lowNum").toInt(0); m_pRasSt->m_bool_beilv = Rsaterobj.value("beilv_bool").toBool(false); m_pRasSt->m_bool_baseHight = Rsaterobj.value("basehight_bool").toBool(false); m_pRasSt->m_bool_maxsize = Rsaterobj.value("maxsize_bool").toBool(false); m_pRasSt->m_bool_lowNum = Rsaterobj.value("lowNum_bool").toBool(false); m_pRasSt->m_bool_mid_value = Rsaterobj.value("mid_value_bool").toBool(false); } else { saveRasterJson(EMTYPE_RASTER); } QJsonObject RasterComObj = jsRaster.value("COM").toObject(); if (!RasterComObj.isEmpty()) { m_pRasCom->m_ComName = RasterComObj.value("comName").toString(); m_pRasCom->m_Baute = RasterComObj.value("baute").toString(); m_pRasCom->m_UseRaster = RasterComObj.value("useRaster").toBool(); } else{ saveRasterJson(EMTYPE_COM); } return true; } bool CRaster::saveRasterJson(emTySaveJsonType emType) { QJsonObject mObj; switch (emType) { case EMTYPE_RASTER:{ QJsonObject Rasterobj; Rasterobj.insert("beilv", QJsonValue(m_pRasSt->m_beilv)); Rasterobj.insert("basehight", QJsonValue(m_pRasSt->m_baseHight)); Rasterobj.insert("mid_value", QJsonValue(m_pRasSt->mid_value));//中值 Rasterobj.insert("maxsize", QJsonValue(m_pRasSt->m_maxsize)); Rasterobj.insert("lowNum", QJsonValue(m_pRasSt->m_lowNum)); Rasterobj.insert("beilv_bool", QJsonValue(m_pRasSt->m_bool_beilv)); Rasterobj.insert("basehight_bool", QJsonValue(m_pRasSt->m_bool_baseHight)); Rasterobj.insert("maxsize_bool", QJsonValue(m_pRasSt->m_bool_maxsize)); Rasterobj.insert("lowNum_bool", QJsonValue(m_pRasSt->m_bool_lowNum)); Rasterobj.insert("mid_value_bool", QJsonValue(m_pRasSt->m_bool_mid_value)); mObj.insert("Raster", Rasterobj); } break; case EMTYPE_COM:{ QJsonObject Rasterobj; Rasterobj.insert("comName", QJsonValue(m_pRasCom->m_ComName)); Rasterobj.insert("baute", QJsonValue(m_pRasCom->m_Baute)); Rasterobj.insert("useRaster", QJsonValue(m_pRasCom->m_UseRaster)); mObj.insert("COM", Rasterobj); } break; default: break; } QFile saveFile(m_strPath); saveFile.open(QIODevice::WriteOnly); QJsonDocument saveDoc(mObj); saveFile.write(saveDoc.toJson()); saveFile.close(); return true; } QString CRaster::getThicknessListStr() { QList m = getThicknessList();/*显示滤波的数据*/ QString str = "thickness list: "; for (int i = 0; i < m.size(); i++) { str += QString::number(m.at(i)) + " "; } str += "; value = " + QString::number(m_pThickness->getValue()); qDebug() << str; return str; } double CRaster::getThicknessValue() const { // // QList m = getThicknessList();/*显示滤波的数据*/ // QString str = "thickness value list: "; // for (int i = 0; i < m.size(); i++) // { // str += QString::number(m.at(i)) + " "; // } // str += "; value = " + QString::number(m_pThickness->getValue()); // qDebug() << str; return m_pThickness->getValue(); } void CRaster::addThicknessValue(double dValue) { double dThickness = (63 - dValue) * m_pRasSt->m_beilv*1.0;//获取光栅数据 乘以 倍率 得出遮挡的厚度 m_pThickness->addValue(dThickness + m_pRasSt->m_baseHight); } bool CRaster::showRasterDlg() { // QRasterDlg dlg; // dlg.SetData2UI(m_pRasSt); // dlg.setWindowTitle("光栅标定参数设置"); // dlg.setWindowIcon(QIcon(":/image/leaper")); // if (dlg.exec() == QDialog::Accepted) // { // dlg.GetDataFromUI(m_pRasSt); // saveRasterJson(); // } return true; } QList CRaster::getThicknessList() const { return m_pThickness->getList(); } bool CRaster::setRasterSt(RasterST *m_pRaster) { if (m_pRasSt){ m_pRasSt = m_pRaster; } return true; } RasterCom * CRaster::getRasterCom() const { return m_pRasCom; }