本文来自李明子csdn博客(http://blog.csdn.net/free1985),商业转载请联系博主获得授权,非商业转载请注明出处!
1 概述
矢量组合图标文件用于记录由多个矢量图标组成的矢量组合图标。矢量组合图标文件包括图标索引文件和图标数据文件两个部分。
2 图标索引文件
图标索引文件由文件头和记录组成。其中,文件头为100字节定长,记录为8字节定长。记录的存储分配如表2-1所示。
表2-1 图标索引文件记录存储分配表位 置 | 域 | 值 | 数据类型 |
Byte 0 | 图标ID | 图标ID | Long |
Byte 4 | 起始位置 | 起始位置 | Long |
3 图标数据文件
图标数据文件由一个定长的文件头和一系列变长记录组成。每一个变长记录又由一个定长的记录头和定长的记录内容组成。图标数据文件的组成如图3-1所示。
图3-1 图标数据文件组成图
3.1 文件头
图标数据文件的文件头为100字节定长,图标数据文件的文件头存储分配如表3-1所示。
位 置 | 域 | 值 | 数据类型 |
Byte 0 | File Code | 9994 | Integer |
Byte 4 | Unused | 0 | Integer |
Byte 8 | Unused | 0 | Integer |
Byte 12 | Unused | 0 | Integer |
Byte 16 | Unused | 0 | Integer |
Byte 20 | Unused | 0 | Integer |
Byte 24 | File Length | File Length | Integer |
Byte 28 | Version | 1000 | Integer |
Byte 32 | Unused | 0 | Integer |
Byte 36 | Unused | 0 | Integer |
Byte 40 | Unused | 0 | Integer |
Byte 44 | Unused | 0 | Integer |
Byte 48 | Unused | 0 | Integer |
Byte 52 | Unused | 0 | Integer |
Byte 56 | Unused | 0 | Integer |
Byte 60 | Unused | 0 | Integer |
Byte 64 | Unused | 0 | Integer |
Byte 68 | Unused | 0 | Integer |
Byte 72 | Unused | 0 | Integer |
Byte 76 | Unused | 0 | Integer |
Byte 80 | Unused | 0 | Integer |
Byte 84 | Unused | 0 | Integer |
Byte 88 | Unused | 0 | Integer |
Byte 92 | Unused | 0 | Integer |
Byte 96 | Unused | 0 | Integer |
文件长度指以字节(byte)为单位的整个文件的长度,其中包括100个字节的文件头。
3.2 记录头
记录头存储图标ID、叠放层次和包含的单个图标个数。记录头长12字节,存储分配如表3-2所示。
位 置 | 域 | 值 | 数据类型 |
Byte 0 | 图标ID | 图标ID | Integer |
Byte 4 | 绘制图元的叠放层次 | 默认-1,表示不存在 | BYTE |
Byte 8 | 包含单个图标的个数 | 默认0,表示不存在单个图标 | Int |
3.3 记录内容
图标位移的逻辑结构如下:
struct Stru_Translate
{
float x;
float y;
};
图标颜色的逻辑结构如下:
struct Stru _Color
{
float fRed; // 红色分量0-1.0
float fGreen; // 绿色分量0-1.0
float fBlue; // 蓝色分量0-1.0
};
单个图标的逻辑结构如下:
struct Stru_SingleIcon
{
long ID; // 单个图标的ID;
float Scalef; // 单个图标的缩放倍数
float RotatefZ; // 单个图标绕Z轴旋转的角度
Stru_Translate Displacement; // 单个图标的位移
Stru_GL_Color Color; // 单个图标的颜色
bool IsVariable; // 单个图标的颜色是否可变
BYTE nZ; // 单个图标的叠放层次
};
记录的存储分配如表3-3所示。
表3-3 记录存储分配表位置 (字节) | 域 名 | 值 | 数据类型 | 数 量 |
Byte 0 | ID | ID | Long | 1 |
Byte 4 | Scalef; | Scalef; | float | 1 |
Byte 8 | RotatefZ; | RotatefZ; | float | 1 |
Byte 12 | Displacement | Displacement | Stru_translate | 1 |
Byte 20 | Color | Color | Stru_GL_Color | 1 |
Byte 32 | IsVariable | IsVariable | bool | 1 |
Byte 33 | nZ | nZ | BYTE | 1 |