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_VPGEN_SEGMENTATOR_INCLUDED
17#define AGG_VPGEN_SEGMENTATOR_INCLUDED
18
19#include <math.h>
20#include "agg_basics.h"
21
22namespace agg
23{
24
25    //=======================================================vpgen_segmentator
26    //
27    // See Implementation agg_vpgen_segmentator.cpp
28    //
29    class vpgen_segmentator
30    {
31    public:
32        vpgen_segmentator() : m_approximation_scale(1.0) {}
33
34        void approximation_scale(double s) { m_approximation_scale = s;     }
35        double approximation_scale() const { return m_approximation_scale;  }
36
37        static bool auto_close()   { return false; }
38        static bool auto_unclose() { return false; }
39
40        void reset() { m_cmd = path_cmd_stop; }
41        void move_to(double x, double y);
42        void line_to(double x, double y);
43        unsigned vertex(double* x, double* y);
44
45    private:
46        double   m_approximation_scale;
47        double   m_x1;
48        double   m_y1;
49        double   m_dx;
50        double   m_dy;
51        double   m_dl;
52        double   m_ddl;
53        unsigned m_cmd;
54    };
55
56
57
58}
59
60#endif
61
62