摘自:http://blog.csdn.net/zhawk/article/details/46794543
没有任何的注释,也没有任何的说明,没有人告诉你:cw,ccw的真实含义,或者没有经过源代码的洗练,即使出错了,也是束手无策!!
path_commands_e针对每一个点,都会有一个指令,该指令描述了如何操作当前点,和上一个点。这是非常简单的。line_to,就是将上一个点和当前点连线,这也是非常容易的。catrom,ubspline,mask(这个项目中也出现了,或许永远也不会有人告诉我,这是what)
- 从右侧开始,按圆心角递增方向绘制,在窗口坐标系下为顺时针
- 最后的path_cmd = path_cmd_end_poly | path_flags_ccw | path_flags_close
- 左上角圆弧 -> 上边 -> 右上角圆弧 -> 右边 ->右下角圆弧 -> 下边 -> 左下角圆弧 -> 左边
- 每段圆弧均按圆心角递增方向绘制,其实可以将整个矩形看做按中心角递增方向绘制,在窗口坐标系下为顺时针
- 最后的path_cmd = path_cmd_end_poly | path_flags_ccw | path_flags_close
虽然AGG提供了标志位path_flags_ccw、path_flags_cw用于设置顶点源的旋转方向,但实际上只有顶点转换管线conv_contour用到了这些标志位。其余情况下,例如区域填充,AGG通过计算获得顶点源的实际旋转方向。
实际上对于agg::ellipse的构造函数的最后一个参数是cw,提供给用户设置,但是在应用中,确实没有任何的效果!!
cw是什么的缩写呢?我很是好奇!旋转的代词是whirl,c难道是circle,猜不透!!还是circumgyrate way(way也可以是方向的意思),但是ccw,晦涩!!
enum path_commands_e
{
path_cmd_stop = 0, //----path_cmd_stop
path_cmd_move_to = 1, //----path_cmd_move_to
path_cmd_line_to = 2, //----path_cmd_line_to
path_cmd_curve3 = 3, //----path_cmd_curve3
path_cmd_curve4 = 4, //----path_cmd_curve4
path_cmd_curveN = 5, //----path_cmd_curveN
path_cmd_catrom = 6, //----path_cmd_catrom
path_cmd_ubspline = 7, //----path_cmd_ubspline
path_cmd_end_poly = 0x0F, //----path_cmd_end_poly
path_cmd_mask = 0x0F //----path_cmd_mask
};
//------------------------------------------------------------path_flags_e
enum path_flags_e
{
path_flags_none = 0, //----path_flags_none
path_flags_ccw = 0x10, //----path_flags_ccw
path_flags_cw = 0x20, //----path_flags_cw
path_flags_close = 0x40, //----path_flags_close
path_flags_mask = 0xF0 //----path_flags_mask
};