107 lines
2.2 KiB
C++
107 lines
2.2 KiB
C++
#pragma once
|
|
|
|
// image process interface classes
|
|
//
|
|
// created on 2022-12-14
|
|
//
|
|
|
|
#include "../../common/referer.h"
|
|
#include "../../common/packet.h"
|
|
|
|
enum img_proc_param
|
|
{
|
|
IMG_PROC_PARAM_DPI = 1, // double
|
|
IMG_PROC_PARAM_BPP, // uint8_t
|
|
IMG_PROC_PARAM_CHANNEL, // uint8_t
|
|
IMG_PROC_PARAM_COLOR, // uint8_t
|
|
IMG_PROC_PARAM_GAMMA, // (char*), custom structure
|
|
IMG_PROC_PARAM_BRIGHT, // double
|
|
IMG_PROC_PARAM_CONTRAST, // double
|
|
};
|
|
|
|
class parameter : public refer
|
|
{
|
|
data_type type_;
|
|
size_t bytes_;
|
|
union
|
|
{
|
|
bool b_val;
|
|
uint8_t n8_val;
|
|
uint16_t n16_val;
|
|
uint32_t n32_val;
|
|
uint64_t n64_val;
|
|
double d_val;
|
|
char *dyn_val;
|
|
}val_;
|
|
|
|
void clear(void);
|
|
void copy(const parameter& r);
|
|
|
|
protected:
|
|
virtual ~parameter();
|
|
|
|
public:
|
|
parameter();
|
|
parameter(bool val);
|
|
parameter(uint8_t val);
|
|
parameter(uint16_t val);
|
|
parameter(uint32_t val);
|
|
parameter(uint64_t val);
|
|
parameter(double val);
|
|
parameter(char* val, size_t bytes = 0);
|
|
parameter(parameter& r);
|
|
|
|
public:
|
|
parameter& operator=(bool val);
|
|
parameter& operator=(uint8_t val);
|
|
parameter& operator=(uint16_t val);
|
|
parameter& operator=(uint32_t val);
|
|
parameter& operator=(uint64_t val);
|
|
parameter& operator=(double val);
|
|
parameter& operator=(const char* val);
|
|
parameter& operator=(const std::string& val);
|
|
parameter& operator=(const parameter& r);
|
|
|
|
void* reset_buf(size_t bytes); // reset data type to string and with bytes space
|
|
void* value(size_t* len);
|
|
data_type type(void);
|
|
};
|
|
|
|
class paremeter_get : public refer
|
|
{
|
|
protected:
|
|
paremeter_get()
|
|
{}
|
|
virtual ~paremeter_get()
|
|
{}
|
|
|
|
public:
|
|
virtual parameter* get_parameter(img_proc_param ipp) = 0;
|
|
};
|
|
|
|
|
|
class event_handler;
|
|
|
|
class img_processor : public sane_cfg_provider
|
|
{
|
|
paremeter_get* param_get_;
|
|
event_handler* handler_;
|
|
|
|
public:
|
|
img_processor(paremeter_get*, event_handler*);
|
|
|
|
protected:
|
|
~img_processor();
|
|
|
|
// sane_cfg_provider
|
|
public:
|
|
virtual int32_t get_config(void* buf, size_t* len, const char* cfg_name = nullptr) override;
|
|
virtual int32_t set_config(const char* cfg_name, void* data, size_t* len) override;
|
|
|
|
public:
|
|
int32_t push_image(LPPACKIMAGE img, uint8_t* data, size_t len);
|
|
int32_t stop(void);
|
|
int32_t set_speed_first(bool first); // start as many threads as possible if 'first' was true, or down to ONE thread
|
|
};
|
|
|