#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(11, 0));//A3 paperTypes.insert(std::pair(1, 1));//A4 paperTypes.insert(std::pair(60, 2));//A4R paperTypes.insert(std::pair(5, 2));//A5 paperTypes.insert(std::pair(61, 2));//A5R paperTypes.insert(std::pair(13, 2));//A6 paperTypes.insert(std::pair(62, 2));//A6R paperTypes.insert(std::pair(6, 0));//B4 paperTypes.insert(std::pair(2, 0));//B5 paperTypes.insert(std::pair(70, 1));//B5R paperTypes.insert(std::pair(7, 2));//B6 paperTypes.insert(std::pair(71, 2));//B6R paperTypes.insert(std::pair(3, 1));//LETTER paperTypes.insert(std::pair(80, 2));//LETTERR paperTypes.insert(std::pair(81, 0));//DOUBLE LETTER paperTypes.insert(std::pair(4, 0));//LEGAL paperTypes.insert(std::pair(90, 0));//Auto 按照A3进行扫描 paperTypes.insert(std::pair(91, 16));//长文稿 } void hgConfigClass::initPixType() { pixType.insert(std::pair(0, 0));//BW pixType.insert(std::pair(1, 0));//Gray pixType.insert(std::pair(2,1));//RGB } void hgConfigClass::initResolution() { resolutions.insert(std::pair(300, 2));//300 resolutions.insert(std::pair(200, 1));//200 resolutions.insert(std::pair(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); }