|
|
|
@ -26,7 +26,7 @@
|
|
|
|
|
#ifdef WIN32
|
|
|
|
|
#include <Psapi.h>
|
|
|
|
|
#endif // WIN32
|
|
|
|
|
|
|
|
|
|
using namespace std;
|
|
|
|
|
|
|
|
|
|
//custom define caps enum
|
|
|
|
|
enum class CapTypeEx : unsigned short {
|
|
|
|
@ -266,6 +266,7 @@ HuagaoDs::HuagaoDs()
|
|
|
|
|
,bmpData(new std::vector<unsigned char>)
|
|
|
|
|
, hMutex(NULL)
|
|
|
|
|
{
|
|
|
|
|
//log4cplus::Initializer initializer;
|
|
|
|
|
/*string ss1= getOSInfo();
|
|
|
|
|
string ss2=getManufactureID();
|
|
|
|
|
string ss3=getCpuType();
|
|
|
|
@ -862,8 +863,8 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
{
|
|
|
|
|
m_scanparam->pixtype = (int)mech;
|
|
|
|
|
if (m_scanparam->pixtype == (int)PixelType::Rgb){
|
|
|
|
|
m_scanparam->filter = (byte)Filter::None;
|
|
|
|
|
m_scanparam->enhance_color = (byte)Enchace_Color::Enhance_None;
|
|
|
|
|
m_scanparam->filter = (BYTE)Filter::None;
|
|
|
|
|
m_scanparam->enhance_color = (BYTE)Enchace_Color::Enhance_None;
|
|
|
|
|
m_scanparam->automaticcolor = FALSE;
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
@ -874,8 +875,8 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
{
|
|
|
|
|
if (m_scanparam->filter == 3 && m_scanparam->enhance_color == 0)
|
|
|
|
|
{
|
|
|
|
|
m_scanparam->filter = (byte)Filter::None;
|
|
|
|
|
m_scanparam->enhance_color = (byte)Enchace_Color::Enhance_Red;
|
|
|
|
|
m_scanparam->filter = (BYTE)Filter::None;
|
|
|
|
|
m_scanparam->enhance_color = (BYTE)Enchace_Color::Enhance_Red;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -894,8 +895,8 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
auto mech = data.currentItem<CapType::IAutomaticColorEnabled>();
|
|
|
|
|
if (mech){
|
|
|
|
|
m_scanparam->automaticcolor = TRUE;
|
|
|
|
|
m_scanparam->filter = (byte)Filter::None;
|
|
|
|
|
m_scanparam->enhance_color = (byte)Enchace_Color::Enhance_None;
|
|
|
|
|
m_scanparam->filter = (BYTE)Filter::None;
|
|
|
|
|
m_scanparam->enhance_color = (BYTE)Enchace_Color::Enhance_None;
|
|
|
|
|
m_scanparam->pixtype = (int)PixelType::Rgb;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
@ -955,7 +956,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
m_caps[CapType::IXResolution] = [this](Msg msg, Capability& data) {
|
|
|
|
|
switch (msg) {
|
|
|
|
|
case Msg::Get:
|
|
|
|
|
data = Capability::createRange<CapType::IXResolution>(Fix32(100.0f), Fix32(600.0f), Fix32(1.0f), Fix32(m_scanparam->resolution_dst), Fix32(200.0));
|
|
|
|
|
data = Capability::createRange<CapType::IXResolution>(Fix32(100.0f), Fix32(300.0f), Fix32(1.0f), Fix32(m_scanparam->resolution_dst), Fix32(200.0));
|
|
|
|
|
return success();
|
|
|
|
|
case Msg::GetCurrent:
|
|
|
|
|
data = Capability::createOneValue<CapType::IXResolution>(Fix32(m_scanparam->resolution_dst));
|
|
|
|
@ -967,7 +968,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
return success();
|
|
|
|
|
case Msg::Set: {
|
|
|
|
|
auto mech = data.currentItem<CapType::IXResolution>();
|
|
|
|
|
if (mech < 100.0f || mech > 600.0f)
|
|
|
|
|
if (mech < 100.0f || mech > 300.0f)
|
|
|
|
|
return badValue();
|
|
|
|
|
m_scanparam->resolution_dst = (float)mech;
|
|
|
|
|
return success();
|
|
|
|
@ -995,25 +996,25 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
if (std::distance(paperSizeList.begin(), std::find(paperSizeList.begin(), paperSizeList.end(), paper)) == paperSizeList.size())
|
|
|
|
|
return badValue();
|
|
|
|
|
else {
|
|
|
|
|
m_scanparam->papertype = (byte)paper;
|
|
|
|
|
if (paper == (byte)PaperSize::None || paper == (byte)PaperSize::UsStatement){
|
|
|
|
|
m_scanparam->papertype = (BYTE)paper;
|
|
|
|
|
if (paper == (BYTE)PaperSize::None || paper == (BYTE)PaperSize::UsStatement){
|
|
|
|
|
m_scanparam->paperAlign = PaperAlign::Rot0;
|
|
|
|
|
m_scanparam->en_sizecheck = 0;
|
|
|
|
|
}
|
|
|
|
|
if (paper == (byte)PaperSize::UsStatement){
|
|
|
|
|
if (paper == (BYTE)PaperSize::UsStatement){
|
|
|
|
|
m_autosize = (UInt16)AutoSize::None;
|
|
|
|
|
m_autoboarderdetcet = false;
|
|
|
|
|
m_scanparam->is_autocrop = 0;
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
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;
|
|
|
|
|
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 CapSupGetAllReset<byte, PaperSize, CapType::ISupportedSizes>(msg, data, { PaperSize::A4,PaperSize::A5,PaperSize::A6,
|
|
|
|
|
return CapSupGetAllReset<BYTE, PaperSize, CapType::ISupportedSizes>(msg, data, { PaperSize::A4,PaperSize::A5,PaperSize::A6,
|
|
|
|
|
PaperSize::IsoB5,PaperSize::IsoB6,PaperSize::UsLetter,
|
|
|
|
|
PaperSize::UsLegal,PaperSize::None,(PaperSize)PaperSizeEx::K16
|
|
|
|
|
#ifndef G300
|
|
|
|
@ -1040,7 +1041,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
m_scanparam->en_sizecheck = mech;
|
|
|
|
|
return success();
|
|
|
|
|
}
|
|
|
|
|
return CapSupGetAllResetEx<byte, Bool, CapType(CapTypeEx::TwEx_SizeDetect)>(msg, data, { FALSE,TRUE }, m_scanparam->en_sizecheck, false, m_scanparam->en_sizecheck, 0);
|
|
|
|
|
return CapSupGetAllResetEx<BYTE, Bool, CapType(CapTypeEx::TwEx_SizeDetect)>(msg, data, { FALSE,TRUE }, m_scanparam->en_sizecheck, false, m_scanparam->en_sizecheck, 0);
|
|
|
|
|
};
|
|
|
|
|
#endif // !ISG100
|
|
|
|
|
#endif // G200
|
|
|
|
@ -1155,7 +1156,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
m_scanparam->is_autodiscradblank_normal = m_scanparam->is_autodiscradblank_vince = m_scanparam->en_fold = 0;
|
|
|
|
|
return success();
|
|
|
|
|
}
|
|
|
|
|
return CapSupGetAllReset<byte, Bool, CapType::DuplexEnabled>(msg, data, m_scanparam->is_duplex, Bool(true));
|
|
|
|
|
return CapSupGetAllReset<BYTE, Bool, CapType::DuplexEnabled>(msg, data, m_scanparam->is_duplex, Bool(true));
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
m_query[CapType::AutoFeed] = msgSupportGetAllSetReset;
|
|
|
|
@ -1192,7 +1193,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
m_scanparam->autodescrew = (bool)atuodsw;
|
|
|
|
|
return success();
|
|
|
|
|
}
|
|
|
|
|
return CapSupGetAllReset<byte, bool, CapType::IAutomaticDeskew>(msg,data, m_scanparam->autodescrew,true);
|
|
|
|
|
return CapSupGetAllReset<BYTE, bool, CapType::IAutomaticDeskew>(msg,data, m_scanparam->autodescrew,true);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
m_query[(CapType)(CapTypeEx::TwEx_SwitchFrontBack)] = msgSupportGetAllSetReset;
|
|
|
|
@ -1202,7 +1203,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
m_scanparam->is_switchfrontback = mech;
|
|
|
|
|
return success();
|
|
|
|
|
}
|
|
|
|
|
return CapSupGetAllResetEx<byte, Bool, (CapType)CapTypeEx::TwEx_SwitchFrontBack>(msg, data, { FALSE,TRUE }, m_scanparam->is_switchfrontback, (Bool)false, m_scanparam->is_switchfrontback ? 1 : 0, 0);
|
|
|
|
|
return CapSupGetAllResetEx<BYTE, Bool, (CapType)CapTypeEx::TwEx_SwitchFrontBack>(msg, data, { FALSE,TRUE }, m_scanparam->is_switchfrontback, (Bool)false, m_scanparam->is_switchfrontback ? 1 : 0, 0);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
m_query[CapType::IAutomaticRotate] = msgSupportGetAllSetReset;
|
|
|
|
@ -1214,12 +1215,12 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
m_scanparam->imageRotateDegree = 0.0f;
|
|
|
|
|
return success();
|
|
|
|
|
}
|
|
|
|
|
return CapSupGetAllReset<byte, bool, CapType::IAutomaticRotate>(msg, data, m_scanparam->is_autotext, false);
|
|
|
|
|
return CapSupGetAllReset<BYTE, bool, CapType::IAutomaticRotate>(msg, data, m_scanparam->is_autotext, false);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
m_query[CapType::IAutomaticCropUsesFrame] = msgSupportGetAll;
|
|
|
|
|
m_caps[CapType::IAutomaticCropUsesFrame] = [this](Msg msg, Capability& data)->Result {
|
|
|
|
|
return CapSupGetAll<byte, bool, CapType::IAutomaticCropUsesFrame>(msg, data, m_scanparam->is_autocrop, false);
|
|
|
|
|
return CapSupGetAll<BYTE, bool, CapType::IAutomaticCropUsesFrame>(msg, data, m_scanparam->is_autocrop, false);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
m_query[CapType::AutoScan] = msgSupportGetAllSetReset;
|
|
|
|
@ -1238,13 +1239,13 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
if (Msg::Set == msg) {
|
|
|
|
|
auto autosize = data.currentItem<CapType::IAutoSize>();
|
|
|
|
|
if (autosize == AutoSize::Auto){
|
|
|
|
|
if(m_scanparam->papertype==(byte)PaperSize::UsStatement){
|
|
|
|
|
if(m_scanparam->papertype==(BYTE)PaperSize::UsStatement){
|
|
|
|
|
m_scanparam->is_autocrop = 0;
|
|
|
|
|
m_autoboarderdetcet = false;
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
m_scanparam->is_autocrop = 1;
|
|
|
|
|
m_scanparam->papertype = (byte)Twpp::PaperSize::None;
|
|
|
|
|
m_scanparam->papertype = (BYTE)Twpp::PaperSize::None;
|
|
|
|
|
m_scanparam->paperAlign = PaperAlign::Rot0;
|
|
|
|
|
m_autoboarderdetcet = true;
|
|
|
|
|
}
|
|
|
|
@ -1264,9 +1265,9 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
if (Msg::Set == msg) {
|
|
|
|
|
auto autodetectborder = data.currentItem<CapType::IAutomaticBorderDetection>();
|
|
|
|
|
if (autodetectborder){
|
|
|
|
|
if(m_scanparam->papertype!=(byte)PaperSize::UsStatement){
|
|
|
|
|
if(m_scanparam->papertype!=(BYTE)PaperSize::UsStatement){
|
|
|
|
|
m_scanparam->is_autocrop = true;
|
|
|
|
|
m_scanparam->papertype = (byte)Twpp::PaperSize::None;
|
|
|
|
|
m_scanparam->papertype = (BYTE)Twpp::PaperSize::None;
|
|
|
|
|
m_scanparam->paperAlign = PaperAlign::Rot0;
|
|
|
|
|
m_autosize = (UInt16)AutoSize::Auto;
|
|
|
|
|
}
|
|
|
|
@ -1284,7 +1285,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
//m_caps[CapType::IImageMerge] = [this](Msg msg, Capability& data)->Result {
|
|
|
|
|
// if (Msg::Set == msg) {
|
|
|
|
|
// auto autocrop = data.currentItem<CapType::IImageMerge>();
|
|
|
|
|
// m_scanparam->en_fold = (byte)autocrop;
|
|
|
|
|
// m_scanparam->en_fold = (BYTE)autocrop;
|
|
|
|
|
// if ((UInt16)autocrop != 0){
|
|
|
|
|
// m_scanparam->is_duplex = 1;
|
|
|
|
|
// m_scanparam->autodescrew = 1;//合并可用时 默认自动纠偏
|
|
|
|
@ -1292,7 +1293,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
// }
|
|
|
|
|
// return success();
|
|
|
|
|
// }
|
|
|
|
|
// return CapSupGetAllResetEx<byte, UInt16, CapType::IImageMerge>(msg, data, m_scanparam->en_fold, 0);
|
|
|
|
|
// return CapSupGetAllResetEx<BYTE, UInt16, CapType::IImageMerge>(msg, data, m_scanparam->en_fold, 0);
|
|
|
|
|
//};
|
|
|
|
|
|
|
|
|
|
m_query[CapType(CapTypeEx::TwEx_EnFold)] = msgSupportGetAllSetReset;
|
|
|
|
@ -1307,7 +1308,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
}
|
|
|
|
|
return success();
|
|
|
|
|
}
|
|
|
|
|
return CapSupGetAllResetEx<byte, Int32, (CapType)CapTypeEx::TwEx_EnFold>(msg, data, { 0,1 }, m_scanparam->en_fold, 0,m_scanparam->en_fold ? 1 : 0, 0);
|
|
|
|
|
return CapSupGetAllResetEx<BYTE, Int32, (CapType)CapTypeEx::TwEx_EnFold>(msg, data, { 0,1 }, m_scanparam->en_fold, 0,m_scanparam->en_fold ? 1 : 0, 0);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
m_query[CapType::IAutoDiscardBlankPages] = msgSupportGetAllSetReset;
|
|
|
|
@ -1347,7 +1348,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
m_scanparam->is_autodiscradblank_normal = 0;
|
|
|
|
|
return success();
|
|
|
|
|
}
|
|
|
|
|
return CapSupGetAllResetEx<byte, Bool, (CapType)CapTypeEx::TwEx_IAutoDiscardBlankVince>(msg, data, { FALSE,TRUE }, m_scanparam->is_autodiscradblank_normal, Bool(false), m_scanparam->is_autodiscradblank_normal ? 1 : 0, 0);
|
|
|
|
|
return CapSupGetAllResetEx<BYTE, Bool, (CapType)CapTypeEx::TwEx_IAutoDiscardBlankVince>(msg, data, { FALSE,TRUE }, m_scanparam->is_autodiscradblank_normal, Bool(false), m_scanparam->is_autodiscradblank_normal ? 1 : 0, 0);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
m_query[(CapType)(CapTypeEx::TwEx_IBackRotate180)] = msgSupportGetAllSetReset;
|
|
|
|
@ -1359,7 +1360,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
m_scanparam->is_duplex = 1;
|
|
|
|
|
return success();
|
|
|
|
|
}
|
|
|
|
|
return CapSupGetAllResetEx<byte, Bool, (CapType)CapTypeEx::TwEx_IBackRotate180>(msg, data, { FALSE,TRUE }, m_scanparam->is_backrotate180, Bool(false), m_scanparam->is_backrotate180 ? 1 : 0, 0);
|
|
|
|
|
return CapSupGetAllResetEx<BYTE, Bool, (CapType)CapTypeEx::TwEx_IBackRotate180>(msg, data, { FALSE,TRUE }, m_scanparam->is_backrotate180, Bool(false), m_scanparam->is_backrotate180 ? 1 : 0, 0);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//填黑框
|
|
|
|
@ -1370,7 +1371,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
m_scanparam->fillbackground = mech;
|
|
|
|
|
return success();
|
|
|
|
|
}
|
|
|
|
|
return CapSupGetAllResetEx<byte, Bool, (CapType)CapTypeEx::TwEx_IFillBackground>(msg, data, { FALSE,TRUE }, m_scanparam->fillbackground, Bool(true), m_scanparam->fillbackground ? 1 : 0, 1);
|
|
|
|
|
return CapSupGetAllResetEx<BYTE, Bool, (CapType)CapTypeEx::TwEx_IFillBackground>(msg, data, { FALSE,TRUE }, m_scanparam->fillbackground, Bool(true), m_scanparam->fillbackground ? 1 : 0, 1);
|
|
|
|
|
};
|
|
|
|
|
//裁剪纠偏轮廓缩进像素
|
|
|
|
|
m_query[(CapType)(CapTypeEx::TwEx_CroporDesaskewIndent)] = msgSupportGetAllSetReset;
|
|
|
|
@ -1427,7 +1428,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
m_scanparam->fillhole.is_fillhole = mech;
|
|
|
|
|
return success();
|
|
|
|
|
}
|
|
|
|
|
return CapSupGetAllResetEx<byte, Bool, (CapType)CapTypeEx::TwEx_IFillHole>(msg, data, { FALSE,TRUE }, m_scanparam->fillhole.is_fillhole, Bool(true), m_scanparam->fillhole.is_fillhole ? 1 : 0, 0);
|
|
|
|
|
return CapSupGetAllResetEx<BYTE, Bool, (CapType)CapTypeEx::TwEx_IFillHole>(msg, data, { FALSE,TRUE }, m_scanparam->fillhole.is_fillhole, Bool(true), m_scanparam->fillhole.is_fillhole ? 1 : 0, 0);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
m_query[(CapType)(CapTypeEx::TwEx_IFillHoleRatio)] = msgSupportGetAllSetReset;
|
|
|
|
@ -1452,7 +1453,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
m_scanparam->detachnoise.is_detachnoise = mech;
|
|
|
|
|
return success();
|
|
|
|
|
}
|
|
|
|
|
return CapSupGetAllResetEx<byte, Bool, (CapType)CapTypeEx::TwEx_IDetachNoise>(msg, data, { FALSE,TRUE }, m_scanparam->detachnoise.is_detachnoise, FALSE, m_scanparam->detachnoise.is_detachnoise ? 1 : 0, 0);
|
|
|
|
|
return CapSupGetAllResetEx<BYTE, Bool, (CapType)CapTypeEx::TwEx_IDetachNoise>(msg, data, { FALSE,TRUE }, m_scanparam->detachnoise.is_detachnoise, FALSE, m_scanparam->detachnoise.is_detachnoise ? 1 : 0, 0);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
m_query[(CapType)(CapTypeEx::TwEx_IDetachNoiseValue)] = msgSupportGetAllSetReset;
|
|
|
|
@ -1472,13 +1473,13 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
m_caps[(CapType)(CapTypeEx::TwEx_IMultiOutputRed)] = [this](Msg msg, Capability& data)->Result {
|
|
|
|
|
if (Msg::Set == msg) {
|
|
|
|
|
auto mech = data.currentItem<Bool>();
|
|
|
|
|
if (m_scanparam->pixtype == (byte)PixelType::Rgb)
|
|
|
|
|
if (m_scanparam->pixtype == (BYTE)PixelType::Rgb)
|
|
|
|
|
m_scanparam->multi_output_red = mech;
|
|
|
|
|
else
|
|
|
|
|
m_scanparam->multi_output_red = 0;//非彩色 不能使用多流除红
|
|
|
|
|
return success();
|
|
|
|
|
}
|
|
|
|
|
return CapSupGetAllResetEx<byte, Bool, (CapType)CapTypeEx::TwEx_IMultiOutputRed>(msg, data, { FALSE,TRUE }, m_scanparam->multi_output_red, FALSE, m_scanparam->multi_output_red ? 1 : 0, 0);
|
|
|
|
|
return CapSupGetAllResetEx<BYTE, Bool, (CapType)CapTypeEx::TwEx_IMultiOutputRed>(msg, data, { FALSE,TRUE }, m_scanparam->multi_output_red, FALSE, m_scanparam->multi_output_red ? 1 : 0, 0);
|
|
|
|
|
};
|
|
|
|
|
//答题卡除红
|
|
|
|
|
m_query[(CapType)(CapTypeEx::TwEx_HsvCorrect)] = msgSupportGetAllSetReset;
|
|
|
|
@ -1488,7 +1489,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
m_scanparam->hsvcorrect = mech;
|
|
|
|
|
return success();
|
|
|
|
|
}
|
|
|
|
|
return CapSupGetAllResetEx<byte, Bool, (CapType)CapTypeEx::TwEx_HsvCorrect>(msg, data, { FALSE,TRUE }, m_scanparam->hsvcorrect, FALSE, m_scanparam->hsvcorrect ? 1 : 0, 0);
|
|
|
|
|
return CapSupGetAllResetEx<BYTE, Bool, (CapType)CapTypeEx::TwEx_HsvCorrect>(msg, data, { FALSE,TRUE }, m_scanparam->hsvcorrect, FALSE, m_scanparam->hsvcorrect ? 1 : 0, 0);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
m_query[CapType::IFilter] = msgSupportGetAllSetReset;
|
|
|
|
@ -1496,15 +1497,15 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
if (Msg::Set == msg) {
|
|
|
|
|
auto mech = data.currentItem<CapType::IFilter>();
|
|
|
|
|
if (mech == Filter::None || mech == Filter::Red || mech == Filter::Green || mech == Filter::Blue) {
|
|
|
|
|
m_scanparam->filter = (byte)mech;
|
|
|
|
|
m_scanparam->filter = (BYTE)mech;
|
|
|
|
|
if (mech != Filter::None){
|
|
|
|
|
m_scanparam->enhance_color = (byte)Enchace_Color::Enhance_None;
|
|
|
|
|
m_scanparam->enhance_color = (BYTE)Enchace_Color::Enhance_None;
|
|
|
|
|
}
|
|
|
|
|
return success();
|
|
|
|
|
}
|
|
|
|
|
return badValue();
|
|
|
|
|
}
|
|
|
|
|
return CapSupGetAllReset<byte, Filter, CapType::IFilter>(msg, data, { Filter::Red,Filter::Green,Filter::Blue,Filter::None }, m_scanparam->filter, Filter::None, m_scanparam->filter, 3);
|
|
|
|
|
return CapSupGetAllReset<BYTE, Filter, CapType::IFilter>(msg, data, { Filter::Red,Filter::Green,Filter::Blue,Filter::None }, m_scanparam->filter, Filter::None, m_scanparam->filter, 3);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//颜色增强
|
|
|
|
@ -1512,22 +1513,22 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
m_caps[(CapType)(CapTypeEx::TwEx_IEnhanceColor)] = [this](Msg msg, Capability& data)->Result {
|
|
|
|
|
if (Msg::Set == msg) {
|
|
|
|
|
auto mech = data.currentItem<Int16>();
|
|
|
|
|
if (m_scanparam->pixtype == (byte)PixelType::Rgb){
|
|
|
|
|
m_scanparam->enhance_color = (byte)Enchace_Color::Enhance_None;
|
|
|
|
|
if (m_scanparam->pixtype == (BYTE)PixelType::Rgb){
|
|
|
|
|
m_scanparam->enhance_color = (BYTE)Enchace_Color::Enhance_None;
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
if (mech == Enchace_Color::Enhance_None || mech == Enchace_Color::Enhance_Red || mech == Enchace_Color::Enhance_Green || mech == Enchace_Color::Enhance_Blue)
|
|
|
|
|
{
|
|
|
|
|
m_scanparam->enhance_color = (byte)mech;
|
|
|
|
|
if (mech != (byte)Enchace_Color::Enhance_None)
|
|
|
|
|
m_scanparam->filter = (byte)Filter::None;
|
|
|
|
|
m_scanparam->enhance_color = (BYTE)mech;
|
|
|
|
|
if (mech != (BYTE)Enchace_Color::Enhance_None)
|
|
|
|
|
m_scanparam->filter = (BYTE)Filter::None;
|
|
|
|
|
|
|
|
|
|
if (m_scanparam->pixtype == (int)PixelType::BlackWhite)
|
|
|
|
|
{
|
|
|
|
|
if (m_scanparam->filter == (byte)Filter::None && m_scanparam->enhance_color == (byte)Enchace_Color::Enhance_None)
|
|
|
|
|
if (m_scanparam->filter == (BYTE)Filter::None && m_scanparam->enhance_color == (BYTE)Enchace_Color::Enhance_None)
|
|
|
|
|
{
|
|
|
|
|
m_scanparam->filter = (byte)Filter::None;
|
|
|
|
|
m_scanparam->enhance_color = (byte)Enchace_Color::Enhance_Red;
|
|
|
|
|
m_scanparam->filter = (BYTE)Filter::None;
|
|
|
|
|
m_scanparam->enhance_color = (BYTE)Enchace_Color::Enhance_Red;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return success();
|
|
|
|
@ -1535,7 +1536,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
}
|
|
|
|
|
return badValue();
|
|
|
|
|
}
|
|
|
|
|
return CapSupGetAllResetEx<byte, Enchace_Color, (CapType)CapTypeEx::TwEx_IEnhanceColor>(msg, data, { Enchace_Color::Enhance_None,Enchace_Color::Enhance_Red,Enchace_Color::Enhance_Green,Enchace_Color::Enhance_Blue }, m_scanparam->enhance_color, Enchace_Color::Enhance_None, m_scanparam->enhance_color, 0);
|
|
|
|
|
return CapSupGetAllResetEx<BYTE, Enchace_Color, (CapType)CapTypeEx::TwEx_IEnhanceColor>(msg, data, { Enchace_Color::Enhance_None,Enchace_Color::Enhance_Red,Enchace_Color::Enhance_Green,Enchace_Color::Enhance_Blue }, m_scanparam->enhance_color, Enchace_Color::Enhance_None, m_scanparam->enhance_color, 0);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
m_query[(CapType)(CapTypeEx::TwEx_Sharpen)] = msgSupportGetAllSetReset;
|
|
|
|
@ -1544,10 +1545,10 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
auto mech = data.currentItem<Int16>();
|
|
|
|
|
if (m_scanparam->pixtype == (int)PixelType::BlackWhite)
|
|
|
|
|
return badValue();
|
|
|
|
|
m_scanparam->sharpen = (byte)mech;
|
|
|
|
|
m_scanparam->sharpen = (BYTE)mech;
|
|
|
|
|
return success();
|
|
|
|
|
}
|
|
|
|
|
return CapSupGetAllResetEx<byte, SharpenBlur, (CapType)CapTypeEx::TwEx_Sharpen>(msg, data, { SharpenBlur::Sharpen_None,SharpenBlur::Sharpen_Normal,SharpenBlur::Sharpen_More,SharpenBlur::Sharpen_Blur,SharpenBlur::Sharpen_Blur_More }, m_scanparam->sharpen, SharpenBlur::Sharpen_None, m_scanparam->sharpen, 0);
|
|
|
|
|
return CapSupGetAllResetEx<BYTE, SharpenBlur, (CapType)CapTypeEx::TwEx_Sharpen>(msg, data, { SharpenBlur::Sharpen_None,SharpenBlur::Sharpen_Normal,SharpenBlur::Sharpen_More,SharpenBlur::Sharpen_Blur,SharpenBlur::Sharpen_Blur_More }, m_scanparam->sharpen, SharpenBlur::Sharpen_None, m_scanparam->sharpen, 0);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*亮度 对比度 gamma range类型 Range 类型*/
|
|
|
|
@ -1691,7 +1692,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
m_scanparam->hardwarecaps.en_skrewdetect = mech;
|
|
|
|
|
return success();
|
|
|
|
|
}
|
|
|
|
|
return CapSupGetAllResetEx<byte, Bool, (CapType)CapTypeEx::TwEx_ScrewDetectEnable>(msg, data, { FALSE,TRUE }, m_scanparam->sharpen, TRUE, m_scanparam->hardwarecaps.en_skrewdetect ? 1 : 0, 1);
|
|
|
|
|
return CapSupGetAllResetEx<BYTE, Bool, (CapType)CapTypeEx::TwEx_ScrewDetectEnable>(msg, data, { FALSE,TRUE }, m_scanparam->sharpen, TRUE, m_scanparam->hardwarecaps.en_skrewdetect ? 1 : 0, 1);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
m_query[(CapType)(CapTypeEx::TwEx_ScrewLevel)] = msgSupportGetAllSetReset;
|
|
|
|
@ -1704,7 +1705,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
}
|
|
|
|
|
return badValue();
|
|
|
|
|
}
|
|
|
|
|
return CapSupGetAllResetEx<byte, UInt8, (CapType)CapTypeEx::TwEx_ScrewLevel>(msg, data, m_scanparam->hardwarecaps.skrewdetectlevel, 3);
|
|
|
|
|
return CapSupGetAllResetEx<BYTE, UInt8, (CapType)CapTypeEx::TwEx_ScrewLevel>(msg, data, m_scanparam->hardwarecaps.skrewdetectlevel, 3);
|
|
|
|
|
};
|
|
|
|
|
//装订检测
|
|
|
|
|
m_query[(CapType)(CapTypeEx::TwEx_StableDetectEnable)] = msgSupportGetAllSetReset;
|
|
|
|
@ -1714,7 +1715,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
m_scanparam->hardwarecaps.en_stapledetect = mech;
|
|
|
|
|
return success();
|
|
|
|
|
}
|
|
|
|
|
return CapSupGetAllResetEx<byte, UInt8, (CapType)CapTypeEx::TwEx_StableDetectEnable>(msg, data, { FALSE,TRUE }, m_scanparam->hardwarecaps.en_stapledetect, FALSE, m_scanparam->hardwarecaps.en_stapledetect ? 1 : 0, 0);
|
|
|
|
|
return CapSupGetAllResetEx<BYTE, UInt8, (CapType)CapTypeEx::TwEx_StableDetectEnable>(msg, data, { FALSE,TRUE }, m_scanparam->hardwarecaps.en_stapledetect, FALSE, m_scanparam->hardwarecaps.en_stapledetect ? 1 : 0, 0);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
m_query[(CapType)(CapTypeEx::TwEx_DogEarDelection)] = msgSupportGetAllSetReset;
|
|
|
|
@ -1724,7 +1725,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
m_scanparam->is_dogeardetection= mech;
|
|
|
|
|
return success();
|
|
|
|
|
}
|
|
|
|
|
return CapSupGetAllResetEx<byte, Bool, (CapType)CapTypeEx::TwEx_DogEarDelection>(msg, data, m_scanparam->is_dogeardetection, FALSE);
|
|
|
|
|
return CapSupGetAllResetEx<BYTE, Bool, (CapType)CapTypeEx::TwEx_DogEarDelection>(msg, data, m_scanparam->is_dogeardetection, FALSE);
|
|
|
|
|
};
|
|
|
|
|
//双张检测 与官方标准定义有所差异 此协议修改为bool型
|
|
|
|
|
m_query[CapType::DoubleFeedDetection] = msgSupportGetAllSetReset;
|
|
|
|
@ -1734,7 +1735,7 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
m_scanparam->hardwarecaps.en_doublefeed = mech;
|
|
|
|
|
return success();
|
|
|
|
|
}
|
|
|
|
|
return CapSupGetAllResetEx<byte, Bool, CapType::DoubleFeedDetection>(msg, data, m_scanparam->hardwarecaps.en_doublefeed, TRUE);
|
|
|
|
|
return CapSupGetAllResetEx<BYTE, Bool, CapType::DoubleFeedDetection>(msg, data, m_scanparam->hardwarecaps.en_doublefeed, TRUE);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#ifdef G200
|
|
|
|
@ -1742,13 +1743,13 @@ Result HuagaoDs::identityOpenDs(const Identity&) {
|
|
|
|
|
m_query[(CapType)(CapTypeEx::TwEx_LowPowerMode)] = msgSupportGetAllSetReset;
|
|
|
|
|
m_caps[(CapType)(CapTypeEx::TwEx_LowPowerMode)] = [this](Msg msg, Capability& data)->Result {
|
|
|
|
|
if (Msg::Set == msg) {
|
|
|
|
|
auto mech = data.currentItem<byte>();
|
|
|
|
|
auto mech = data.currentItem<BYTE>();
|
|
|
|
|
m_scanparam->hardwarecaps.lowpowermode = (LowPowerMode)mech;
|
|
|
|
|
return success();
|
|
|
|
|
}
|
|
|
|
|
return CapSupGetAllResetEx<LowPowerMode, byte, (CapType)CapTypeEx::TwEx_LowPowerMode>(msg, data,
|
|
|
|
|
return CapSupGetAllResetEx<LowPowerMode, BYTE, (CapType)CapTypeEx::TwEx_LowPowerMode>(msg, data,
|
|
|
|
|
{ LowPowerMode::Min_None,LowPowerMode::Min_5,LowPowerMode::Min_10,LowPowerMode::Min_20, LowPowerMode::Min_30, LowPowerMode::Min_60, LowPowerMode::Min_120, LowPowerMode::Min_240 },
|
|
|
|
|
m_scanparam->hardwarecaps.lowpowermode, LowPowerMode::Min_30,(byte)m_scanparam->hardwarecaps.lowpowermode, 4);
|
|
|
|
|
m_scanparam->hardwarecaps.lowpowermode, LowPowerMode::Min_30,(BYTE)m_scanparam->hardwarecaps.lowpowermode, 4);
|
|
|
|
|
};
|
|
|
|
|
#endif // LANXUM
|
|
|
|
|
return success();
|
|
|
|
|