huago-corrcet_tools/HuaGoCorrect/scn_config.cpp

169 lines
3.5 KiB
C++
Raw Blame History

#include "stdafx.h"
#include "scn_config.h"
#include "math.h"
#include "twain.h"
typedef unsigned short uint16_t;
hgConfigClass::hgConfigClass()
{
initpaperTypes();
initPixType();
initResolution();
}
hgConfigClass::~hgConfigClass()
{
}
void hgConfigClass::settwSS(UINT32 value)
{
UINT32 uval;
if (ContainspaperTypesKey(value))
{
uval = paperTypes[value];
}
else
{
uval = 2;
}
for (size_t i = 1; i < 6; i++)
{
setBit(i, ((uval >> i - 1) & 0x1) == 0x01);
}
//printf("settwSS: %d\n", Data);
}
void hgConfigClass::setTwPixelType(UINT32 value)
{
UINT32 uval;
if (ContainsPixTypeKey(value))
uval = pixType[value];
else
uval = 2;
setBit(6, uval == 0x01);
}
void hgConfigClass::setResolution(UINT32 value)
{
UINT32 uval;
if (ContainsResolutionKey(value))
uval = resolutions[value];
else
uval = 1;
for (size_t i = 7; i < 9; i++)
{
setBit(i, ((uval >> (i - 7)) & 0x1) == 0x01);
}
}
void hgConfigClass::setDoubleFeedEnable(bool value)
{
setBit(9, value);
}
void hgConfigClass::setStapleEnable(bool value)
{
setBit(10, value);
}
void hgConfigClass::setSkewDelection(bool value)
{
setBit(11, value);
}
void hgConfigClass::setSkewLevel0bit(bool value)
{
setBit(12, value);
}
void hgConfigClass::setSkewLevel1bit(bool value)
{
setBit(13, value);
}
void hgConfigClass::setSkewLevel2bit(bool value)
{
setBit(14, value);
}
void hgConfigClass::setIsConrrect(bool value)
{
setBit(18, value);
}
UINT32 hgConfigClass::GetData()
{
return m_data.to_ulong();
}
void hgConfigClass::initpaperTypes()
{
paperTypes.insert(std::pair<uint16_t, UINT32>(11, 0));//A3
paperTypes.insert(std::pair<uint16_t, UINT32>(1, 1));//A4
paperTypes.insert(std::pair<uint16_t, UINT32>(60, 2));//A4R
paperTypes.insert(std::pair<uint16_t, UINT32>(5, 2));//A5
paperTypes.insert(std::pair<uint16_t, UINT32>(61, 2));//A5R
paperTypes.insert(std::pair<uint16_t, UINT32>(13, 2));//A6
paperTypes.insert(std::pair<uint16_t, UINT32>(62, 2));//A6R
paperTypes.insert(std::pair<uint16_t, UINT32>(6, 0));//B4
paperTypes.insert(std::pair<uint16_t, UINT32>(2, 0));//B5
paperTypes.insert(std::pair<uint16_t, UINT32>(70, 1));//B5R
paperTypes.insert(std::pair<uint16_t, UINT32>(7, 2));//B6
paperTypes.insert(std::pair<uint16_t, UINT32>(71, 2));//B6R
paperTypes.insert(std::pair<uint16_t, UINT32>(3, 1));//LETTER
paperTypes.insert(std::pair<uint16_t, UINT32>(80, 2));//LETTERR
paperTypes.insert(std::pair<uint16_t, UINT32>(81, 0));//DOUBLE LETTER
paperTypes.insert(std::pair<uint16_t, UINT32>(4, 0));//LEGAL
paperTypes.insert(std::pair<uint16_t, UINT32>(90, 0));//Auto <20><><EFBFBD><EFBFBD>A3<41><33><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8>
paperTypes.insert(std::pair<uint16_t, UINT32>(91, 16));//<2F><><EFBFBD>ĸ<EFBFBD>
}
void hgConfigClass::initPixType()
{
pixType.insert(std::pair<uint16_t, UINT32>(0, 0));//BW
pixType.insert(std::pair<uint16_t, UINT32>(1, 0));//Gray
pixType.insert(std::pair<uint16_t, UINT32>(2,1));//RGB
}
void hgConfigClass::initResolution()
{
resolutions.insert(std::pair<float, UINT32>(300, 2));//300
resolutions.insert(std::pair<float, UINT32>(200, 1));//200
resolutions.insert(std::pair<float, UINT32>(600, 3));//600
}
bool hgConfigClass::ContainspaperTypesKey(uint16_t key)
{
if (paperTypes.count(key) > 0)
{
return true;
}
return false;
}
bool hgConfigClass::ContainsPixTypeKey(uint16_t key)
{
if (pixType.count(key)>0)
{
return true;
}
return false;
}
bool hgConfigClass::ContainsResolutionKey(float key)
{
if (resolutions.count(key)>0)
{
return true;
}
return false;
}
void hgConfigClass::setBit(int i, bool flag)
{
m_data.set(i -1, flag);
}