#pragma once #include "s2t_api.h" class refer : public IRef { volatile long ref_; protected: refer(); virtual ~refer(); // IRef public: COM_API_OVERRIDE(long, add_ref(void)); COM_API_OVERRIDE(long, release(void)); }; class scanned_img : public IScanImg, virtual public refer { SANE_Parameters head_; unsigned char* data_; unsigned int bytes_; std::string file_header(SANE_ImageType type, float resolution); public: scanned_img(SANE_Parameters head, unsigned char* data); protected: ~scanned_img(); // IRef public: COM_API_OVERRIDE(long, add_ref(void)); COM_API_OVERRIDE(long, release(void)); // IScanImg public: COM_API_OVERRIDE(int, width(void)); COM_API_OVERRIDE(int, line_bytes(void)); COM_API_OVERRIDE(int, height(void)); COM_API_OVERRIDE(int, depth(void)); COM_API_OVERRIDE(int, channel(void)); COM_API_OVERRIDE(SANE_Frame, type(void)); COM_API_OVERRIDE(unsigned int, bytes(void)); COM_API_OVERRIDE(unsigned char*, bits(void)); COM_API_OVERRIDE(void, copy_header(SANE_Parameters* head)); };