1 //---------------------------------------------------------------------------- 2 // Anti-Grain Geometry - Version 2.4 3 // Copyright (C) 2002-2005 Maxim Shemanarev (http://www.antigrain.com) 4 // 5 // Permission to copy, use, modify, sell and distribute this software 6 // is granted provided this copyright notice appears in all copies. 7 // This software is provided "as is" without express or implied 8 // warranty, and with no claim as to its suitability for any purpose. 9 // 10 //---------------------------------------------------------------------------- 11 // Contact: mcseem@antigrain.com 12 // mcseemagg@yahoo.com 13 // http://www.antigrain.com 14 //---------------------------------------------------------------------------- 15 16 #ifndef AGG_VCGEN_BSPLINE_INCLUDED 17 #define AGG_VCGEN_BSPLINE_INCLUDED 18 19 #include "agg_basics.h" 20 #include "agg_array.h" 21 #include "agg_bspline.h" 22 23 24 namespace agg 25 { 26 27 //==========================================================vcgen_bspline 28 class vcgen_bspline 29 { 30 enum status_e 31 { 32 initial, 33 ready, 34 polygon, 35 end_poly, 36 stop 37 }; 38 39 public: 40 typedef pod_bvector<point_d, 6> vertex_storage; 41 42 vcgen_bspline(); 43 interpolation_step(double v)44 void interpolation_step(double v) { m_interpolation_step = v; } interpolation_step()45 double interpolation_step() const { return m_interpolation_step; } 46 47 // Vertex Generator Interface 48 void remove_all(); 49 void add_vertex(double x, double y, unsigned cmd); 50 51 // Vertex Source Interface 52 void rewind(unsigned path_id); 53 unsigned vertex(double* x, double* y); 54 55 private: 56 vcgen_bspline(const vcgen_bspline&); 57 const vcgen_bspline& operator = (const vcgen_bspline&); 58 59 vertex_storage m_src_vertices; 60 bspline m_spline_x; 61 bspline m_spline_y; 62 double m_interpolation_step; 63 unsigned m_closed; 64 status_e m_status; 65 unsigned m_src_vertex; 66 double m_cur_abscissa; 67 double m_max_abscissa; 68 }; 69 70 } 71 72 73 #endif 74 75