MS RFC 87:位图模式支持¶
- 日期
2013/01/14
- 作者
塔玛斯塞克勒斯
- 联系方式
gmail.com上的szekerest
- 状态
草稿
- 版本
TBD
1。概述¶
通过这个添加,我们可以很容易地定义画笔图案,了解颜色和背景颜色设置,并与各种渲染器进行同样良好的渲染。目前,我们没有这样的选择来实现相同的结果,通过使用矢量符号,我们不能为大多数渲染器(agg,cairo)提供相同的外观,因为线条图形可能具有抗锯齿行为。
根据下面的示例,位图模式将被定义为Patternmap类型的符号:
SYMBOL
NAME "mapinfo-brush-54"
TYPE PATTERNMAP
IMAGE "|10000010|01000100|00111001|01000100|10000010|00000001|00000001|00000001"
END
此符号将提供以下画笔填充:
位图模式可以根据“图像”部分中指定的行的长度以任意大小定义。
位图模式不可缩放,无法旋转,并且间隙始终设置为零。图案可以识别样式部分中定义的颜色和背景色。
2。建议的解决方案¶
我们将定义一个新的符号类型patternmap,maplexer.l将被修改以了解这个新的关键字。新的符号类型将以与PixMap符号相同的方式呈现。MOS的显著区别在于,平铺图像是动态创建的,而不是从文件加载图像。
三。实施细节¶
在mapsymbol.c中,将修改mspreloadImageSymbol,以根据“图像”部分指定的位图以适当的大小初始化栅格缓冲区。在maprendering.c中,gettile将被修改为渲染图像:
case (MS_SYMBOL_PATTERNMAP):
if(msPreloadImageSymbol(renderer,symbol) != MS_SUCCESS) {
return NULL; /* failed to load image, renderer should have set the error message */
}
msCreateBitmapSymbol(symbol, s);
renderer->renderPixmapSymbol(tileimg, p_x, p_y, symbol, s);
break;
新函数mscreatebitmapsymbol将处理符号定义中的图像部分,并根据样式颜色设置像素。
将修改computesymbolStyle(在maprendering.c中),以便在渲染之前设置颜色比例间隙和旋转参数。
4。受影响的文件¶
maplexer.l,maplexer.l:添加patternmap关键字
mapsymbol.h:添加ms_symbol_patternmap枚举值
c:修改解析器、编写器和MSPreloadImageSymbol
maprendering.c:添加mscreatebitmapsymbol,修改computesymbolStyle、gettile等。
mapdraw.c:修改msdrawvectorlayer,msdrawshape以了解ms_符号_patternmap
6。向后兼容性问题¶
不需要,新功能。
7。mapscript更改¶
MS-Symbol-Patternmap将作为新的符号类型公开。
8。投票历史¶
TBD。