path_commands_e和path_flags_e路径命令以及方向枚举

1 介绍

摘自:http://blog.csdn.net/zhawk/article/details/46794543

没有任何的注释,也没有任何的说明,没有人告诉你:cwccw的真实含义,或者没有经过源代码的洗练,即使出错了,也是束手无策!!

path_commands_e针对每一个点,都会有一个指令,该指令描述了如何操作当前点,和上一个点。这是非常简单的。line_to,就是将上一个点和当前点连线,这也是非常容易的。catrom,ubspline,mask(这个项目中也出现了,或许永远也不会有人告诉我,这是what

1agg::ellipse的顶点顺序(窗口坐标系):

 

- 从右侧开始,按圆心角递增方向绘制,在窗口坐标系下为顺时针

- 最后的path_cmd = path_cmd_end_poly | path_flags_ccw | path_flags_close

2agg::rounded_rect的顶点顺序(窗口坐标系):

 

- 左上角圆弧 -> 上边 -> 右上角圆弧 -> 右边 ->右下角圆弧 -> 下边 -> 左下角圆弧 -> 左边

- 每段圆弧均按圆心角递增方向绘制,其实可以将整个矩形看做按中心角递增方向绘制,在窗口坐标系下为顺时针

- 最后的path_cmd = path_cmd_end_poly | path_flags_ccw | path_flags_close

 

虽然AGG提供了标志位path_flags_ccwpath_flags_cw用于设置顶点源的旋转方向,但实际上只有顶点转换管线conv_contour用到了这些标志位。其余情况下,例如区域填充,AGG通过计算获得顶点源的实际旋转方向。

实际上对于agg::ellipse的构造函数的最后一个参数是cw,提供给用户设置,但是在应用中,确实没有任何的效果!!

cw是什么的缩写呢?我很是好奇!旋转的代词是whirl,c难道是circle,猜不透!!还是circumgyrate way(way也可以是方向的意思),但是ccw,晦涩!!

2 详细代码

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

};


你可能感兴趣的:(agg,path_commands_e,path_flags_e)