88 lines
2.1 KiB
C
88 lines
2.1 KiB
C
|
#ifndef HGL_VSBASE_INCLUDE
|
|||
|
#define HGL_VSBASE_INCLUDE
|
|||
|
|
|||
|
namespace hgl
|
|||
|
{
|
|||
|
namespace vs
|
|||
|
{
|
|||
|
/**
|
|||
|
* 为方便程序处理,内存中仅支持以下格式
|
|||
|
*/
|
|||
|
enum class DataFormat
|
|||
|
{
|
|||
|
U8,U16,U32,
|
|||
|
S8,S16,S32,
|
|||
|
F32,F64,
|
|||
|
};
|
|||
|
|
|||
|
struct VSDataSource
|
|||
|
{
|
|||
|
void *pixel_data=nullptr; ///<象素数据
|
|||
|
|
|||
|
public:
|
|||
|
|
|||
|
virtual ~VSDataSource()=0;
|
|||
|
};//class VSDataSource
|
|||
|
|
|||
|
struct VSDataSourceRef:public VSDataSource
|
|||
|
{
|
|||
|
public:
|
|||
|
|
|||
|
~VSDataSourceRef() override {}
|
|||
|
};//
|
|||
|
|
|||
|
class VSDataSourceCreate
|
|||
|
|
|||
|
/**
|
|||
|
* 虚拟屏幕数据源
|
|||
|
*/
|
|||
|
class VSData
|
|||
|
{
|
|||
|
protected:
|
|||
|
|
|||
|
uint width,height; ///<尺寸
|
|||
|
uint color_component; ///<颜色成份数量(1-4)
|
|||
|
DataFormat data_format[4]; ///<数据格式
|
|||
|
|
|||
|
uint pixel_bytes; ///<每象素字节数
|
|||
|
uint line_bytes; ///<每一行象素数据的字节数
|
|||
|
|
|||
|
public:
|
|||
|
|
|||
|
VSData()
|
|||
|
{
|
|||
|
pixel_data=nullptr;
|
|||
|
}
|
|||
|
|
|||
|
virtual ~VSData()=0;
|
|||
|
|
|||
|
void *GetPointer(){return pixel_data;}
|
|||
|
|
|||
|
void *GetPointer(uint row)
|
|||
|
{
|
|||
|
if(row>=height)return(nullptr);
|
|||
|
|
|||
|
return ((uint8 *)pixel_data)+row*line_bytes;
|
|||
|
}
|
|||
|
|
|||
|
void *GetPointer(uint col,uint row)
|
|||
|
{
|
|||
|
if(col>=width)return(nullptr);
|
|||
|
if(row>=height)return(nullptr);
|
|||
|
|
|||
|
return ((uint8 *)pixel_data)+row*line_bytes+col*pixel_bytes;
|
|||
|
}
|
|||
|
};//class VSData
|
|||
|
|
|||
|
/**
|
|||
|
* 虚拟屏幕基类
|
|||
|
*/
|
|||
|
class VSBase
|
|||
|
{
|
|||
|
};//class VSBase
|
|||
|
|
|||
|
|
|||
|
}//namespace vs
|
|||
|
}//namespace hgl
|
|||
|
#endif//HGL_VSBASE_INCLUDE
|