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// Simple arrowhead/arrowtail generator
17//
18//----------------------------------------------------------------------------
19#ifndef AGG_ARROWHEAD_INCLUDED
20#define AGG_ARROWHEAD_INCLUDED
21
22#include "agg_basics.h"
23
24namespace agg
25{
26
27    //===============================================================arrowhead
28    //
29    // See implementation agg_arrowhead.cpp
30    //
31    class arrowhead
32    {
33    public:
34        arrowhead();
35
36        void head(double d1, double d2, double d3, double d4)
37        {
38            m_head_d1 = d1;
39            m_head_d2 = d2;
40            m_head_d3 = d3;
41            m_head_d4 = d4;
42            m_head_flag = true;
43        }
44
45        void head()    { m_head_flag = true; }
46        void no_head() { m_head_flag = false; }
47
48        void tail(double d1, double d2, double d3, double d4)
49        {
50            m_tail_d1 = d1;
51            m_tail_d2 = d2;
52            m_tail_d3 = d3;
53            m_tail_d4 = d4;
54            m_tail_flag = true;
55        }
56
57        void tail()    { m_tail_flag = true;  }
58        void no_tail() { m_tail_flag = false; }
59
60        void rewind(unsigned path_id);
61        unsigned vertex(double* x, double* y);
62
63    private:
64        double   m_head_d1;
65        double   m_head_d2;
66        double   m_head_d3;
67        double   m_head_d4;
68        double   m_tail_d1;
69        double   m_tail_d2;
70        double   m_tail_d3;
71        double   m_tail_d4;
72        bool     m_head_flag;
73        bool     m_tail_flag;
74        double   m_coord[16];
75        unsigned m_cmd[8];
76        unsigned m_curr_id;
77        unsigned m_curr_coord;
78    };
79
80}
81
82#endif
83