#include "StdAfx.h" #include "JsonConfig.h" #include #include #include #include #include "CJsonObject.hpp" JsonConfig::JsonConfig(void) { } JsonConfig::~JsonConfig(void) { } /************************************************************************/ /* 保存配置参数 */ /************************************************************************/ void JsonConfig::WriteToJson(PCONFIGPARAMS pConfigItem,const std::string fileNames,bool isConfigItem) { neb::CJsonObject outJson; outJson.AddEmptySubObject("Config");//header outJson["Config"].Add(PIXTYPE,(int)(pConfigItem->Pixtype)); outJson["Config"].Add(PAPARSIZE,(int)(pConfigItem->PaperSize)); outJson["Config"].Add(AUTOCROP,(bool)(pConfigItem->EnAutoCrop),false); outJson["Config"].Add(RESOLUTION,(int)(pConfigItem->Resolution)); outJson["Config"].Add(DUPLEX,(int)(pConfigItem->Duplex)); outJson["Config"].Add(DISCARBLANK,(bool)(pConfigItem->EnDiscardBlank),false); outJson["Config"].Add(DISCARBLANKVINCE,(bool)(pConfigItem->EnDiscardBlankVince),false); outJson["Config"].Add(BRIGHTNESS,(int)(pConfigItem->Brightness)); outJson["Config"].Add(AUTOCONTRAST,(bool)(pConfigItem->EnAutoContrast),false); outJson["Config"].Add(CONTRAST,(int)(pConfigItem->Contrast)); outJson["Config"].Add(GAMMA,(int)(pConfigItem->Gamma)); outJson["Config"].Add(FILTERTYPE,(int)(pConfigItem->Filter)); outJson["Config"].Add(AUTODESCREW,(bool)(pConfigItem->EnAutoDescrew),false); outJson["Config"].Add(FILLBLACK,(bool)(pConfigItem->EnFillBlack),false); outJson["Config"].Add(MULTIOUTPUT,(bool)(pConfigItem->EnMultiOutPutR),false); outJson["Config"].Add(OUTHOLE,(bool)(pConfigItem->EnOutHole),false); outJson["Config"].Add(OUTHOLERATIO,(int)(pConfigItem->OutHoleRatio)); outJson["Config"].Add(ULTRADETECT,(bool)(pConfigItem->EnUltrasonicDetect),false); outJson["Config"].Add(BINDINGDETECT,(bool)(pConfigItem->EnBindingDetect),false); outJson["Config"].Add(SCANCOUNT,(int)(pConfigItem->ScanCount)); outJson["Config"].Add(DOCORIENTATION,(int)(pConfigItem->Orentation)); outJson["Config"].Add(BACKROTATE180,(bool)(pConfigItem->EnBackRotate180),false); outJson["Config"].Add(SCREWDETECT,(bool)(pConfigItem->EnScrewDetect),false); outJson["Config"].Add(SCREWLEVEL,(int)(pConfigItem->ScrewDetectLevel)); if (isConfigItem) { outJson["Config"].Add(ITEMCAPTION,(string)(pConfigItem->Caption)); outJson["Config"].Add(SAVEPATH,(string)(pConfigItem->SavePath)); } std::ofstream os; os.open(fileNames.c_str()); os< cfgArray,const std::string filename) { //Json::StyledWriter sw; neb::CJsonObject root; root.AddEmptySubObject("Config"); root["Config"].AddEmptySubArray(PIXTYPE); root["Config"].AddEmptySubArray(PAPARSIZE); root["Config"].AddEmptySubArray(AUTOCROP); root["Config"].AddEmptySubArray(RESOLUTION); root["Config"].AddEmptySubArray(DUPLEX); root["Config"].AddEmptySubArray(DISCARBLANK); root["Config"].AddEmptySubArray(DISCARBLANKVINCE); root["Config"].AddEmptySubArray(BRIGHTNESS); root["Config"].AddEmptySubArray(AUTOCONTRAST); root["Config"].AddEmptySubArray(CONTRAST); root["Config"].AddEmptySubArray(GAMMA); root["Config"].AddEmptySubArray(FILTERTYPE); root["Config"].AddEmptySubArray(AUTODESCREW); root["Config"].AddEmptySubArray(FILLBLACK); root["Config"].AddEmptySubArray(MULTIOUTPUT); root["Config"].AddEmptySubArray(OUTHOLE); root["Config"].AddEmptySubArray(OUTHOLERATIO); root["Config"].AddEmptySubArray(ULTRADETECT); root["Config"].AddEmptySubArray(BINDINGDETECT); root["Config"].AddEmptySubArray(SCANCOUNT); root["Config"].AddEmptySubArray(DOCORIENTATION); root["Config"].AddEmptySubArray(BACKROTATE180); root["Config"].AddEmptySubArray(SCREWDETECT); root["Config"].AddEmptySubArray(SCREWLEVEL); root["Config"].AddEmptySubArray(ITEMCAPTION); root["Config"].AddEmptySubArray(SAVEPATH); for (int i=0;i vc; vc=ReadJsonArrayFromFile(s_default.c_str()); if (vc.size()!=0) { return vc[0]; } return GetDefaultConfigParams(); } bool JsonConfig::DeleteJsonFile(std::string path) { return (remove(path.c_str())); } std::vector JsonConfig::ReadJsonArrayFromFile(const std::string filename) { std::vector re; FILE* file=fopen(filename.c_str(),"rb"); if (!file) { return re; } fseek(file,0,SEEK_END); long size=ftell(file); fseek(file,0,SEEK_SET); std::string text; char* buffer=new char[size+1]; buffer[size]=0; if (!fread(buffer,1,size,file)==(unsigned long)size) { return re; } text=buffer; fclose(file); delete []buffer; re=parseJsonFromString(text); return re; } CONFIGPARAMS JsonConfig::GetDefaultConfigParams() { CONFIGPARAMS params; params.Pixtype=1;//灰度 params.PaperSize=11;//A3 params.EnAutoCrop=FALSE;//自动裁切 params.Resolution=200;//200dpi params.Duplex=1;//双面 params.EnDiscardBlank=FALSE;//自动丢弃空白页 params.EnDiscardBlankVince=FALSE; params.Brightness=0;//亮度 params.EnAutoContrast=FALSE;//自动对比度 params.Contrast=0;//对比度 params.Gamma=10;//伽玛值 params.Filter=0;//除色 无 params.EnFillBlack=FALSE;//不填黑框 params.EnAutoDescrew=TRUE;//不自动纠偏 params.EnMultiOutPutR=FALSE;//不多流输出除红 params.EnOutHole=FALSE;//不去除孔洞 params.OutHoleRatio=10;//默认值0.10 params.EnUltrasonicDetect=TRUE;//超声检测开关 开 params.EnBindingDetect=FALSE;//装订检测开关 开 params.ScanCount=-1;//扫描张数 params.Orentation=0;//旋转方向0度 params.EnBackRotate180=FALSE;//背面旋转180度 不旋转 params.EnScrewDetect=TRUE;//歪斜检测 开 params.ScrewDetectLevel=3;//歪斜检测等级 3级 return params; } std::vector JsonConfig::parseJsonFromString(const std::string str) { neb::CJsonObject root(str); vector vcConfig; int size=0; neb::CJsonObject itmPaparSize; root["Config"].Get(PAPARSIZE,itmPaparSize); size=itmPaparSize.GetArraySize(); if (size>0) { neb::CJsonObject itmPixType; root["Config"].Get(PIXTYPE,itmPixType); neb::CJsonObject itmAutoCrop; root["Config"].Get(AUTOCROP,itmAutoCrop); neb::CJsonObject itmRes; root["Config"].Get(RESOLUTION,itmRes); neb::CJsonObject itmDulpex; root["Config"].Get(DUPLEX,itmDulpex); neb::CJsonObject itmDiscardBlk; root["Config"].Get(DISCARBLANK,itmDiscardBlk); neb::CJsonObject itmDiscardBlkVince; root["Config"].Get(DISCARBLANKVINCE,itmDiscardBlkVince); neb::CJsonObject itmBrtnes; root["Config"].Get(BRIGHTNESS,itmBrtnes); neb::CJsonObject itmAutoCrnt; root["Config"].Get(AUTOCONTRAST,itmAutoCrnt); neb::CJsonObject itmContrast; root["Config"].Get(CONTRAST,itmContrast); neb::CJsonObject itmGamma; root["Config"].Get(GAMMA,itmGamma); neb::CJsonObject itmFilter; root["Config"].Get(FILTERTYPE,itmFilter); neb::CJsonObject itmAutoDescrew; root["Config"].Get(AUTODESCREW,itmAutoDescrew); neb::CJsonObject itmFillBlack; root["Config"].Get(FILLBLACK,itmFillBlack); neb::CJsonObject itmMultiOutput; root["Config"].Get(MULTIOUTPUT,itmMultiOutput); neb::CJsonObject itmOutHole; root["Config"].Get(OUTHOLE,itmOutHole); neb::CJsonObject itmOutHoleRatio; root["Config"].Get(OUTHOLERATIO,itmOutHoleRatio); neb::CJsonObject itmUltDetect; root["Config"].Get(ULTRADETECT,itmUltDetect); neb::CJsonObject itmBingdingDetect; root["Config"].Get(BINDINGDETECT,itmBingdingDetect); neb::CJsonObject itmScanCount; root["Config"].Get(SCANCOUNT,itmScanCount); neb::CJsonObject itmDocOrientation; root["Config"].Get(DOCORIENTATION,itmDocOrientation); neb::CJsonObject itmBackRotate; root["Config"].Get(BACKROTATE180,itmBackRotate); neb::CJsonObject itmScrewDetct; root["Config"].Get(SCREWDETECT,itmScrewDetct); neb::CJsonObject itmScrewLevel; root["Config"].Get(SCREWLEVEL,itmScrewLevel); neb::CJsonObject itmCaption; if (!root["Config"][ITEMCAPTION].IsEmpty()) { root["Config"].Get(ITEMCAPTION,itmCaption); } neb::CJsonObject itmSavePtah; if (!root["Config"][SAVEPATH].IsEmpty()) { root["Config"].Get(SAVEPATH,itmSavePtah); } for (int i=0;i