#pragma once #include #include "sane/sane_ex.h" #include "config.h" class sane_dev { SANE_Handle hdev_; bool offline_; std::string name_; std::string cfg_name_; enum act_result { ACT_RESULT_NO_NEED = 0, ACT_RESULT_FAILED, ACT_RESULT_SUCCESS, }; bool apply(OPTSCHEME* schm); act_result apply(const SANE_Option_Descriptor* desc, int opt, const std::vector& vals); public: sane_dev(); ~sane_dev(); public: std::string name(void); std::string current_configuration_name(void); bool is_online(void); SANE_Handle handle(void); bool open(const std::string& name); bool apply_setting(OPTSCHEME* schm = nullptr); void set_online(bool online); void close(void); };