twain3/SaneUI/readwritejsonfile.cpp

199 lines
9.6 KiB
C++

#ifndef WIN32
#include "readwritejsonfile.h"
#include <QFile>
#include <QDir>
#include <QDebug>
#include <QMessageBox>
ReadwriteJsonFile::ReadwriteJsonFile()
{
}
bool ReadwriteJsonFile::writeScanparams2Json(QString path, QString name, ScanParams &params)
{
QDir filePath(path);
// if(filePath.isEmpty())
// {
// QMessageBox::critical(nullptr,"save failed","file path is empty");
// return false;
// }
QFile file(path+ "/" + name + ".json");
if(!file.open(QIODevice::ReadWrite))
{
qDebug() << "File open error";
return false;
}
qDebug() << "file open success";
file.resize(0);
QJsonObject jsonObject;
jsonObject.insert("scanCount",params.scan_count);
jsonObject.insert("colorMode",params.scan_mode);
jsonObject.insert("paperType",params.scan_paper);
jsonObject.insert("scanPreview",params.scan_preview);
jsonObject.insert("bitDipth",params.scan_bit_depth);
jsonObject.insert("resolution",params.scan_resolution);
jsonObject.insert("scanCorectEnable",params.scan_corect_enable);
jsonObject.insert("corectTLXPostion",params.scan_tl_x);
jsonObject.insert("corectTLYPostion",params.scan_tl_y);
jsonObject.insert("corectBRXPosition",params.scan_br_x);
jsonObject.insert("corectBRYPosition",params.scan_br_y);
jsonObject.insert("brightness",params.scan_brightness);
jsonObject.insert("contrast",params.scan_contrast);
jsonObject.insert("gamma",params.scan_gama);
jsonObject.insert("autoDesCrew",params.scan_autodescrew);
jsonObject.insert("fillBlack",params.scan_fillblack);
jsonObject.insert("outHole",params.scan_outhole);
jsonObject.insert("outHOleRation",params.scan_outholeratio);
jsonObject.insert("discardBlank",params.scan_discardblank);
jsonObject.insert("fold",params.scan_fold);
jsonObject.insert("filter",params.scan_filter);
jsonObject.insert("refuseInflow",params.scan_refuseinflow);
jsonObject.insert("colorCorrect",params.scan_color_correct);
jsonObject.insert("removeMoire",params.scan_removemoire);
jsonObject.insert("errorExtention",params.scan_errorextention);
jsonObject.insert("SharpenType",params.scan_imagesharpen);
jsonObject.insert("splitImage",params.scan_splitimage);
jsonObject.insert("noiseDetach",params.scan_noisedetach);
jsonObject.insert("backImageRotate180",params.scan_backimagerotate180);
jsonObject.insert("rotate",params.scan_rotate);
jsonObject.insert("textureRemove",params.scan_texture_remove);
jsonObject.insert("duplex",params.scan_duplex);
jsonObject.insert("doubleFeedDetect",params.scan_doublefeeddetect);
jsonObject.insert("stapleDetect",params.scan_stapledetect);
jsonObject.insert("screwDetect",params.scan_screwdetect);
jsonObject.insert("screwDetectLevel",params.scan_screwdetectlevel);
QJsonDocument jsonDoc;
jsonDoc.setObject(jsonObject);
file.write(jsonDoc.toJson());
file.close();
return true;
}
bool ReadwriteJsonFile::readScanparamsFromJson(QString path,QString name, ScanParams &params)
{
QDir filePath(path);
if (!filePath.exists())
{
QMessageBox::critical(nullptr,"Read File error","file path is empty");
return false;
}
QFile file(path +"/" + name + ".json");
if(!file.open(QIODevice::ReadOnly))
{
qDebug()<< "open file faild:"<<endl;
return false;
}
qDebug()<< "open file OK:"<<endl;
QByteArray data = file.readAll();
file.close();
QJsonParseError json_error;
QJsonDocument doc = QJsonDocument::fromJson(data,&json_error);
if(json_error.error != QJsonParseError::NoError)
{
qDebug() << "json error!";
return false;
}
QJsonObject obj = doc.object();
params.scan_count = obj.value("scanCount").toInt();
params.scan_mode = const_cast<char*>(obj.value("colorMode").toString().toStdString().c_str());
if(strcmp(const_cast<char*>(obj.value("paperType").toString().toStdString().c_str()),HG_PAGE_AUTO)==0)
params.scan_paper = const_cast<char*>(HG_PAGE_AUTO);
else if(strcmp(const_cast<char*>(obj.value("paperType").toString().toStdString().c_str()),HG_PAGE_A3)==0)
params.scan_paper = const_cast<char*>(HG_PAGE_A3);
else if(strcmp(const_cast<char*>(obj.value("paperType").toString().toStdString().c_str()),HG_PAGE_A4)==0)
params.scan_paper = const_cast<char*>(HG_PAGE_A4);
else if(strcmp(const_cast<char*>(obj.value("paperType").toString().toStdString().c_str()),HG_PAGE_A4R)==0)
params.scan_paper = const_cast<char*>(HG_PAGE_A4R);
else if(strcmp(const_cast<char*>(obj.value("paperType").toString().toStdString().c_str()),HG_PAGE_A5)==0)
params.scan_paper = const_cast<char*>(HG_PAGE_A5);
else if(strcmp(const_cast<char*>(obj.value("paperType").toString().toStdString().c_str()),HG_PAGE_A5R)==0)
params.scan_paper = const_cast<char*>(HG_PAGE_A5R);
params.scan_preview = obj.value("scanPreview").toInt();
params.scan_bit_depth = obj.value("bitDipth").toInt();
params.scan_resolution = obj.value("resolution").toInt();
params.scan_corect_enable = obj.value("scanCorectEnable").toInt();
params.scan_tl_x = obj.value("corectTLXPostion").toInt();
params.scan_tl_y = obj.value("corectTLYPostion").toInt();
params.scan_br_x = obj.value("corectBRXPosition").toInt();
params.scan_br_y = obj.value("corectBRYPosition").toInt();
if(strcmp(const_cast<char*>(obj.value("filter").toString().toStdString().c_str()),FT_NONE)==0)
params.scan_filter = const_cast<char*>(FT_NONE);
else if (strcmp(const_cast<char*>(obj.value("filter").toString().toStdString().c_str()),FT_RED)==0)
params.scan_filter = const_cast<char*>(FT_RED);
else if (strcmp(const_cast<char*>(obj.value("filter").toString().toStdString().c_str()),FT_GREEN)==0)
params.scan_filter = const_cast<char*>(FT_GREEN);
else if (strcmp(const_cast<char*>(obj.value("filter").toString().toStdString().c_str()),FT_BLUE)==0)
params.scan_filter = const_cast<char*>(FT_BLUE);
else if (strcmp(const_cast<char*>(obj.value("filter").toString().toStdString().c_str()),FT_ALL)==0)
params.scan_filter = const_cast<char*>(FT_ALL);
else if (strcmp(const_cast<char*>(obj.value("filter").toString().toStdString().c_str()),FT_EN_RED)==0)
params.scan_filter = const_cast<char*>(FT_EN_RED);
else if (strcmp(const_cast<char*>(obj.value("filter").toString().toStdString().c_str()),FT_EN_GREEN)==0)
params.scan_filter = const_cast<char*>(FT_EN_GREEN);
else if (strcmp(const_cast<char*>(obj.value("filter").toString().toStdString().c_str()),FT_EN_BLUE)==0)
params.scan_filter = const_cast<char*>(FT_EN_BLUE);
params.scan_brightness = obj.value("brightness").toInt();
params.scan_contrast = obj.value("contrast").toInt();
params.scan_gama = obj.value("gamma").toDouble();
params.scan_autodescrew = obj.value("autoDesCrew").toInt();
params.scan_fillblack = obj.value("fillBlack").toInt();
params.scan_outhole = obj.value("outHole").toInt();
params.scan_outholeratio = obj.value("outHOleRation").toInt();
params.scan_discardblank = obj.value("discardBlank").toInt();
params.scan_fold = obj.value("fold").toInt();
params.scan_refuseinflow = obj.value("refuseInflow").toInt();
params.scan_color_correct = obj.value("colorCorrect").toInt();
params.scan_removemoire = obj.value("removeMoire").toInt();
params.scan_errorextention = obj.value("errorExtention").toInt();
if(strcmp(const_cast<char*>(obj.value("SharpenType").toString().toStdString().c_str()),SHARPEN_NONE)==0)
params.scan_imagesharpen = const_cast<char*>(SHARPEN_NONE);
else if(strcmp(const_cast<char*>(obj.value("SharpenType").toString().toStdString().c_str()),SHARPEN)==0)
params.scan_imagesharpen = const_cast<char*>(SHARPEN);
else if(strcmp(const_cast<char*>(obj.value("SharpenType").toString().toStdString().c_str()),SHARPEN_MORE)==0)
params.scan_imagesharpen = const_cast<char*>(SHARPEN_MORE);
else if(strcmp(const_cast<char*>(obj.value("SharpenType").toString().toStdString().c_str()),BLUR)==0)
params.scan_imagesharpen = const_cast<char*>(BLUR);
else if(strcmp(const_cast<char*>(obj.value("SharpenType").toString().toStdString().c_str()),BLUR_MORE)==0)
params.scan_imagesharpen = const_cast<char*>(BLUR_MORE);
params.scan_splitimage = obj.value("splitImage").toInt();
params.scan_noisedetach = obj.value("noiseDetach").toInt();
params.scan_backimagerotate180 = obj.value("backImageRotate180").toInt();
if(strcmp(const_cast<char*>(obj.value("rotate").toString().toStdString().c_str()),RT_NONE)==0)
params.scan_rotate = const_cast<char*>(RT_NONE);
else if(strcmp(const_cast<char*>(obj.value("rotate").toString().toStdString().c_str()),RT_90)==0)
params.scan_rotate = const_cast<char*>(RT_90);
else if(strcmp(const_cast<char*>(obj.value("rotate").toString().toStdString().c_str()),RT_180)==0)
params.scan_rotate = const_cast<char*>(RT_180);
else if(strcmp(const_cast<char*>(obj.value("rotate").toString().toStdString().c_str()),RT_270)==0)
params.scan_rotate = const_cast<char*>(RT_270);
else if(strcmp(const_cast<char*>(obj.value("rotate").toString().toStdString().c_str()),RT_AUTO)==0)
params.scan_rotate = const_cast<char*>(RT_AUTO);
params.scan_texture_remove = obj.value("textureRemove").toInt();
params.scan_duplex = obj.value("duplex").toInt();
params.scan_doublefeeddetect = obj.value("doubleFeedDetect").toInt();
params.scan_stapledetect = obj.value("stapleDetect").toInt();
params.scan_screwdetect = obj.value("screwDetect").toInt();
params.scan_screwdetectlevel = obj.value("screwDetectLevel").toInt();
return true;
}
#endif