-
Notifications
You must be signed in to change notification settings - Fork 0
decoder.hh
Zhiyuan "Erick" Li edited this page Jun 27, 2019
·
1 revision
- 功能 ⚙️
这个函数是阁下需要直接使用之函数,阁下只需要将二进制文件完整读取到内存中,并提供指针指向数据块之头尾。最终,阁下可以得到返回之jstring包含完整的符号信息。
- 输入 📥
-
head:字符指针char *,需要指向内存中数据块的第一个字节; -
tail:字符指针char *,需要指向内存中数据块的最后一个字节; -
enableLogging:布尔值bool,决定是否要输出辅助日志。
-
- 输出 📤
- 字符串
std::string,内容为完整之符号内容,使用JSON格式。
- 字符串
- 注意
⚠️
一定要注意tail乃是指向来自原二进制文件之最后一个字节,否则函数有机会出现未定义之行为。
- 功能 ⚙️
这个函数用于解码二进制文件中关于颜色定义的数据块。在ArcGIS中,颜色有三种定义方式,分别为RGB, HSV及CMYK。如果阁下最初使用CMYK来定义颜色,那么此颜色在数据块只用4个字节表示,分别代表了CMYK四个部分;但是,如果其他用户最初使用RGB或HSV来定义颜色,那么ArcGIS会使用24个字节的CIELab来表示颜色。
- 输入 📥
-
cursorSee Public Param -
jstringSee Public Param -
levelSee Public Param -
color_type:字符串std::string,表明颜色的类型名称,比如”outline color”。需要注意的是,由于此字符串将会被用于JSON中,因此本字符串会被camelCased。
-
-
jstring键值对 🧲
"color_{colorType}": {
"name": "{color_type}",
"space": "[RGB, HSV, CMYK]",
"rawColorCode": [
10.222222222,
11.333333333,
12.444444444
],
"colorCode": [
23.453,
91.83,
1.342
]
}* `name`:颜色类型名称;
* `space`:色彩模型名称,只可以为”RGB”, “HSV”, “CMYK”;
* `rawColorSpace`:为直接从数据块中读取到的浮点数内容(见注意);
* `colorSpace`:为最终颜色的模型。(见警告)
- 注意
⚠️
rawColorSpace只会在space为”RGB”及”HSV”时出现
- 警告
‼️
在”RGB”及”HSV”时,colorCode会有误差。由于ArcGIS使用的CIELab转换RGB之模型非标准模型,因此更深入的色彩研究非常有必要!
- 功能 ⚙️
此函数用于解码图层之数量。ArcGIS的符号中的图层就像Adobe Photoshop中的图层一样,互相独立。
- 输入 📥
-
cursorSee Public Param -
jstringSee Public Param -
levelSee Public Param
-
- 输出 📤
- 整型数
int,为图层数量。
- 整型数
-
jstring键值对 🧲
"numberOfLayers": 2,- 注意
⚠️
如果发现图层数目不是正整数,函数会丢出错误。
- 功能 ⚙️
此函数用于解码数据块中的双精度浮点数。
- 输入 📥
-
cursorSee Public Param -
jstringSee Public Param -
levelSee Public Param -
tag:字符串std::string,表明此此浮点数的用途。
-
- 输出 📤
- 双精度浮点数
double,为所解码之数字。
- 双精度浮点数
-
jstring键值对 🧲
"{tag}": 4.37464,- 注意
⚠️
写入jstring时,数字会舍去小数点后无意义的0。
- 功能 ⚙️
此函数用于解码数据块中的整型数。
- 输入 📥
-
cursorSee Public Param -
jstringSee Public Param -
levelSee Public Param -
tag:字符串std::string,表明此此整型数的用途。
-
- 输出 📤
- 整型数
int,为所解码之数字。
- 整型数
-
jstring键值对 🧲
"{tag}": 5,- 功能 ⚙️
此函数用于解码数据块中的字体名称(字符串)。
- 输入 📥
-
cursorSee Public Param -
jstringSee Public Param -
levelSee Public Param
-
-
jstring键值对 🧲
"fontName": [
87,
105,
103,
100,
105,
110,
103,
115
]- 注意
⚠️
字体名称使用名称中字符所对应的Unicode组成为列表。英文字体名称中,一个字符占用一个字节;而在中文字体名称中,一个中文字占用两个字节。