|  | 
 | //---------------------------------------------------------------------------- | 
 | // 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 | 
 | //---------------------------------------------------------------------------- | 
 | #ifndef AGG_VCGEN_STROKE_INCLUDED | 
 | #define AGG_VCGEN_STROKE_INCLUDED | 
 | #include "agg_math_stroke.h" | 
 | namespace pdfium | 
 | { | 
 | namespace agg | 
 | { | 
 | class vcgen_stroke  | 
 | { | 
 |     enum status_e { | 
 |         initial, | 
 |         ready, | 
 |         cap1, | 
 |         cap2, | 
 |         outline1, | 
 |         close_first, | 
 |         outline2, | 
 |         out_vertices, | 
 |         end_poly1, | 
 |         end_poly2, | 
 |         stop | 
 |     }; | 
 | public: | 
 |     typedef vertex_sequence<vertex_dist_cmd, 6> vertex_storage; | 
 |     typedef pod_deque<point_type, 6>        coord_storage; | 
 |     vcgen_stroke(); | 
 |     void line_cap(line_cap_e lc) | 
 |     { | 
 |         m_line_cap = lc; | 
 |     } | 
 |     void line_join(line_join_e lj) | 
 |     { | 
 |         m_line_join = lj; | 
 |     } | 
 |     void inner_join(inner_join_e ij) | 
 |     { | 
 |         m_inner_join = ij; | 
 |     } | 
 |     line_cap_e   line_cap()   const | 
 |     { | 
 |         return m_line_cap; | 
 |     } | 
 |     line_join_e  line_join()  const | 
 |     { | 
 |         return m_line_join; | 
 |     } | 
 |     inner_join_e inner_join() const | 
 |     { | 
 |         return m_inner_join; | 
 |     } | 
 |     void width(float w) | 
 |     { | 
 |         m_width = w / 2; | 
 |     } | 
 |     void miter_limit(float ml) | 
 |     { | 
 |         m_miter_limit = ml; | 
 |     } | 
 |     void miter_limit_theta(float t); | 
 |     void inner_miter_limit(float ml) | 
 |     { | 
 |         m_inner_miter_limit = ml; | 
 |     } | 
 |     void approximation_scale(float as) | 
 |     { | 
 |         m_approx_scale = as; | 
 |     } | 
 |     float width() const | 
 |     { | 
 |         return m_width * 2; | 
 |     } | 
 |     float miter_limit() const | 
 |     { | 
 |         return m_miter_limit; | 
 |     } | 
 |     float inner_miter_limit() const | 
 |     { | 
 |         return m_inner_miter_limit; | 
 |     } | 
 |     float approximation_scale() const | 
 |     { | 
 |         return m_approx_scale; | 
 |     } | 
 |     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_stroke(const vcgen_stroke&); | 
 |     const vcgen_stroke& operator = (const vcgen_stroke&); | 
 |     vertex_storage m_src_vertices; | 
 |     coord_storage  m_out_vertices; | 
 |     float         m_width; | 
 |     float         m_miter_limit; | 
 |     float         m_inner_miter_limit; | 
 |     float         m_approx_scale; | 
 |     line_cap_e     m_line_cap; | 
 |     line_join_e    m_line_join; | 
 |     inner_join_e   m_inner_join; | 
 |     unsigned       m_closed; | 
 |     status_e       m_status; | 
 |     status_e       m_prev_status; | 
 |     unsigned       m_src_vertex; | 
 |     unsigned       m_out_vertex; | 
 | }; | 
 | } | 
 | }  // namespace pdfium | 
 | #endif |