|  | 
 | //---------------------------------------------------------------------------- | 
 | // Anti-Grain Geometry - Version 2.3 | 
 | // Copyright (C) 2002-2005 Maxim Shemanarev (http://www.antigrain.com) | 
 | // | 
 | // Permission to copy, use, modify, sell and distribute this software | 
 | // is granted provided this copyright notice appears in all copies. | 
 | // This software is provided "as is" without express or implied | 
 | // warranty, and with no claim as to its suitability for any purpose. | 
 | // | 
 | //---------------------------------------------------------------------------- | 
 | // Contact: mcseem@antigrain.com | 
 | //          mcseemagg@yahoo.com | 
 | //          http://www.antigrain.com | 
 | //---------------------------------------------------------------------------- | 
 | // | 
 | // Line dash generator | 
 | // | 
 | //---------------------------------------------------------------------------- | 
 | #ifndef AGG_VCGEN_DASH_INCLUDED | 
 | #define AGG_VCGEN_DASH_INCLUDED | 
 | #include "agg_basics.h" | 
 | #include "agg_vertex_sequence.h" | 
 | namespace pdfium | 
 | { | 
 | namespace agg | 
 | { | 
 | class vcgen_dash  | 
 | { | 
 |     enum max_dashes_e { | 
 |         max_dashes = 32 | 
 |     }; | 
 |     enum status_e { | 
 |         initial, | 
 |         ready, | 
 |         polyline, | 
 |         stop | 
 |     }; | 
 | public: | 
 |     typedef vertex_sequence<vertex_dist, 6> vertex_storage; | 
 |     vcgen_dash(); | 
 |     void remove_all_dashes(); | 
 |     void add_dash(float dash_len, float gap_len); | 
 |     void dash_start(float ds); | 
 |     void shorten(float s) | 
 |     { | 
 |         m_shorten = s; | 
 |     } | 
 |     double shorten() const | 
 |     { | 
 |         return m_shorten; | 
 |     } | 
 |     void remove_all(); | 
 |     void add_vertex(float x, float y, unsigned cmd); | 
 |     void     rewind(unsigned path_id); | 
 |     unsigned vertex(float* x, float* y); | 
 | private: | 
 |     vcgen_dash(const vcgen_dash&); | 
 |     const vcgen_dash& operator = (const vcgen_dash&); | 
 |     void calc_dash_start(float ds); | 
 |     float     m_dashes[max_dashes]; | 
 |     float		m_total_dash_len; | 
 |     unsigned        m_num_dashes; | 
 |     float     m_dash_start; | 
 |     float     m_shorten; | 
 |     float     m_curr_dash_start; | 
 |     unsigned        m_curr_dash; | 
 |     float     m_curr_rest; | 
 |     const vertex_dist* m_v1; | 
 |     const vertex_dist* m_v2; | 
 |     vertex_storage m_src_vertices; | 
 |     unsigned       m_closed; | 
 |     status_e       m_status; | 
 |     unsigned       m_src_vertex; | 
 | }; | 
 | } | 
 | }  // namespace pdfium | 
 | #endif |