djyos 发表于 2010-4-12 11:28:30

djygui色彩方案,征求意见

djygui正在闭关加紧开发中,这是从代码中copy的色彩管理方案,征求意见。



//像素色彩格式定义,
//系统格式(sys)是djygui和显卡driver都必须支持的格式。
//扩展格式(ext),djygui提供转换函数支持,但显卡driver则可以支持也可以不支持的格式。
//私有格式,显卡driver内部可使用上述定义以外的私有格式。
//应用程序可以通过driver查询显卡实际使用的格式。
//如果显卡使用私有格式,则上层查询显卡格式时,返回0(cn_private_pf).
//应用程序绘制点、线、填充等功能时,必须使用cn_sys_pf_r8g8b8格式,如果窗口类型是
//逐点alpha,则应使用cn_sys_pf_a8r8g8b8格式。
//应用程序绘制位图时,如果使用显卡实际使用的像素格式,将获得最优化的显示速度。
//应用程序选择像素格式的方法:
//1、先查询显卡格式,使用与之相同的格式,
//2、使用系统格式,所有显卡driver无条件支持
//3、如果显卡使用私有格式,则应用程序必须使用系统格式来绘制。
//当应用程序需要获取窗口或screen上的矩形(单像素是长宽为1的矩形)时,则先初始化
//好一个struct bitmap结构,并指定所需要的像素格式,也可以指定cn_private_pf格式,
//在同一个系统内移动(copy)屏幕区域时分有用。然后调用gui的系统调用,由gui调用显
//卡driver的功能,显卡driver则填充bitmap中的显存。
#define cn_private_pf       0x90    //显卡私有格式

#define cn_sys_pf_gray1   0x01    //单色
#define cn_sys_pf_gray4   0x02    //4位16级灰度
#define cn_sys_pf_gray8   0x03    //8位256级灰度,用于黑白照片等
#define cn_sys_pf_r3g3b2    0x04    //256色,r在高位
#define cn_sys_pf_r5g6b5    0x05    //16色,r在高位
#define cn_sys_pf_r8g8b8    0x06    //24位色,r在高字节,最高字节空
#define cn_sys_pf_a8r8g8b80x07    //24位色+8位alpha透明,a在高字节
#define cn_sys_pf_r10g10b10 0x08    //30位色,最高两位暂无定义,r在高位

#define cn_ext_pf_gray2   0x10    //2位4级灰度
#define cn_ext_pf_r4g4b4p   0x11    //12位色,压缩存储,每像素12bit,r在高位
#define cn_ext_pf_r4g4b4h   0x12    //12位色,扩展存储,每像素占高12bit,r在高位
#define cn_ext_pf_r4g4b4l   0x13    //12位色,扩展存储,每像素占低12bit,r在高位
#define cn_ext_pf_r5g5b5c10x14    //16位色,r在高位,c为rgb共用低位
#define cn_ext_pf_666       0x15    //18位色,r在高位,每像素32bit,高18bit空
//可以继续定义新格式,使之包含目标系统实际色彩格式,可以最大限度地优化显示速度,
//同时又不影响程序的可移植性。

tear086 发表于 2010-4-12 11:46:44

不懂。帮顶。
页: [1]
查看完整版本: djygui色彩方案,征求意见