OpenCPN探索--HPGL指令分析--ECDIS 电子海图讲座

标签:
船舶ecdis电子海图教育 |
OpenCPN探索--HPGL指令分析--ECDIS 电子海图讲座
2013-12-30 10:56| 发布者: 懒猴航海| 原作者: ouyangxiong
摘要: OpenCPN探索—绘图指令解读概述:
前面已经发表过OpenCPN海图显示的相关文章,海图显示一文主要从函数级别上讲解显示的流程步骤。今天的绘图指令解读主要从文件级别上解析绘图指令含义以及在OpenCPN上是如何分解
...
中船工业系统工程研究院 && 西安融成科技有限公司电子海图讲座
文件结构:文件分为5部分,分别是:
1:color-tables 记录的是S52标准下各种现实模式的基准色;
2:lookups
记录的是各种类型S52标准的点线面绘制;
3:line-styles
记录的是各种线型;
4:patterns
记录的是各种类型图案的绘制;
5:symbols
记录的是各种类型符号的绘制;
这几部分的关系是:lookups提供总体绘制方法,在绘制方法中调用其他部分的定义实现最终的绘制。也就是说,一个obj对象的绘制,首先需要定位到它属于lookups中的哪一类,再根据lookups的记录查找线、图案、符号和颜色完成绘制和填充。
在OpenCPN中obj对象绘制前必须与S52文件中的一个lookups匹配上,根据匹配的结果中记录的绘制指令进行绘制。
在文件中各个符号简称是有意义的:
SY--------------------------------符号类型,它带的参数需要到symbols中去找对应的绘制指令;
CS--------------------------------条件符号化,这个目前比较复杂,在OpenCPN中很多条件符号化的指令都是在代码中动态生成的,本文对此不做介绍,以后针对条件符号化解析会有详细介绍。
LS---------------------------------简单线,在color-tables查找颜色,宽度和线型在括号中;
LC---------------------------------复杂线,在symbols中可以查找指令;
AC---------------------------------颜色填充,在color-tables中查找颜色;
AP---------------------------------图案填充,在patterns中查找图案
TE--------------------------------数值类文字,需要字母加以区分
TX---------------------------------普通字符串
解析函数RenderFromHPGL::Render的理解最好能跟着一段解析调试过程进行理解。
解析的步骤:
1:SP---------获取绘制的画笔颜色和画刷颜色;
2:SW--------获取画笔的宽度;
3:PU
A:设置画笔
B:获取线的起始点
C:偏转计算
4:PD
A:获取线的结束点
B:绘制一根线
5:CI----------设置半径直接画圆;
6:PM---------绘制复杂多边形,中间会调用PD、CI绘制线和圆;
7:FP----------绘制多边形;
指令解释(请参考S52标准):
SP用于选择一种画笔颜色,参数是一个字母(ASCII>=64),该参数标示一种S52颜色表中标定的颜色。当一种画笔颜色被选定以后直到出现新的SP指令选择新的画笔前,所有的绘制指令均采用上一次设置的画笔进行绘制。
ST 透明度,仅对填充区域有效。
SW 宽度,定义了线的物理宽度。
PU 移动的过程,中间并没有任何绘制过程,仅仅是移动画笔。
PD 绘制的过程,移动过程中完成一条线的绘制。
CI 绘制圆的过程,绘制完成后,画笔重新回到圆心。
AA
绘制弧的过程,顺时针绘制,绘制完成后不返回画笔初始位置。
PM
多边形定义模式。在该模式下,您可以使用其他指示构造多边形(PU、PD、CI、AA)。这些指令都在存储缓冲区多边形;他们不执行,直到多边形完全定义。为了绘制多边形必须填补它与FP指令和/或EP指令。
EP绘制已经存储的多边形。完成后,恢复原来的笔的位置和状态。
FP
填充已经存储的多边形。完成后,恢复原来的笔的位置和状态。
SC
调用一个符号定义,完成符号的绘制。
http://www.landho.cn/static/image/filetype/pdf.gif电子海图讲座" />OpenCPN探索--HPGL指令分析.pdf
http://www.landho.cn/xwb/images/bgimg/icon_logo.png电子海图讲座" TITLE="OpenCPN探索--HPGL指令分析--ECDIS 电子海图讲座" /> 已同步至 懒猴航海的微博