AGG 光栅化(Scanline Rasterizer) batik rasterizer.jar
Scanline Rasterizer
Scanline Rasterizer能够把顶点数据转换成一组水平扫描线,扫描线由一组线段(Span)组成,线段(Span)包含了起始位置、长度和覆盖率(可以理解 为透明度)信息。AGG的抗锯齿(Anti-Aliasing)功能也是在这时引入的。
扫描线Scanline
扫描线是一种保存span的容器,span用于表示一小条(水平方向)细线。图像中同一行的span组成一个Scanline。
头文件
#include <agg_scanline_u.h> // scanline_u8,scanline32_u8#include <agg_scanline_p.h> // scanline_p8,scanline32_p8#include <agg_scanline_bin.h> // scanline_bin,scanline32_bin类型
scanline_bin,scanline32_bin不携带AA信息的span容器。scanline32_bin中的32代表坐标位数,一般16位已经足够了,所以前一版 本用得更多些(下同)
scanline_u8,scanline32_u8unpacked版的span容器,用每个span来保存各自的线段信息
scanline_p8,scanline32_p8packed版的span容器,相同属性的span会合并成一个
成员类型
struct span;线段数据,其中的成员变量有:x起始位置,len长度,*covers覆盖率
typename iterator,const_iterator;span迭代器
typename cover_type;span中covers类型(覆盖率)
成员方法
iterator begin();
unsigned num_spans();用于遍历span,begin()取得指向第一个span的迭代器
num_spans()取得容器中span的数目
void reset(int min_x, int max_x);设置容器大小
void add_span(int x, unsigned len, unsigned cover)加入一条线段
void add_cell(int x, unsigned cover)加入一个点
void add_cells(int x, unsigned len, const cover_type* covers)加入一组点
void finalize(int y)
int y();Scanline容器对应的Y坐标
Rasterizer
怎么翻译呢?光栅化?光栅制造机?嗯~~算了,还是直接叫它Rasterizer(雷死特拉倒)吧-_-!!!
Rasterizer就是把相当于矢量数据的一堆顶点和命令转换成一行行的扫描线的设备,它就象粉刷工人对照着图纸把彩漆刷到墙上一 样。可以说是AGG里最重要的类型之一,套用建翔兄的话就是:
立功了!立功了!不要给GDI任何的机会!伟大的AGG的Rasterizer类!他了继承开源社区的光荣传统!达芬奇、Linus、 唐寅,在这一刻灵魂附体!
Rasterizer是关键对象!他代表了AGG伟大的设计理念!在这一刻!他不是一个人的战斗!他不是一个人!面对着全世界人民的目 光和期待,他深知责任的重大,0.001秒种之后将会是什么样的图像?
头文件
#include <agg_rasterizer_scanline_aa.h>类型
template<class Clip = rasterizer_sl_clip_int> class rasterizer_scanline_aa;成员方法
template<class GammaF>
void gamma(const GammaF& gamma_function);设置gamma值。
GammaF为一种仿函数
AGG自带有gamma_power、gamma_none、gamma_threshold、 gamma_linear、gamma_multiply
bool rewind_scanlines();跳到第一个scanline位置,同时设置sorted为true。
这时再加入其它顶点会先清空现有顶点
bool navigate_scanline(int y);跳到y行
bool sweep_scanline(Scanline&);把当前行画入Scanline,当下移一行
void reset();清空
void move_to(int x, int y);
void line_to(int x, int y);简单的画线功能,单位为1/poly_subpixel_scale
(poly_subpixel_scale一般为256)
void move_to_d(double x, double y);
void line_to_d(double x, double y);简单的画线功能,单位为像素
void add_path(VertexSource& vs, unsigned path_id=0)
加入顶点
更多阅读
怎样对IE浏览器的缓存进行忧化设置 如何清理ie浏览器缓存
怎样对IE浏览器的缓存进行忧化设置——简介 IE缓存是什么,IE缓存就是在上网时,临时保存在电脑中的临时文件,这些文件一般放在C盘的Internet缓存文件夹中,由于缓存的文件会非常多,有时可以达到几百M,甚至上G,占据C盘大量空间,也使C盘的运行速
cf窗口化怎么弄 cf怎么窗口化
cf窗口化怎么弄——简介通常我们希望将cf窗口化是为了能查看到电脑上的其它信息,如果没把cf窗口化就很不方便,我们知道cf窗口化的方法有很多种,最常见的是使用软件,还有一种是不使用软件的方法,cf窗口化怎么弄,方法如下。cf窗口化怎么弄
怎样解决无法初始化Visual Basic环境的问题 无法visual basic环境
经常使用word软件,难免是遇到这样那样的问题,今天笔者在录制新宏时出现错误提示“无法初始化Visual Basic环境”,对于此问题我们该如何来解决。怎样解决无法初始化Visual Basic环境的问题——工具/原料word 2003怎样解决无法初始化Vi
protel99se汉化的步骤与注意事项 protel99se汉化
protel99se汉化的步骤与注意事项——简介 protel99se一般是英文界面的,对于喜欢中文界面的用户来说,很不习惯,这里介绍一下这款软件的汉化方法,同时也说说汉化所要注意的地方!protel99se汉化
cf初始化失败解决方法 ie8安装失败解决方法
cf初始化失败解决方法——简介很多同学打cf的时候运行会出现初始化失败导致游戏打不开,很多人都会把游戏删了重下,这样有时是可以解决。但如果是别的原因的话重下游戏也是行不通的,有3个原因会导致游戏初始化失败。下面我一个一个讲。