CM2D/inc/hgl/2d/VSBase.h

88 lines
2.1 KiB
C
Raw Permalink Normal View History

2019-11-29 19:36:38 +08:00
#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