您的位置:首页 > 其它

矢量组合图标文件格式设计

2017-08-07 22:55 357 查看
本文来自李明子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所示。

表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所示。

表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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息