mirror of http://192.168.1.51:8099/lmh188/twain3.0
parent
98ee790bac
commit
bbb5c44a6e
|
@ -11,10 +11,6 @@
|
|||
std::vector<int> g400hiden =
|
||||
{
|
||||
IDC_CKBINDINGDETECT ,
|
||||
IDC_LBCOUNT ,
|
||||
IDC_RDCONSISTSCAN,
|
||||
IDC_RDSPECIFYSCANNUM,
|
||||
IDC_EDSCANNUM,
|
||||
IDC_CKSKEWDETECT,
|
||||
IDC_LBSDL,
|
||||
IDC_SLDDETECTLEVEL,
|
||||
|
|
|
@ -238,6 +238,8 @@ int CTwainUI::getCmbDuplexIndex()
|
|||
ret = 2;
|
||||
else if (settings->is_autodiscradblank_vince)
|
||||
ret = 3;
|
||||
else if (settings->en_fold)
|
||||
ret = 4;
|
||||
else if(settings->is_duplex==FALSE)
|
||||
ret = 0;
|
||||
return ret;
|
||||
|
@ -427,7 +429,7 @@ void CTwainUI::UpDateScanParam(PCONFIGPARAMS configItem, bool updateDs)
|
|||
settings->is_autotext = configItem->Orentation == 4;
|
||||
settings->is_backrotate180 =configItem->EnBackRotate180;
|
||||
settings->hardwarecaps.en_skrewdetect = configItem->EnScrewDetect;
|
||||
settings->hardwarecaps.skrewdetectlevel = (float)configItem->ScrewDetectLevel;
|
||||
settings->hardwarecaps.skrewdetectlevel = (int)configItem->ScrewDetectLevel;
|
||||
settings->hardwarecaps.en_stapledetect = configItem->EnBindingDetect;
|
||||
settings->hardwarecaps.en_doublefeed = configItem->EnUltrasonicDetect;
|
||||
settings->en_fold = configItem->EnFlod ? 1 : 0;
|
||||
|
|
|
@ -743,10 +743,10 @@ namespace neb
|
|||
{
|
||||
return(false);
|
||||
}
|
||||
if (pJsonStruct->type != cJSON_Double)
|
||||
{
|
||||
return(false);
|
||||
}
|
||||
//if (pJsonStruct->type != cJSON_Double)
|
||||
//{
|
||||
// return(false);
|
||||
//}
|
||||
dValue = pJsonStruct->valuedouble;
|
||||
return(true);
|
||||
}
|
||||
|
@ -1751,10 +1751,10 @@ namespace neb
|
|||
{
|
||||
return(false);
|
||||
}
|
||||
if (pJsonStruct->type != cJSON_Double)
|
||||
{
|
||||
return(false);
|
||||
}
|
||||
//if (pJsonStruct->type != cJSON_Double)
|
||||
//{
|
||||
// return(false);
|
||||
//}
|
||||
dValue = pJsonStruct->valuedouble;
|
||||
return(true);
|
||||
}
|
||||
|
|
|
@ -62,7 +62,7 @@ typedef enum tagUsbSupported {
|
|||
PC_SCAN_BUSY_or_ERROR = 73,
|
||||
//USB δÁ¬½Ó
|
||||
USB_DISCONNECTED = 200
|
||||
} UsbSupported, *PUsbSupported;
|
||||
} UsbSupported, * PUsbSupported;
|
||||
|
||||
|
||||
enum tagEventIndex
|
||||
|
@ -79,8 +79,9 @@ class ImageMatQueue;
|
|||
class IScanner
|
||||
{
|
||||
public:
|
||||
virtual ~IScanner(){};
|
||||
|
||||
IScanner() { bFilterMsg = false; }
|
||||
virtual ~IScanner() { bFilterMsg = true; }
|
||||
void ResetMsgFiter() { bFilterMsg = true; }
|
||||
virtual void open(int vid, int pid) = 0;;
|
||||
virtual int aquire_bmpdata(std::vector<unsigned char>& bmpdata) = 0;
|
||||
virtual BOOL IsConnected() = 0;
|
||||
|
@ -91,19 +92,38 @@ public:
|
|||
virtual void config_params(GScanCap& params) = 0;
|
||||
virtual void Scanner_StartScan(UINT16 count) = 0;
|
||||
virtual void Stop_scan() = 0;
|
||||
virtual void ResetScanner() =0;
|
||||
virtual void ResetScanner() = 0;
|
||||
virtual bool Get_IsImageQueueEmpty() = 0;
|
||||
virtual void reset() = 0;
|
||||
virtual void clear_hwerror() = 0;
|
||||
virtual void setdecodepixtype(int twpixtype)= 0;
|
||||
virtual void setdecodepixtype(int twpixtype) = 0;
|
||||
virtual UINT32 get_ErrorCode() = 0;
|
||||
virtual void Set_ErrorCode(UINT32 value) = 0;
|
||||
virtual int get_scanned_num() = 0;
|
||||
void DoEvents() {
|
||||
MSG msg;
|
||||
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
|
||||
//if (msg.message != WM_LBUTTONUP)
|
||||
//{
|
||||
// DispatchMessage(&msg);
|
||||
// TranslateMessage(&msg);
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// if (!((msg.pt.x >= 240 && msg.pt.x <= 340) && (msg.pt.y >= 170 && msg.pt.y <= 240)))
|
||||
// {
|
||||
// DispatchMessage(&msg);
|
||||
// TranslateMessage(&msg);
|
||||
// }
|
||||
//}
|
||||
if (msg.message != WM_LBUTTONUP && bFilterMsg)
|
||||
{
|
||||
bFilterMsg = false;
|
||||
return;
|
||||
}
|
||||
DispatchMessage(&msg);
|
||||
TranslateMessage(&msg);
|
||||
|
||||
}
|
||||
}
|
||||
protected:
|
||||
|
@ -115,4 +135,5 @@ protected:
|
|||
std::string fwVersion;
|
||||
std::string SerialNum;
|
||||
int pixType;
|
||||
bool bFilterMsg;
|
||||
};
|
|
@ -140,9 +140,9 @@ typedef enum tagUsbKeyWords : UINT32
|
|||
//¶ÁÈ¡×ÝÏò»û±äϵÊý
|
||||
GET_JUST_COF_V
|
||||
|
||||
} UsbKeyWords, *PUsbKeyWords;
|
||||
} UsbKeyWords, * PUsbKeyWords;
|
||||
|
||||
GScanO200::GScanO200():
|
||||
GScanO200::GScanO200() :
|
||||
m_bread_fixed_ratio_fromDSP(false)
|
||||
{
|
||||
m_pImages.reset(new ImageMatQueue());
|
||||
|
@ -164,6 +164,31 @@ void GScanO200::open(int vid, int pid)
|
|||
auto usbs = UsbScan_List::find_vid_pid(vid, pid);
|
||||
|
||||
if (!usbs.empty()) {
|
||||
}
|
||||
else
|
||||
{
|
||||
int ivid, ipid;
|
||||
#ifdef G200
|
||||
#ifdef ISG100
|
||||
ivid = 0x3072;
|
||||
ipid = 0x0100;
|
||||
#else
|
||||
ivid = 0x3072;
|
||||
ipid = 0x0200;
|
||||
#endif // ISG100
|
||||
|
||||
#elif defined(G300)
|
||||
ivid = 0x3072;
|
||||
ipid = 0x0300;
|
||||
#elif defined(G400)
|
||||
ivid = 0x3072;
|
||||
ipid = 0x0400;
|
||||
#endif // G200
|
||||
usbs = UsbScan_List::find_vid_pid(ivid, ipid);
|
||||
}
|
||||
|
||||
if (!usbs.empty())
|
||||
{
|
||||
m_usb = *usbs.begin();
|
||||
bool ret = m_usb->open();
|
||||
if (ret) {
|
||||
|
@ -307,6 +332,7 @@ void GScanO200::config_params(GScanCap& params)
|
|||
UINT32 cfgdata = cfg.GetData();
|
||||
USBCB usbcb = { CONFIGURED_DATA,cfgdata,0 };
|
||||
m_usb->write_bulk(&usbcb, sizeof(USBCB));
|
||||
this_thread::sleep_for(std::chrono::milliseconds(200));
|
||||
m_pImages->setparam(params);
|
||||
}
|
||||
}
|
||||
|
@ -455,9 +481,10 @@ void GScanO200::usbhotplug_callback(bool isconnect, void* userdata)
|
|||
void GScanO200::usbhotplug(bool isleft)
|
||||
{
|
||||
if (isleft) {
|
||||
devState = DEV_WRONG;
|
||||
Error_Code = USB_DISCONNECTED;
|
||||
m_pImages->setscanflags(false);
|
||||
devState = DEV_WRONG;
|
||||
Error_Code = USB_DISCONNECTED;
|
||||
m_pImages->setscanflags(false);
|
||||
m_usb.reset();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -490,14 +517,24 @@ void GScanO200::usbmain()
|
|||
continue;
|
||||
}
|
||||
|
||||
if (gcap.resolution_dst == 300.0f && gcap.en_fold) {
|
||||
if (m_pImages->orginimgcount() > 1)
|
||||
//if (gcap.resolution_dst == 300.0f && gcap.en_fold) {
|
||||
// if (m_pImages->orginimgcount() > 1)
|
||||
// {
|
||||
// this_thread::sleep_for(chrono::milliseconds(100));
|
||||
// continue;
|
||||
// }
|
||||
//}
|
||||
|
||||
if (gcap.resolution_dst >= 300.0f)
|
||||
{
|
||||
if (m_pImages->orginimgcount() > 2)
|
||||
{
|
||||
this_thread::sleep_for(chrono::milliseconds(100));
|
||||
this_thread::sleep_for(chrono::milliseconds(10));
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
USBCB usbcb = Get_Scanner_Status();
|
||||
switch (usbcb.u32_Data) {
|
||||
case HAVE_IMAGE:
|
||||
|
|
|
@ -132,7 +132,7 @@ void ImageMatQueue::setparam(const GScanCap& param)
|
|||
+ "\n is_autotext : " + to_string(scanParam.is_autotext) + "\n is_backrotate180 : " + to_string(scanParam.is_backrotate180) + "\n is_duplex : " + to_string(scanParam.is_duplex) + "\n is_switchfrontback : " + to_string(scanParam.is_switchfrontback) + "\n multi_output_red : " + to_string(scanParam.multi_output_red)
|
||||
+ "\n paperAlign : " + to_string(scanParam.paperAlign) + "\n papertype : " + to_string(scanParam.papertype) + "\n resolution_dst : " + to_string(scanParam.resolution_dst) + "\n scannum : " + to_string(scanParam.scannum) + "\n sharpen : " + to_string(scanParam.sharpen)+
|
||||
"\n Pixtype : "+to_string(scanParam.pixtype);
|
||||
FileTools::write_log("2.txt", outinfo);
|
||||
FileTools::write_log("D:\\2.txt", outinfo);
|
||||
#endif // DEBUG
|
||||
|
||||
m_iaList.clear();
|
||||
|
|
|
@ -385,8 +385,8 @@ std::vector<CONFIGPARAMS> JsonConfig::parseJsonFromString(const std::string str)
|
|||
itmEnSwitchFrontBack.Get(i, b_value);
|
||||
cfp.EnSwitchFrontBack = b_value;
|
||||
|
||||
itmBrtnes.Get(i, i_value);
|
||||
cfp.Brightness= i_value;
|
||||
itmBrtnes.Get(i, f_value);
|
||||
cfp.Brightness= f_value;
|
||||
itmAutoCrnt.Get(i,b_value);
|
||||
cfp.EnAutoContrast=b_value;
|
||||
itmContrast.Get(i,i_value);
|
||||
|
|
|
@ -425,9 +425,22 @@ int GetContrastLevel(float contrast) {
|
|||
if (contrast >= -1000.0f && contrast < -666.0f) { ret = 1; }
|
||||
else if (contrast >= -666.0f && contrast < -333.0f) { ret = 2; }
|
||||
else if (contrast >= -333.0f && contrast < 0.0f) { ret = 3; }
|
||||
else if (contrast > 0.0f && contrast < 333.0f) { ret = 5; }
|
||||
else if (contrast >= 333.0f && contrast < 666.0f) { ret = 6; }
|
||||
else if (contrast >= 666.0f && contrast <= 1000.0f) { ret = 7; }
|
||||
else if (contrast > 0.0f && contrast <= 333.0f) { ret = 5; }
|
||||
else if (contrast > 333.0f && contrast <= 666.0f) { ret = 6; }
|
||||
else if (contrast > 666.0f && contrast <= 1000.0f) { ret = 7; }
|
||||
return ret;
|
||||
}
|
||||
|
||||
CString GetHidedlgPath()
|
||||
{
|
||||
TCHAR szIniFile[MAX_PATH] = { 0 };
|
||||
SHGetSpecialFolderPath(NULL, szIniFile, CSIDL_WINDOWS, TRUE);
|
||||
_tcscat(szIniFile, _T("\\twain_32\\HuaGoScan\\hidedlg.exe"));
|
||||
int iLen = WideCharToMultiByte(CP_ACP, 0, szIniFile, -1, NULL, 0, NULL, NULL);
|
||||
char* chRtn = new char[iLen * sizeof(char)];
|
||||
WideCharToMultiByte(CP_ACP, 0, szIniFile, -1, chRtn, iLen, NULL, NULL);
|
||||
CString ret(chRtn);
|
||||
delete[] chRtn;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -264,6 +264,7 @@ float GetContrast(int level);
|
|||
int GetMappingBrightnessValue(float in);
|
||||
int GetMappingContrastValue(float in);
|
||||
int GetContrastLevel(float contrast);
|
||||
CString GetHidedlgPath();
|
||||
string getOSInfo();
|
||||
string getManufactureID();
|
||||
string getCpuType();
|
||||
|
|
|
@ -26,7 +26,7 @@ GScanCap GscanJsonConfig::GetDefaultGscancapValue()
|
|||
gcap.is_duplex = TRUE;
|
||||
gcap.is_autodiscradblank_normal = FALSE;
|
||||
gcap.is_autodiscradblank_vince = FALSE;
|
||||
gcap.is_switchfrontback = TRUE;
|
||||
gcap.is_switchfrontback = FALSE;
|
||||
gcap.resolution_dst = 200.0f;
|
||||
gcap.resolution_native = 200.0f;
|
||||
|
||||
|
@ -55,7 +55,7 @@ GScanCap GscanJsonConfig::GetDefaultGscancapValue()
|
|||
gcap.hardwarecaps.en_stapledetect = FALSE;//默认不开启订书针检测
|
||||
gcap.hardwarecaps.skrewdetectlevel = 3;//默认处于3挡
|
||||
gcap.hardwarecaps.capturepixtype = 2;//彩色模式
|
||||
gcap.imageRotateDegree = 90.0f;//ĬÈϲ»½øÐÐÐýת
|
||||
gcap.imageRotateDegree = 0.0f;//ĬÈϲ»½øÐÐÐýת
|
||||
gcap.is_autotext = FALSE;
|
||||
gcap.is_backrotate180 = FALSE;
|
||||
gcap.scannum = -1;//默认连续扫描
|
||||
|
@ -82,27 +82,28 @@ void GscanJsonConfig::SaveGscanCapConfig(const GScanCap & gcap, const std::strin
|
|||
outJson["Config"].Add(FLOD, (bool)(gcap.en_fold), false);
|
||||
outJson["Config"].Add(SWITCHFRONTBACK, (bool)(gcap.is_switchfrontback), false);
|
||||
|
||||
outJson["Config"].Add(BRIGHTNESS, (float)(gcap.brightness));
|
||||
outJson["Config"].Add(BRIGHTNESS, (int)(gcap.brightness));
|
||||
outJson["Config"].Add(AUTOCONTRAST, (bool)(gcap.is_autocontrast), false);
|
||||
outJson["Config"].Add(CONTRAST, (float)(gcap.contrast));
|
||||
outJson["Config"].Add(GAMMA_, (int)(gcap.gamma));
|
||||
outJson["Config"].Add(CONTRAST, (int)(gcap.contrast));
|
||||
outJson["Config"].Add(GAMMA_, (double)(gcap.gamma));
|
||||
|
||||
outJson["Config"].Add(FILTERTYPE, (int)(gcap.filter));
|
||||
outJson["Config"].Add(ENHANCECOLOR,((int)gcap.enhance_color));
|
||||
outJson["Config"].Add(SHARPENTYPE, (int)(gcap.sharpen));
|
||||
outJson["Config"].Add(AUTODESCREW, (bool)(gcap.autodescrew), false);
|
||||
outJson["Config"].Add(FILLBLACK, (bool)(gcap.fillbackground), false);
|
||||
outJson["Config"].Add(MULTIOUTPUT, (bool)(gcap.multi_output_red), false);
|
||||
outJson["Config"].Add(OUTHOLE, (bool)(gcap.fillhole.is_fillhole), false);
|
||||
outJson["Config"].Add(OUTHOLERATIO, (int)(gcap.fillhole.fillholeratio));
|
||||
outJson["Config"].Add(HSVCORRECT, (bool)(gcap.hsvcorrect));
|
||||
outJson["Config"].Add(HSVCORRECT, (bool)(gcap.hsvcorrect),false);
|
||||
|
||||
outJson["Config"].Add(ULTRADETECT, (bool)(gcap.hardwarecaps.en_doublefeed), false);
|
||||
outJson["Config"].Add(BINDINGDETECT, (bool)(gcap.hardwarecaps.en_stapledetect), false);
|
||||
outJson["Config"].Add(SCANCOUNT, (int)(gcap.scannum));
|
||||
outJson["Config"].Add(DOCORIENTATION, (float)(gcap.imageRotateDegree));
|
||||
outJson["Config"].Add(AUTO_TEXT, (bool)(gcap.is_autocrop),false);
|
||||
outJson["Config"].Add(DOCORIENTATION, (int)(gcap.imageRotateDegree));
|
||||
outJson["Config"].Add(AUTO_TEXT, (bool)(gcap.is_autotext),false);
|
||||
outJson["Config"].Add(BACKROTATE180, (bool)(gcap.is_backrotate180), false);
|
||||
outJson["Config"].Add(SCREWDETECT, (bool)(gcap.hardwarecaps.en_stapledetect), false);
|
||||
outJson["Config"].Add(SCREWDETECT, (bool)(gcap.hardwarecaps.en_skrewdetect), false);
|
||||
outJson["Config"].Add(SCREWLEVEL, (int)(gcap.hardwarecaps.skrewdetectlevel));
|
||||
outJson["Config"].Add(ITEMCAPTION, (string)(gcap.Caption));
|
||||
outJson["Config"].Add(SAVEPATH, (string)(gcap.SavePath));
|
||||
|
@ -166,7 +167,7 @@ void GscanJsonConfig::WriteJsonArrayToFile(std::vector<GScanCap> cfgArray, const
|
|||
root["Config"][PAPARSIZE].Add((int)cfgArray[i].papertype);
|
||||
root["Config"][PAPERALIGN].Add((int)cfgArray[i].paperAlign);
|
||||
root["Config"][AUTOCROP].Add(i, (bool)cfgArray[i].is_autocrop);
|
||||
root["Config"][RESOLUTION].Add(cfgArray[i].resolution_dst);
|
||||
root["Config"][RESOLUTION].Add((int)cfgArray[i].resolution_dst);
|
||||
root["Config"][DUPLEX].Add(i,(bool)cfgArray[i].is_duplex);
|
||||
root["Config"][DISCARBLANK].Add(i, (bool)cfgArray[i].is_autodiscradblank_normal);
|
||||
root["Config"][DISCARBLANKVINCE].Add(i, (bool)cfgArray[i].is_autodiscradblank_vince);
|
||||
|
@ -175,10 +176,10 @@ void GscanJsonConfig::WriteJsonArrayToFile(std::vector<GScanCap> cfgArray, const
|
|||
root["Config"][FLOD].Add(i, (bool)cfgArray[i].en_fold);
|
||||
root["Config"][SWITCHFRONTBACK].Add(i,(bool)cfgArray[i].is_switchfrontback);
|
||||
|
||||
root["Config"][BRIGHTNESS].Add(cfgArray[i].brightness);
|
||||
root["Config"][BRIGHTNESS].Add((int)cfgArray[i].brightness);
|
||||
root["Config"][AUTOCONTRAST].Add(i, (bool)cfgArray[i].is_autocontrast);
|
||||
root["Config"][CONTRAST].Add(cfgArray[i].contrast);
|
||||
root["Config"][GAMMA_].Add(cfgArray[i].gamma);
|
||||
root["Config"][CONTRAST].Add((int)cfgArray[i].contrast);
|
||||
root["Config"][GAMMA_].Add((double)cfgArray[i].gamma);
|
||||
|
||||
root["Config"][FILTERTYPE].Add((int)cfgArray[i].filter);
|
||||
root["Config"][ENHANCECOLOR].Add((int)cfgArray[i].enhance_color);
|
||||
|
@ -187,17 +188,17 @@ void GscanJsonConfig::WriteJsonArrayToFile(std::vector<GScanCap> cfgArray, const
|
|||
root["Config"][FILLBLACK].Add(i, (bool)cfgArray[i].fillbackground);
|
||||
root["Config"][MULTIOUTPUT].Add(i, (bool)cfgArray[i].multi_output_red);
|
||||
root["Config"][OUTHOLE].Add(i, (bool)cfgArray[i].fillhole.is_fillhole);
|
||||
root["Config"][OUTHOLERATIO].Add(cfgArray[i].fillhole.fillholeratio);
|
||||
root["Config"][OUTHOLERATIO].Add((int)cfgArray[i].fillhole.fillholeratio);
|
||||
root["Config"][HSVCORRECT].Add(i, (bool)cfgArray[i].hsvcorrect);
|
||||
|
||||
root["Config"][ULTRADETECT].Add(i, (bool)cfgArray[i].hardwarecaps.en_doublefeed);
|
||||
root["Config"][BINDINGDETECT].Add(i, (bool)cfgArray[i].hardwarecaps.en_stapledetect);
|
||||
root["Config"][SCANCOUNT].Add((int)cfgArray[i].scannum);
|
||||
root["Config"][DOCORIENTATION].Add(cfgArray[i].imageRotateDegree);
|
||||
root["Config"][DOCORIENTATION].Add((int)cfgArray[i].imageRotateDegree);
|
||||
root["Config"][AUTO_TEXT].Add(i, (bool)cfgArray[i].is_autotext);
|
||||
root["Config"][BACKROTATE180].Add(i, (bool)cfgArray[i].is_backrotate180);
|
||||
root["Config"][SCREWDETECT].Add(i, (bool)cfgArray[i].hardwarecaps.en_skrewdetect);
|
||||
root["Config"][SCREWLEVEL].Add(cfgArray[i].hardwarecaps.skrewdetectlevel);
|
||||
root["Config"][SCREWLEVEL].Add((int)cfgArray[i].hardwarecaps.skrewdetectlevel);
|
||||
|
||||
if (cfgArray[i].Caption.c_str() != NULL)
|
||||
{
|
||||
|
@ -299,10 +300,10 @@ std::vector<GScanCap> GscanJsonConfig::parseJsonFromString(const std::string str
|
|||
root["Config"].Get(DISCARBLANK, itmDiscardBlk);
|
||||
neb::CJsonObject itmDiscardBlkVince;
|
||||
root["Config"].Get(DISCARBLANKVINCE, itmDiscardBlkVince);
|
||||
neb::CJsonObject itmDBAreaNum;
|
||||
root["Config"].Get(DB_AREANUM, itmDBAreaNum);
|
||||
neb::CJsonObject itmDBDevnMax;
|
||||
root["Config"].Get(DB_DEVNMAX, itmDBDevnMax);
|
||||
//neb::CJsonObject itmDBAreaNum;
|
||||
//root["Config"].Get(DB_AREANUM, itmDBAreaNum);
|
||||
//neb::CJsonObject itmDBDevnMax;
|
||||
//root["Config"].Get(DB_DEVNMAX, itmDBDevnMax);
|
||||
neb::CJsonObject itmEnFlod;
|
||||
root["Config"].Get(FLOD, itmEnFlod);
|
||||
neb::CJsonObject itmEnSwitchFrontBack;
|
||||
|
@ -396,12 +397,12 @@ std::vector<GScanCap> GscanJsonConfig::parseJsonFromString(const std::string str
|
|||
itmEnSwitchFrontBack.Get(i, b_value);
|
||||
cfp.is_switchfrontback = b_value ? 1 : 0;
|
||||
|
||||
itmBrtnes.Get(i, f_value);
|
||||
cfp.brightness = f_value;
|
||||
itmBrtnes.Get(i, i_value);
|
||||
cfp.brightness = i_value;
|
||||
itmAutoCrnt.Get(i, b_value);
|
||||
cfp.is_autocontrast = b_value ? 1 : 0;
|
||||
itmContrast.Get(i, f_value);
|
||||
cfp.contrast = f_value;
|
||||
itmContrast.Get(i, i_value);
|
||||
cfp.contrast = i_value;
|
||||
itmGamma.Get(i, f_value);
|
||||
cfp.gamma = f_value;
|
||||
|
||||
|
@ -430,8 +431,8 @@ std::vector<GScanCap> GscanJsonConfig::parseJsonFromString(const std::string str
|
|||
cfp.hardwarecaps.en_stapledetect = b_value ? 1 : 0;
|
||||
itmScanCount.Get(i, i_value);
|
||||
cfp.scannum = i_value;
|
||||
itmDocOrientation.Get(i, f_value);
|
||||
cfp.imageRotateDegree = (int)f_value;
|
||||
itmDocOrientation.Get(i, i_value);
|
||||
cfp.imageRotateDegree = i_value;
|
||||
itmAutotext.Get(i, b_value);
|
||||
cfp.is_autotext = b_value?1:0;
|
||||
itmBackRotate.Get(i, b_value);
|
||||
|
@ -459,7 +460,7 @@ std::vector<GScanCap> GscanJsonConfig::parseJsonFromString(const std::string str
|
|||
GScanCap cfp;
|
||||
int index;
|
||||
bool bvalue;
|
||||
float fvalue;
|
||||
double fvalue;
|
||||
std::string svalue;
|
||||
|
||||
root["Config"].Get(PIXTYPE, index);
|
||||
|
@ -487,14 +488,14 @@ std::vector<GScanCap> GscanJsonConfig::parseJsonFromString(const std::string str
|
|||
root["Config"].Get(SWITCHFRONTBACK, bvalue);
|
||||
cfp.is_switchfrontback = bvalue?1:0;
|
||||
|
||||
root["Config"].Get(BRIGHTNESS, fvalue);
|
||||
cfp.brightness = (float)fvalue;
|
||||
root["Config"].Get(BRIGHTNESS, index);
|
||||
cfp.brightness = index;
|
||||
root["Config"].Get(AUTOCONTRAST, bvalue);
|
||||
cfp.is_autocontrast = bvalue?1:0;
|
||||
root["Config"].Get(CONTRAST, index);
|
||||
cfp.contrast = (float)index;
|
||||
root["Config"].Get(GAMMA_, index);
|
||||
cfp.gamma = (float)index;
|
||||
cfp.contrast = index;
|
||||
root["Config"].Get(GAMMA_, fvalue);
|
||||
cfp.gamma = fvalue;
|
||||
|
||||
root["Config"].Get(FILTERTYPE, index);
|
||||
cfp.filter = (byte)index;
|
||||
|
@ -523,7 +524,7 @@ std::vector<GScanCap> GscanJsonConfig::parseJsonFromString(const std::string str
|
|||
root["Config"].Get(SCANCOUNT, index);
|
||||
cfp.scannum = index;
|
||||
root["Config"].Get(DOCORIENTATION, index);
|
||||
cfp.imageRotateDegree = (float)index;
|
||||
cfp.imageRotateDegree = index;
|
||||
root["Config"].Get(AUTO_TEXT, bvalue);
|
||||
cfp.is_autotext = bvalue?1:0;
|
||||
root["Config"].Get(BACKROTATE180, bvalue);
|
||||
|
|
|
@ -314,7 +314,7 @@ int CSmartEdit::SetValue( cdbl dvalue )
|
|||
if( ! m_bUseFp )
|
||||
return FALSE;
|
||||
|
||||
if( ( dvalue < m_dMin ) || ( dvalue > m_dMax ) )
|
||||
if( ( dvalue < m_dMin-1e-6 ) || ( dvalue > m_dMax+1e-6 ) )
|
||||
return FALSE;
|
||||
|
||||
CString buf;
|
||||
|
|
|
@ -138,7 +138,7 @@ static std::unique_ptr<CDialog, void(*)(CDialog*)> guiTwain(nullptr, DeleteWnd);
|
|||
static std::unique_ptr<CDialog, void(*)(CDialog*)> guiBridge(nullptr, DeleteWnd);
|
||||
#endif
|
||||
static std::unique_ptr<CDialogEx, void(*)(CDialog*)> guiIndicator(nullptr, DeleteWnd);
|
||||
|
||||
//#define HG_VIRTUAL
|
||||
#ifndef HG_VIRTUAL
|
||||
static std::unique_ptr<IScanner> scanner(new GScanO200());
|
||||
#else
|
||||
|
@ -386,17 +386,15 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
bmInfo.biBitCount = m_scanparam->pixtype == 2 ? 24 : (m_scanparam->pixtype == 1 ? 8 : 0);
|
||||
m_iBitdepth = m_scanparam->pixtype == 2 ? 24 : (m_scanparam->pixtype == 1 ? 8 : 0);
|
||||
scanner->open(0x064B, 0x7823);
|
||||
//scanner->open(0x3072, 0x0100);
|
||||
|
||||
if (!scanner->IsConnected()) {
|
||||
//MessageBox(NULL, _T("未找到扫描仪!请检查电源或者USB连接线是否接通!"), _T("提示"), MB_SYSTEMMODAL | MB_OK | MB_ICONINFORMATION);
|
||||
//CString str("201");
|
||||
ShellExecute(NULL, TEXT("open"), GetHidedlgPath(), CString("201"), NULL, SW_HIDE);
|
||||
return checkDeviceOnline();
|
||||
}
|
||||
hMutex = CreateMutex(NULL, FALSE, _T("LookitApp"));
|
||||
if (GetLastError() == ERROR_ALREADY_EXISTS) { //如果已经存在同名的Mutex会得到这个错误.
|
||||
CloseHandle(hMutex);
|
||||
//MessageBox(NULL, _T("设备已被其他程序占用,请关闭占用程序之后再重试!"), _T("提示"), MB_OK);
|
||||
//CString str("202");
|
||||
ShellExecute(NULL, TEXT("open"), GetHidedlgPath(), CString("202"), NULL, SW_HIDE);
|
||||
return seqError();
|
||||
}
|
||||
|
@ -462,15 +460,13 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
data = Capability::createEnumeration<CapType::ICompression>(
|
||||
{ Compression::None, Compression::Group4 }, m_compression == Compression::None ? 0 : 1, 0);
|
||||
return success();
|
||||
|
||||
case Msg::Reset:
|
||||
m_compression = Compression::None;
|
||||
// fallthrough
|
||||
case Msg::GetCurrent:
|
||||
data = Capability::createOneValue<CapType::ICompression>(m_compression);
|
||||
return success();
|
||||
|
||||
case Msg::Reset:
|
||||
case Msg::GetDefault:
|
||||
m_compression = Compression::None;
|
||||
data = Capability::createOneValue<CapType::ICompression>(Compression::None);
|
||||
return success();
|
||||
|
||||
|
@ -499,7 +495,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
return success();
|
||||
|
||||
case Msg::Reset:
|
||||
m_iBitdepth = 24;
|
||||
m_iBitdepth = 8;
|
||||
data = Capability::createOneValue<CapType::IBitDepth>(UInt16(m_iBitdepth));
|
||||
break;
|
||||
case Msg::GetCurrent:
|
||||
|
@ -507,7 +503,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
return success();
|
||||
|
||||
case Msg::GetDefault:
|
||||
data = Capability::createOneValue<CapType::IBitDepth>(24);
|
||||
data = Capability::createOneValue<CapType::IBitDepth>(8);
|
||||
return success();
|
||||
|
||||
case Msg::Set: {
|
||||
|
@ -548,13 +544,13 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
{ PixelType::BlackWhite, PixelType::Gray, PixelType::Rgb }, (int)(m_scanparam->pixtype), (int)PixelType::Gray);
|
||||
return success();
|
||||
|
||||
case Msg::Reset:
|
||||
m_scanparam->pixtype = (byte)PixelType::Gray;
|
||||
case Msg::GetCurrent:
|
||||
data = Capability::createOneValue<CapType::IPixelType>((PixelType)(m_scanparam->pixtype));
|
||||
return success();
|
||||
|
||||
case Msg::GetDefault:
|
||||
case Msg::Reset:
|
||||
m_scanparam->pixtype = (byte)PixelType::Gray;
|
||||
data = Capability::createOneValue<CapType::IPixelType>(PixelType::Gray);
|
||||
return success();
|
||||
|
||||
|
@ -594,9 +590,8 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
return success();
|
||||
|
||||
case Msg::Reset:
|
||||
m_jpegQuality = 80;
|
||||
return success();
|
||||
case Msg::GetDefault:
|
||||
m_jpegQuality = 80;
|
||||
data = Capability::createOneValue<UInt16>(CapType::IJpegQuality, 80);
|
||||
return success();
|
||||
|
||||
|
@ -622,15 +617,14 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
data = Capability::createEnumeration<CapType::IXferMech>(
|
||||
{ XferMech::Native, XferMech::Memory, XferMech::File }, m_capXferMech == XferMech::Native ? 0 : (m_capXferMech == XferMech::Memory ? 1 : 2), 0);
|
||||
return success();
|
||||
|
||||
case Msg::Reset:
|
||||
m_capXferMech = XferMech::Native;
|
||||
// fallthrough
|
||||
case Msg::GetCurrent:
|
||||
data = Capability::createOneValue<CapType::IXferMech>(m_capXferMech);
|
||||
return success();
|
||||
|
||||
case Msg::GetDefault:
|
||||
case Msg::Reset:
|
||||
m_capXferMech = XferMech::Native;
|
||||
data = Capability::createOneValue<CapType::IXferMech>(XferMech::Native);
|
||||
return success();
|
||||
|
||||
|
@ -672,6 +666,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
}
|
||||
case Msg::GetDefault:
|
||||
case Msg::Reset: {
|
||||
m_scanparam->resolution_dst = 200.0f;
|
||||
data = Capability::createOneValue(data.type(), Fix32(200.0));
|
||||
return success();
|
||||
}
|
||||
|
@ -731,27 +726,27 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
return success();
|
||||
case Msg::GetDefault:
|
||||
case Msg::Reset:
|
||||
m_scanparam->papertype =(int)PaperSize::A3;
|
||||
data = Capability::createOneValue(data.type(), UInt16(PaperSize::A3));
|
||||
return success();
|
||||
|
||||
case Msg::Set: {
|
||||
auto res = data.currentItem<UInt16>();
|
||||
auto paper = data.currentItem<UInt16>();
|
||||
std::list<UInt16>::iterator resIter = paperSizeList.begin();
|
||||
bool contains = false;
|
||||
for (resIter; resIter != paperSizeList.end(); resIter++) {
|
||||
if (*resIter == res) {
|
||||
if (*resIter == paper) {
|
||||
contains = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (contains) {
|
||||
m_scanparam->papertype = (byte)res;
|
||||
if (res == (byte)PaperSize::None)
|
||||
{
|
||||
m_scanparam->autodescrew = 1;//设置papertype为NONE 则默认自动裁切
|
||||
m_scanparam->papertype = (byte)paper;
|
||||
if (paper == (byte)PaperSize::None)
|
||||
m_scanparam->paperAlign = PaperAlign::Rot0;
|
||||
}
|
||||
|
||||
m_autosize = paper == (byte)PaperSize::None? (UInt16)AutoSize::Auto:(UInt16)AutoSize::None;
|
||||
m_autoboarderdetcet = paper == (byte)PaperSize::None;
|
||||
m_scanparam->is_autocrop = paper == (byte)PaperSize::None?1:0;
|
||||
return success();
|
||||
}
|
||||
return badValue();
|
||||
|
@ -768,14 +763,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
data = Capability::createEnumeration<CapType::IOrientation>(
|
||||
{ Orientation::Portrait, Orientation::Landscape }, m_scanparam->paperAlign, 0);
|
||||
return success();
|
||||
|
||||
case Msg::Reset:
|
||||
m_scanparam->paperAlign = PaperAlign::Rot0;
|
||||
case Msg::GetCurrent:
|
||||
data = Capability::createOneValue<CapType::IOrientation>((Orientation)(m_scanparam->paperAlign));
|
||||
return success();
|
||||
|
||||
case Msg::Reset:
|
||||
case Msg::GetDefault:
|
||||
m_scanparam->paperAlign = PaperAlign::Rot0;
|
||||
data = Capability::createOneValue<CapType::IOrientation>(Orientation::Portrait);
|
||||
return success();
|
||||
|
||||
|
@ -807,19 +800,18 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
}
|
||||
}
|
||||
data = Capability::createEnumeration<CapType::IRotation>(
|
||||
{ Fix32(0.0),Fix32(90.0),Fix32(180.0),Fix32(270.0) },
|
||||
{ Fix32(0.0f),Fix32(90.0f),Fix32(180.0f),Fix32(270.0f) },
|
||||
index == -1 ? 0 : index,
|
||||
0);
|
||||
return success();
|
||||
}
|
||||
case Msg::Reset:
|
||||
m_scanparam->imageRotateDegree = 0.0;
|
||||
case Msg::GetCurrent:
|
||||
data = Capability::createOneValue<CapType::IRotation>(Fix32(m_scanparam->imageRotateDegree));
|
||||
return success();
|
||||
|
||||
case Msg::Reset:
|
||||
case Msg::GetDefault:
|
||||
data = Capability::createOneValue<CapType::IRotation>(Fix32(0.0));
|
||||
m_scanparam->imageRotateDegree = 0.0f;
|
||||
data = Capability::createOneValue<CapType::IRotation>(Fix32(0.0f));
|
||||
return success();
|
||||
|
||||
case Msg::Set: {
|
||||
|
@ -868,15 +860,14 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
{ Bool(), Bool(true) }, Bool(m_bIndicator));
|
||||
return success();
|
||||
|
||||
case Msg::Reset:
|
||||
m_bIndicator = true;
|
||||
// fallthrough
|
||||
case Msg::GetCurrent:
|
||||
data = Capability::createOneValue<CapType::Indicators>(m_bIndicator);
|
||||
return success();
|
||||
|
||||
case Msg::Reset:
|
||||
case Msg::GetDefault:
|
||||
data = Capability::createOneValue<CapType::Indicators>(false);
|
||||
m_bIndicator = true;
|
||||
data = Capability::createOneValue<CapType::Indicators>(m_bIndicator);
|
||||
return success();
|
||||
|
||||
case Msg::Set: {
|
||||
|
@ -902,13 +893,13 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
case Msg::Get:
|
||||
data = Capability::createOneValue<CapType::FeederEnabled>(true);
|
||||
return success();
|
||||
case Msg::Reset:
|
||||
m_bFeederEnabled = true;
|
||||
case Msg::GetCurrent:
|
||||
data = Capability::createOneValue<CapType::FeederEnabled>(m_bFeederEnabled);
|
||||
return success();
|
||||
|
||||
case Msg::GetDefault:
|
||||
case Msg::Reset:
|
||||
m_bFeederEnabled = true;
|
||||
data = Capability::createOneValue<CapType::FeederEnabled>(true);
|
||||
return success();
|
||||
|
||||
|
@ -933,14 +924,13 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
{ Bool(), Bool(true) }, Bool(m_scanparam->is_duplex));
|
||||
return success();
|
||||
|
||||
case Msg::Reset:
|
||||
m_scanparam->is_duplex = true;
|
||||
case Msg::GetCurrent:
|
||||
data = Capability::createOneValue<CapType::DuplexEnabled>(m_scanparam->is_duplex);
|
||||
return success();
|
||||
|
||||
case Msg::Reset:
|
||||
case Msg::GetDefault:
|
||||
data = Capability::createOneValue<CapType::DuplexEnabled>(false);
|
||||
m_scanparam->is_duplex = true;
|
||||
data = Capability::createOneValue<CapType::DuplexEnabled>(true);
|
||||
return success();
|
||||
|
||||
case Msg::Set: {
|
||||
|
@ -963,15 +953,13 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
data = Capability::createEnumeration<CapType::AutoFeed>(
|
||||
{ Bool(), Bool(true) }, Bool(m_bAutoFeed));
|
||||
return success();
|
||||
|
||||
case Msg::Reset:
|
||||
m_bAutoFeed = true;
|
||||
// fallthrough
|
||||
case Msg::GetCurrent:
|
||||
data = Capability::createOneValue<CapType::AutoFeed>(m_bAutoFeed);
|
||||
return success();
|
||||
|
||||
case Msg::Reset:
|
||||
case Msg::GetDefault:
|
||||
m_bAutoFeed = true;
|
||||
data = Capability::createOneValue<CapType::AutoFeed>(true);
|
||||
return success();
|
||||
|
||||
|
@ -986,6 +974,34 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
}
|
||||
};
|
||||
|
||||
//m_query[CapType::AutoScan] = msgSupportGetAllSetReset;
|
||||
//m_caps[CapType::AutoScan] = [this](Msg msg, Capability& data) -> Result {
|
||||
// switch (msg) {
|
||||
// case Msg::Get:
|
||||
// data = Capability::createEnumeration<CapType::AutoScan>(
|
||||
// { Bool(), Bool(true) }, Bool(m_bAutoFeed));
|
||||
// return success();
|
||||
// // fallthrough
|
||||
// case Msg::GetCurrent:
|
||||
// data = Capability::createOneValue<CapType::AutoScan>(m_bAutoFeed);
|
||||
// return success();
|
||||
// case Msg::Reset:
|
||||
// case Msg::GetDefault:
|
||||
// m_bAutoFeed = true;
|
||||
// data = Capability::createOneValue<CapType::AutoScan>(true);
|
||||
// return success();
|
||||
|
||||
// case Msg::Set: {
|
||||
// auto mech = data.currentItem<CapType::AutoScan>();
|
||||
// m_bAutoFeed = mech;
|
||||
// return success();
|
||||
// }
|
||||
|
||||
// default:
|
||||
// return capBadOperation();
|
||||
// }
|
||||
//};
|
||||
|
||||
m_query[CapType::IImageFileFormat] = msgSupportGetAllSetReset;
|
||||
m_caps[CapType::IImageFileFormat] = [this](Msg msg, Capability& data) -> Result {
|
||||
switch (msg) {
|
||||
|
@ -1081,12 +1097,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
case Msg::Get:
|
||||
data = Capability::createEnumeration<CapType::IAutomaticRotate>(
|
||||
{ Bool(), Bool(true) }, Bool(m_scanparam->is_autotext));
|
||||
case Msg::Reset:
|
||||
case Msg::GetCurrent:
|
||||
m_scanparam->is_autotext = false;
|
||||
data = Capability::createOneValue<CapType::IAutomaticRotate>(m_scanparam->is_autotext);
|
||||
return success();
|
||||
case Msg::Reset:
|
||||
case Msg::GetDefault:
|
||||
m_scanparam->is_autotext = false;
|
||||
data = Capability::createOneValue<CapType::IAutomaticRotate>(false);
|
||||
return success();
|
||||
case Msg::Set: {
|
||||
|
@ -1162,7 +1178,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
switch (msg) {
|
||||
case Msg::Get:
|
||||
data = Capability::createEnumeration<CapType::IAutoSize>(
|
||||
{ AutoSize::None, AutoSize::Auto,AutoSize::Current }, (UInt16)m_autosize, 0);
|
||||
{ AutoSize::None, AutoSize::Auto}, (UInt16)m_autosize, 0);
|
||||
return success();
|
||||
// fallthrough
|
||||
case Msg::GetCurrent:
|
||||
|
@ -1170,6 +1186,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
return success();
|
||||
case Msg::Reset:
|
||||
case Msg::GetDefault:
|
||||
m_autosize = (UInt16)AutoSize::None;
|
||||
data = Capability::createOneValue<CapType::IAutoSize>(AutoSize::None);
|
||||
return success();
|
||||
|
||||
|
@ -1180,6 +1197,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
m_scanparam->is_autocrop = 1;
|
||||
m_scanparam->papertype = (byte)Twpp::PaperSize::None;
|
||||
m_scanparam->paperAlign = PaperAlign::Rot0;
|
||||
m_autoboarderdetcet = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_autoboarderdetcet = false;
|
||||
m_scanparam->is_autocrop = 0;
|
||||
}
|
||||
m_autosize = (byte)autosize;
|
||||
return success();
|
||||
|
@ -1198,7 +1221,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
return success();
|
||||
case Msg::Reset:
|
||||
case Msg::GetCurrent:
|
||||
m_autoscan = true;
|
||||
m_autoboarderdetcet = false;
|
||||
data = Capability::createOneValue<CapType::IAutomaticBorderDetection>(m_autoboarderdetcet);
|
||||
return success();
|
||||
|
||||
|
@ -1213,6 +1236,11 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
m_scanparam->is_autocrop = true;
|
||||
m_scanparam->papertype = (byte)Twpp::PaperSize::None;
|
||||
m_scanparam->paperAlign = PaperAlign::Rot0;
|
||||
m_autosize = (UInt16)AutoSize::Auto;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_autosize = (UInt16)AutoSize::None;
|
||||
}
|
||||
m_autoboarderdetcet = autodetectborder;
|
||||
return success();
|
||||
|
@ -1345,8 +1373,8 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
data = Capability::createOneValue<Bool>((CapType)(CapTypeEx::TwEx_IFillBackground), m_scanparam->fillbackground);
|
||||
return success();
|
||||
case Msg::Reset:
|
||||
m_scanparam->fillbackground = false;
|
||||
case Msg::GetDefault:
|
||||
m_scanparam->fillbackground = false;
|
||||
data = Capability::createOneValue<Bool>((CapType)(CapTypeEx::TwEx_IFillBackground), Bool(false));
|
||||
return success();
|
||||
case Msg::Set: {
|
||||
|
@ -1366,12 +1394,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
case Msg::Get:
|
||||
data = Capability::createEnumeration<Bool>((CapType)(CapTypeEx::TwEx_IFillHole), { Bool(),Bool(true) }, Bool(m_scanparam->fillhole.is_fillhole), 0);
|
||||
return success();
|
||||
case Msg::Reset:
|
||||
m_scanparam->fillhole.is_fillhole = false;
|
||||
case Msg::GetCurrent:
|
||||
data = Capability::createOneValue<Bool>((CapType)(CapTypeEx::TwEx_IFillHole), m_scanparam->fillhole.is_fillhole);
|
||||
return success();
|
||||
case Msg::GetDefault:
|
||||
case Msg::Reset:
|
||||
m_scanparam->fillhole.is_fillhole = false;
|
||||
data = Capability::createOneValue<Bool>((CapType)(CapTypeEx::TwEx_IFillHole), Bool(false));
|
||||
return success();
|
||||
case Msg::Set: {
|
||||
|
@ -1390,12 +1418,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
case Msg::Get:
|
||||
data = Capability::createOneValue<Int32>((CapType)(CapTypeEx::TwEx_IFillHoleRatio), m_scanparam->fillhole.fillholeratio);
|
||||
return success();
|
||||
case Msg::Reset:
|
||||
m_scanparam->fillhole.fillholeratio = 10;
|
||||
case Msg::GetCurrent:
|
||||
data = Capability::createOneValue<Int32>((CapType)(CapTypeEx::TwEx_IFillHoleRatio), m_scanparam->fillhole.fillholeratio);
|
||||
return success();
|
||||
case Msg::GetDefault:
|
||||
case Msg::Reset:
|
||||
m_scanparam->fillhole.fillholeratio = 10;
|
||||
data = Capability::createOneValue<Int32>((CapType)(CapTypeEx::TwEx_IFillHoleRatio), Int32(10));
|
||||
return success();
|
||||
case Msg::Set: {
|
||||
|
@ -1418,12 +1446,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
case Msg::Get:
|
||||
data = Capability::createEnumeration<Bool>((CapType)(CapTypeEx::TwEx_IMultiOutputRed), { Bool(),Bool(true) }, Bool(m_scanparam->multi_output_red), 0);
|
||||
return success();
|
||||
case Msg::Reset:
|
||||
m_scanparam->multi_output_red = false;
|
||||
case Msg::GetCurrent:
|
||||
data = Capability::createOneValue<Bool>((CapType)(CapTypeEx::TwEx_IMultiOutputRed), m_scanparam->multi_output_red);
|
||||
return success();
|
||||
case Msg::GetDefault:
|
||||
case Msg::Reset:
|
||||
m_scanparam->multi_output_red = false;
|
||||
data = Capability::createOneValue<Bool>((CapType)(CapTypeEx::TwEx_IMultiOutputRed), Bool(false));
|
||||
return success();
|
||||
case Msg::Set: {
|
||||
|
@ -1452,8 +1480,8 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
data = Capability::createOneValue<Bool>((CapType)(CapTypeEx::TwEx_HsvCorrect), m_scanparam->hsvcorrect);
|
||||
return success();
|
||||
case Msg::Reset:
|
||||
m_scanparam->hsvcorrect = false;
|
||||
case Msg::GetDefault:
|
||||
m_scanparam->hsvcorrect = false;
|
||||
data = Capability::createOneValue<Bool>((CapType)(CapTypeEx::TwEx_HsvCorrect), Bool(false));
|
||||
return success();
|
||||
case Msg::Set: {
|
||||
|
@ -1474,13 +1502,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
m_scanparam->filter,
|
||||
0);
|
||||
return success();
|
||||
case Msg::Reset:
|
||||
m_scanparam->filter = (byte)Filter::None;
|
||||
return success();
|
||||
case Msg::GetCurrent:
|
||||
data = Capability::createOneValue<CapType::IFilter>((Filter)m_scanparam->filter);
|
||||
return success();
|
||||
case Msg::GetDefault:
|
||||
case Msg::Reset:
|
||||
m_scanparam->filter = (byte)Filter::None;
|
||||
data = Capability::createOneValue<CapType::IFilter>(Filter::None);
|
||||
return success();
|
||||
case Msg::Set: {
|
||||
|
@ -1510,13 +1537,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
m_scanparam->enhance_color,
|
||||
0);
|
||||
return success();
|
||||
case Msg::Reset:
|
||||
m_scanparam->enhance_color = Enchace_Color::Enhance_None;
|
||||
return success();
|
||||
case Msg::GetCurrent:
|
||||
data = Capability::createOneValue<Int16>((CapType)(CapTypeEx::TwEx_IEnhanceColor), (Enchace_Color)(m_scanparam->enhance_color));
|
||||
return success();
|
||||
case Msg::GetDefault:
|
||||
case Msg::Reset:
|
||||
m_scanparam->enhance_color = Enchace_Color::Enhance_None;
|
||||
data = Capability::createOneValue<Int16>((CapType)(CapTypeEx::TwEx_IEnhanceColor), Enchace_Color::Enhance_None);
|
||||
return success();
|
||||
case Msg::Set: {
|
||||
|
@ -1550,12 +1576,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
m_scanparam->sharpen,
|
||||
0);
|
||||
return success();
|
||||
case Msg::Reset:
|
||||
m_scanparam->sharpen = SharpenBlur::Sharpen_None;
|
||||
case Msg::GetCurrent:
|
||||
data = Capability::createOneValue<Int16>((CapType)(CapTypeEx::TwEx_Sharpen), (SharpenBlur)(m_scanparam->sharpen));
|
||||
return success();
|
||||
case Msg::GetDefault:
|
||||
case Msg::Reset:
|
||||
m_scanparam->sharpen = SharpenBlur::Sharpen_None;
|
||||
data = Capability::createOneValue<Int16>((CapType)(CapTypeEx::TwEx_Sharpen), SharpenBlur::Sharpen_None);
|
||||
return success();
|
||||
case Msg::Set: {
|
||||
|
@ -1577,12 +1603,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
case Msg::Get:
|
||||
data = Capability::createRange<CapType::IBrightness>(Fix32(-1000.0f), Fix32(1000.0f), Fix32(333.3f), Fix32(m_scanparam->brightness), Fix32(0.0));
|
||||
return success();
|
||||
case Msg::Reset:
|
||||
m_scanparam->brightness = 0.0f;
|
||||
case Msg::GetCurrent:
|
||||
data = Capability::createOneValue<CapType::IBrightness>(Fix32(m_scanparam->brightness));
|
||||
return success();
|
||||
case Msg::GetDefault:
|
||||
case Msg::Reset:
|
||||
m_scanparam->brightness = 0.0f;
|
||||
data = Capability::createOneValue<CapType::IBrightness>(Fix32(0.0f));
|
||||
return success();
|
||||
case Msg::Set: {
|
||||
|
@ -1603,12 +1629,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
case Msg::Get:
|
||||
data = Capability::createRange<CapType::IContrast>(Fix32(-1000.0f), Fix32(1000.0f), Fix32(333.3f), Fix32(m_scanparam->contrast), Fix32(0.0));
|
||||
return success();
|
||||
case Msg::Reset:
|
||||
m_scanparam->contrast = 0.0f;
|
||||
case Msg::GetCurrent:
|
||||
data = Capability::createOneValue<CapType::IContrast>(Fix32(m_scanparam->contrast));
|
||||
return success();
|
||||
case Msg::GetDefault:
|
||||
case Msg::Reset:
|
||||
m_scanparam->contrast = 0.0f;
|
||||
data = Capability::createOneValue<CapType::IContrast>(Fix32(0.0f));
|
||||
return success();
|
||||
case Msg::Set: {
|
||||
|
@ -1629,12 +1655,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
case Msg::Get:
|
||||
data = Capability::createRange<CapType::IGamma>(Fix32(0.0f), Fix32(5.0f), Fix32(1.0f), Fix32(m_scanparam->gamma), Fix32(1.0));
|
||||
return success();
|
||||
case Msg::Reset:
|
||||
m_scanparam->gamma = 1.0f;
|
||||
case Msg::GetCurrent:
|
||||
data = Capability::createOneValue<CapType::IGamma>(Fix32(m_scanparam->gamma));
|
||||
return success();
|
||||
case Msg::GetDefault:
|
||||
case Msg::Reset:
|
||||
m_scanparam->gamma = 1.0f;
|
||||
data = Capability::createOneValue<CapType::IGamma>(Fix32(0.0f));
|
||||
return success();
|
||||
case Msg::Set: {
|
||||
|
@ -1711,12 +1737,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
case Msg::Get:
|
||||
data = Capability::createEnumeration<Bool>((CapType)(CapTypeEx::TwEx_ScrewDetectEnable), { Bool(),Bool(true) }, Bool(m_scanparam->hardwarecaps.en_skrewdetect), 0);
|
||||
return success();
|
||||
case Msg::Reset:
|
||||
m_scanparam->hardwarecaps.en_skrewdetect = false;
|
||||
case Msg::GetCurrent:
|
||||
data = Capability::createOneValue<Bool>((CapType)(CapTypeEx::TwEx_ScrewDetectEnable), m_scanparam->hardwarecaps.en_skrewdetect);
|
||||
return success();
|
||||
case Msg::GetDefault:
|
||||
case Msg::Reset:
|
||||
m_scanparam->hardwarecaps.en_skrewdetect = false;
|
||||
data = Capability::createOneValue<Bool>((CapType)(CapTypeEx::TwEx_ScrewDetectEnable), Bool(false));
|
||||
return success();
|
||||
case Msg::Set: {
|
||||
|
@ -1735,12 +1761,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
case Msg::Get:
|
||||
data = Capability::createOneValue<UInt8>((CapType)(CapTypeEx::TwEx_ScrewLevel), m_scanparam->hardwarecaps.skrewdetectlevel);
|
||||
return success();
|
||||
case Msg::Reset:
|
||||
m_scanparam->hardwarecaps.skrewdetectlevel = 3;
|
||||
case Msg::GetCurrent:
|
||||
data = Capability::createOneValue<UInt8>((CapType)(CapTypeEx::TwEx_ScrewLevel), m_scanparam->hardwarecaps.skrewdetectlevel);
|
||||
return success();
|
||||
case Msg::GetDefault:
|
||||
case Msg::Reset:
|
||||
m_scanparam->hardwarecaps.skrewdetectlevel = 3;
|
||||
data = Capability::createOneValue<UInt8>((CapType)(CapTypeEx::TwEx_ScrewLevel), UInt8(3));
|
||||
return success();
|
||||
case Msg::Set: {
|
||||
|
@ -1763,12 +1789,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
case Msg::Get:
|
||||
data = Capability::createEnumeration<Bool>((CapType)(CapTypeEx::TwEx_StableDetectEnable), { Bool(),Bool(true) }, Bool(m_scanparam->hardwarecaps.en_stapledetect), 0);
|
||||
return success();
|
||||
case Msg::Reset:
|
||||
m_scanparam->hardwarecaps.en_stapledetect = false;
|
||||
case Msg::GetCurrent:
|
||||
data = Capability::createOneValue<Bool>((CapType)(CapTypeEx::TwEx_StableDetectEnable), m_scanparam->hardwarecaps.en_stapledetect);
|
||||
return success();
|
||||
case Msg::GetDefault:
|
||||
case Msg::Reset:
|
||||
m_scanparam->hardwarecaps.en_stapledetect = false;
|
||||
data = Capability::createOneValue<Bool>((CapType)(CapTypeEx::TwEx_StableDetectEnable), Bool(false));
|
||||
return success();
|
||||
case Msg::Set: {
|
||||
|
@ -1788,12 +1814,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|||
case Msg::Get:
|
||||
data = Capability::createEnumeration<Bool>(CapType::DoubleFeedDetection, { Bool(),Bool(true) }, Bool(m_scanparam->hardwarecaps.en_doublefeed), 0);
|
||||
return success();
|
||||
case Msg::Reset:
|
||||
m_scanparam->hardwarecaps.en_doublefeed = false;
|
||||
case Msg::GetCurrent:
|
||||
data = Capability::createOneValue<Bool>(CapType::DoubleFeedDetection, m_scanparam->hardwarecaps.en_doublefeed);
|
||||
return success();
|
||||
case Msg::GetDefault:
|
||||
case Msg::Reset:
|
||||
m_scanparam->hardwarecaps.en_doublefeed = false;
|
||||
data = Capability::createOneValue<Bool>(CapType::DoubleFeedDetection, Bool(false));
|
||||
return success();
|
||||
case Msg::Set: {
|
||||
|
@ -1827,7 +1853,7 @@ Result HuagaoDs::identityCloseDs(const Identity&) {
|
|||
ReleaseMutex(hMutex);
|
||||
CloseHandle(hMutex);
|
||||
}
|
||||
saveGscanCapSetting();
|
||||
//saveGscanCapSetting();
|
||||
return success();
|
||||
}
|
||||
|
||||
|
@ -1900,6 +1926,7 @@ Result HuagaoDs::userInterfaceDisable(const Identity&, UserInterface& ui) {
|
|||
Result HuagaoDs::userInterfaceEnable(const Identity&, UserInterface& ui) {
|
||||
m_pendingXfers = 1;
|
||||
m_memXferYOff = 0;
|
||||
scanner->ResetMsgFiter();
|
||||
//writelog("userInterfaceEnable");
|
||||
if (!ui.showUi()) {
|
||||
// this is an exception when we want to set state explicitly, notifyXferReady can be called only in enabled state
|
||||
|
@ -2004,7 +2031,7 @@ Result HuagaoDs::imageMemXferGet(const Identity& origin, ImageMemXfer& data) {
|
|||
if (rows == 0) {
|
||||
return seqError(); // image already transfered in this session
|
||||
}
|
||||
cv::Mat mat = cv::imdecode(bmpData, cv::IMREAD_GRAYSCALE);
|
||||
//cv::Mat mat = cv::imdecode(bmpData, cv::IMREAD_GRAYSCALE);
|
||||
//G4Tiff gt(mat);
|
||||
//vector<uchar> cmpdata;
|
||||
//gt.GetCompressedData(cmpdata);
|
||||
|
@ -2185,6 +2212,7 @@ Twpp::Result HuagaoDs::showTwainUI(Twpp::UserInterface& ui, bool bUiOnly)
|
|||
auto scanFunction = [this](const GScanCap& caps) {
|
||||
m_pendingXfers = 1;
|
||||
m_scanparam.reset(new GScanCap(caps));
|
||||
saveGscanCapSetting();
|
||||
if (startScan() == success()) {
|
||||
notifyXferReady();
|
||||
//FileTools::write_log("E:\\Users\\huago\\Desktop\\1.txt", "notifyXferReady");
|
||||
|
@ -2197,6 +2225,7 @@ Twpp::Result HuagaoDs::showTwainUI(Twpp::UserInterface& ui, bool bUiOnly)
|
|||
//!< ui only to confirm button push
|
||||
auto confirmFunction = [this](const GScanCap& caps) {
|
||||
m_scanparam.reset(new GScanCap(caps));
|
||||
saveGscanCapSetting();
|
||||
notifyCloseOk();
|
||||
};
|
||||
|
||||
|
@ -2244,6 +2273,12 @@ void HuagaoDs::updataGscanCap()
|
|||
GScanCap cfs = js.ReadGscanCap();
|
||||
cfs.resolution_native = 200.0f;
|
||||
cfs.threshold = 128;
|
||||
if (cfs.is_autocrop)
|
||||
{
|
||||
m_autoboarderdetcet = true;
|
||||
m_autosize = (UInt16)AutoSize::Auto;
|
||||
}
|
||||
|
||||
m_scanparam.reset(new GScanCap(cfs));
|
||||
}
|
||||
|
||||
|
|
|
@ -73,14 +73,14 @@ SOURCES += huagaods.cpp \
|
|||
ImageProcess/ImageApplyChannel.cpp \
|
||||
ImageProcess/ImageApplyCrop.cpp \
|
||||
ImageProcess/ImageApplyDiscardBlank.cpp \
|
||||
ImageProcess/ImageApplyDetachNoise.cpp \
|
||||
ImageProcess/ImageApplyHSVCorrect.cpp \
|
||||
ImageProcess/ImageApplyOutHole.cpp \
|
||||
ImageProcess/ImageApplyResize.cpp \
|
||||
ImageProcess/ImageApplyRotation.cpp \
|
||||
ImageProcess/ImageApplySharpen.cpp \
|
||||
ImageProcess/ImageProcess_Public.cpp \
|
||||
ImageProcess/ImageApplyConcatenation.cpp \
|
||||
ImageProcess/ImageApplyDetachNoise.cpp \
|
||||
ImageProcess/ImageApplyHSVCorrect.cpp \
|
||||
GscanJsonConfig.cpp \
|
||||
Sliders.cpp \
|
||||
SmartEdit.cpp \
|
||||
|
@ -129,15 +129,15 @@ HEADERS += huagaods.hpp \
|
|||
ImageProcess/ImageApplyChannel.h \
|
||||
ImageProcess/ImageApplyCrop.h \
|
||||
ImageProcess/ImageApplyDiscardBlank.h \
|
||||
ImageProcess/ImageApplyHeaders.h \
|
||||
ImageProcess/ImageApplyDetachNoise.h \
|
||||
ImageProcess/ImageApplyHSVCorrect.h \
|
||||
ImageProcess/ImageApplyHeaders.h \
|
||||
ImageProcess/ImageApplyOutHole.h \
|
||||
ImageProcess/ImageApplyResize.h \
|
||||
ImageProcess/ImageApplyRotation.h \
|
||||
ImageProcess/ImageApplySharpen.h \
|
||||
ImageProcess/ImageProcess_Public.h \
|
||||
ImageProcess/ImageApplyConcatenation.h \
|
||||
ImageProcess/ImageApplyHSVCorrect.h \
|
||||
GscanJsonConfig.h \
|
||||
MapFinder.h \
|
||||
Sliders.h \
|
||||
|
|
Loading…
Reference in New Issue