reactos操作系统实现(195)

系统调色板相关功能的代码在文件subsys/win32k/eng/palette.c里。什么是调色板呢?其实调色板就是当一种图像不是使用到所有颜色时,使用的一种索引技术,以便减少图像保存的大小。一幅图像,如果要按真彩色表达,那么就是256×256×256颜色;如果按256色表示,那就只使用到256个颜色,比起真彩色来说是少了很多空间。把一幅图像里所有包括的颜色生成一张表格,这张表格就叫做调色板。图像保存的数据时并不保存颜色的真实值,而是保存调色板里的索引值。

#001  typedef struct tagLOGPALETTE {

#002       WORD palVersion;

#003       WORD palNumEntries;

#004       PALETTEENTRY palPalEntry[1];

#005  } LOGPALETTE,*NPLOGPALETTE,*PLOGPALETTE,*LPLOGPALETTE;

这个结构,就是ROS的逻辑调色板结构定义。

palVersion是调色板的版本号。

palNumEntries是调色板内有多少种颜色。

palPalEntry是调色板的入口指针。PALETTEENTRY的结构如下:

#001  typedef struct tagPALETTEENTRY {

#002       BYTE peRed;

#003       BYTE peGreen;

#004       BYTE peBlue;

#005       BYTE peFlags;

#006  } PALETTEENTRY,*LPPALETTEENTRY,*PPALETTEENTRY;

上面是每一项调色板保存的值。

peRed是这一索引值里的颜色红色值。

peGreen是这一索引值里的颜色绿色值。

peBlue是这一索引值里的颜色蓝色值。

peFlags 是指明这一项颜色值怎么样使用。标志 PC_EXPLICIT 是指明使用 peRed 来表示另外一个调色板的索引值,不是真实的颜色值。标志 PC_NOCOLLAPSE 是指明使用这个调色板里的颜色值来替代已经存在的系统调色板的颜色值。标志 PC_RESERVED 是指明调色板里的值是动态改变的,这是为了调色板动画准备的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

caimouse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值