106 lines
5.7 KiB
C++
106 lines
5.7 KiB
C++
#ifndef SIMPLEDS_HPP
|
|
#define SIMPLEDS_HPP
|
|
|
|
#include <unordered_map>
|
|
#include <vector>
|
|
#include <atlstr.h>
|
|
#include <functional>
|
|
#include <queue>
|
|
#include <string>
|
|
#include "twpp.hpp"
|
|
#include "../huagaotwain.h"
|
|
|
|
namespace std {
|
|
|
|
template<>
|
|
struct hash<Twpp::CapType> {
|
|
size_t operator()(Twpp::CapType cap) const {
|
|
return hash<Twpp::UInt16>()(static_cast<Twpp::UInt16>(cap));
|
|
}
|
|
};
|
|
|
|
}
|
|
|
|
class twain_ui;
|
|
|
|
class huagao_ds : public Twpp::SourceFromThis<huagao_ds> {
|
|
std::unordered_map<Twpp::CapType, std::function<Twpp::Result(Twpp::Msg msg, Twpp::Capability& data)>> m_caps;
|
|
std::unordered_map<Twpp::CapType, Twpp::MsgSupport> m_query;
|
|
std::unique_ptr <scanner, delete_scanner> scanner_;
|
|
Twpp::SetupFileXfer m_fileXfer;
|
|
Twpp::XferMech m_capXferMech = Twpp::XferMech::Native;
|
|
std::unique_ptr<std::thread> memoryinfo;
|
|
std::unique_ptr<twain_ui> ui_;
|
|
bool m_memoryfalg = true;
|
|
bool m_bFeederEnabled = true;
|
|
bool m_bAutoFeed = true;
|
|
HANDLE singleton_ = NULL;
|
|
Twpp::Bool m_autoscan = true;
|
|
int automaticcolortype_ = 0;
|
|
bool multi_out_ = false;
|
|
bool m_bIndicator = true;
|
|
|
|
static std::string get_hidedlg_path(void);
|
|
static void showmsg(const char* msg, int err);
|
|
static void scan_event(int sane_event, void* data, unsigned int* len, void* param);
|
|
|
|
void CapabilityPrintf(Twpp::Msg msg, std::string capability, std::string value = "");
|
|
Twpp::Result capCommon(const Twpp::Identity& origin, Twpp::Msg msg, Twpp::Capability& data);
|
|
Twpp::Result showTwainUI(Twpp::UserInterface& data, bool bUiOnly = false);
|
|
void init_support_caps(void);
|
|
void init_support_caps_ex(void);
|
|
void on_scan_event(int sane_event, void* data, unsigned int* len);
|
|
|
|
public:
|
|
huagao_ds();
|
|
virtual ~huagao_ds();
|
|
|
|
static const Twpp::Identity& defaultIdentity() noexcept;
|
|
static Twpp::Result selectIdentity(Twpp::Identity& ident) noexcept;
|
|
static Twpp::ConditionCode condition_code_from_hg_error(int hgerr);
|
|
|
|
// SourceFromThis interface
|
|
protected:
|
|
typedef Twpp::SourceFromThis<huagao_ds> Base;
|
|
|
|
virtual Twpp::Result capabilityGet(const Twpp::Identity& origin, Twpp::Capability& data) override;
|
|
virtual Twpp::Result capabilityGetCurrent(const Twpp::Identity& origin, Twpp::Capability& data) override;
|
|
virtual Twpp::Result capabilityGetDefault(const Twpp::Identity& origin, Twpp::Capability& data) override;
|
|
virtual Twpp::Result capabilityQuerySupport(const Twpp::Identity& origin, Twpp::Capability& data) override;
|
|
virtual Twpp::Result capabilityReset(const Twpp::Identity& origin, Twpp::Capability& data) override;
|
|
virtual Twpp::Result capabilityResetAll(const Twpp::Identity& origin) override;
|
|
virtual Twpp::Result capabilitySet(const Twpp::Identity& origin, Twpp::Capability& data) override;
|
|
virtual Twpp::Result eventProcess(const Twpp::Identity& origin, Twpp::Event& data) override;
|
|
virtual Twpp::Result deviceEventGet(const Twpp::Identity& origin, Twpp::DeviceEvent& data) override;
|
|
virtual Twpp::Result identityOpenDs(const Twpp::Identity& origin) override;
|
|
virtual Twpp::Result identityCloseDs(const Twpp::Identity& origin) override;
|
|
virtual Twpp::Result pendingXfersGet(const Twpp::Identity& origin, Twpp::PendingXfers& data) override;
|
|
virtual Twpp::Result pendingXfersEnd(const Twpp::Identity& origin, Twpp::PendingXfers& data) override;
|
|
virtual Twpp::Result pendingXfersReset(const Twpp::Identity& origin, Twpp::PendingXfers& data) override;
|
|
virtual Twpp::Result setupMemXferGet(const Twpp::Identity& origin, Twpp::SetupMemXfer& data) override;
|
|
virtual Twpp::Result userInterfaceDisable(const Twpp::Identity& origin, Twpp::UserInterface& data) override;
|
|
virtual Twpp::Result userInterfaceEnable(const Twpp::Identity& origin, Twpp::UserInterface& data) override;
|
|
virtual Twpp::Result userInterfaceEnableUiOnly(const Twpp::Identity& origin, Twpp::UserInterface& data) override;
|
|
virtual Twpp::Result imageInfoGet(const Twpp::Identity& origin, Twpp::ImageInfo& data) override;
|
|
virtual Twpp::Result imageLayoutGet(const Twpp::Identity& origin, Twpp::ImageLayout& data) override;
|
|
virtual Twpp::Result imageLayoutGetDefault(const Twpp::Identity& origin, Twpp::ImageLayout& data) override;
|
|
virtual Twpp::Result imageLayoutSet(const Twpp::Identity& origin, Twpp::ImageLayout& data) override;
|
|
virtual Twpp::Result imageLayoutReset(const Twpp::Identity& origin, Twpp::ImageLayout& data) override;
|
|
virtual Twpp::Result imageMemXferGet(const Twpp::Identity& origin, Twpp::ImageMemXfer& data) override;
|
|
virtual Twpp::Result imageNativeXferGet(const Twpp::Identity& origin, Twpp::ImageNativeXfer& data) override;
|
|
virtual Twpp::Result pendingXfersStopFeeder(const Twpp::Identity& origin, Twpp::PendingXfers& data) override;
|
|
virtual Twpp::Result imageFileXferGet(const Twpp::Identity& origin) override;
|
|
virtual Twpp::Result setupFileXferGet(const Twpp::Identity& origin, Twpp::SetupFileXfer& data) override;
|
|
virtual Twpp::Result setupFileXferGetDefault(const Twpp::Identity& origin, Twpp::SetupFileXfer& data) override;
|
|
virtual Twpp::Result setupFileXferSet(const Twpp::Identity& origin, Twpp::SetupFileXfer& data) override;
|
|
virtual Twpp::Result setupFileXferReset(const Twpp::Identity& origin, Twpp::SetupFileXfer& data) override;
|
|
virtual Twpp::Result call(const Twpp::Identity& origin, Twpp::DataGroup dg, Twpp::Dat dat, Twpp::Msg msg, void* data) override;
|
|
virtual Twpp::Result customDataGet(const Twpp::Identity& origin, Twpp::CustomData& data) override;
|
|
virtual Twpp::Result customDataSet(const Twpp::Identity& origin, Twpp::CustomData& data) override;
|
|
|
|
public:
|
|
void SetResoluton(const char* path, int resolution);
|
|
};
|
|
|
|
#endif // SIMPLEDS_HPP
|