六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 30|回复: 0

reactos操作系统实现(195)

[复制链接]

升级  53.65%

673

主题

673

主题

673

主题

探花

Rank: 6Rank: 6

积分
2073
 楼主| 发表于 2013-1-26 13:53:54 | 显示全部楼层 |阅读模式
系统调色板相关功能的代码在文件subsys/win32k/eng/palette.c里。什么是调色板呢?其实调色板就是当一种图像不是使用到所有颜色时,使用的一种索引技术,以便减少图像保存的大小。一幅图像,如果要按真彩色表达,那么就是256×256×256颜色;如果按256色表示,那就只使用到256个颜色,比起真彩色来说是少了很多空间。把一幅图像里所有包括的颜色生成一张表格,这张表格就叫做调色板。图像保存的数据时并不保存颜色的真实值,而是保存调色板里的索引值。
#001 typedef struct tagLOGPALETTE {
#002  WORDpalVersion;
#003  WORDpalNumEntries;
#004  PALETTEENTRYpalPalEntry[1];
#005 }LOGPALETTE,*NPLOGPALETTE,*PLOGPALETTE,*LPLOGPALETTE;
这个结构,就是ROS的逻辑调色板结构定义。
palVersion是调色板的版本号。
palNumEntries是调色板内有多少种颜色。
palPalEntry是调色板的入口指针。PALETTEENTRY的结构如下:
#001 typedef struct tagPALETTEENTRY {
#002  BYTEpeRed;
#003  BYTEpeGreen;
#004  BYTEpeBlue;
#005  BYTEpeFlags;
#006 }PALETTEENTRY,*LPPALETTEENTRY,*PPALETTEENTRY;
上面是每一项调色板保存的值。
peRed是这一索引值里的颜色红色值。
peGreen是这一索引值里的颜色绿色值。
peBlue是这一索引值里的颜色蓝色值。
peFlags是指明这一项颜色值怎么样使用。标志PC_EXPLICIT是指明使用peRed来表示另外一个调色板的索引值,不是真实的颜色值。标志PC_NOCOLLAPSE是指明使用这个调色板里的颜色值来替代已经存在的系统调色板的颜色值。标志PC_RESERVED是指明调色板里的值是动态改变的,这是为了调色板动画准备的。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表