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

来源:互联网 发布:风险投资网络课程 编辑:程序博客网 时间:2024/05/17 04:37

本文来自李明子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 图标数据文件组成图

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