123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- //----------------------------------------------------------------------------
- // Anti-Grain Geometry - Version 2.4
- // 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 agg
- {
- //---------------------------------------------------------------vcgen_dash
- //
- // See Implementation agg_vcgen_dash.cpp
- //
- 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(double dash_len, double gap_len);
- void dash_start(double ds);
- void shorten(double s) { m_shorten = s; }
- double shorten() const { return m_shorten; }
- // Vertex Generator Interface
- void remove_all();
- void add_vertex(double x, double y, unsigned cmd);
- // Vertex Source Interface
- void rewind(unsigned path_id);
- unsigned vertex(double* x, double* y);
- private:
- vcgen_dash(const vcgen_dash&);
- const vcgen_dash& operator = (const vcgen_dash&);
- void calc_dash_start(double ds);
- double m_dashes[max_dashes];
- double m_total_dash_len;
- unsigned m_num_dashes;
- double m_dash_start;
- double m_shorten;
- double m_curr_dash_start;
- unsigned m_curr_dash;
- double 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;
- };
- }
- #endif
|