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 是指明调色板里的值是动态改变的,这是为了调色板动画准备的。

相关文章

一、前言 在组件方面react和Vue一样的,核心思想玩的就是组件...
前言: 前段时间学习完react后,刚好就接到公司一个react项目...
前言: 最近收到组长通知我们项目组后面新开的项目准备统一技...
react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom...