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// Rounded rectangle vertex generator
17//
18//----------------------------------------------------------------------------
19
20#ifndef AGG_ROUNDED_RECT_INCLUDED
21#define AGG_ROUNDED_RECT_INCLUDED
22
23#include "agg_basics.h"
24#include "agg_arc.h"
25
26namespace agg
27{
28    //------------------------------------------------------------rounded_rect
29    //
30    // See Implemantation agg_rounded_rect.cpp
31    //
32    class rounded_rect
33    {
34    public:
35        rounded_rect() {}
36        rounded_rect(double x1, double y1, double x2, double y2, double r);
37
38        void rect(double x1, double y1, double x2, double y2);
39        void radius(double r);
40        void radius(double rx, double ry);
41        void radius(double rx_bottom, double ry_bottom, double rx_top, double ry_top);
42        void radius(double rx1, double ry1, double rx2, double ry2,
43                    double rx3, double ry3, double rx4, double ry4);
44        void normalize_radius();
45
46        void approximation_scale(double s) { m_arc.approximation_scale(s); }
47        double approximation_scale() const { return m_arc.approximation_scale(); }
48
49        void rewind(unsigned);
50        unsigned vertex(double* x, double* y);
51
52    private:
53        double m_x1;
54        double m_y1;
55        double m_x2;
56        double m_y2;
57        double m_rx1;
58        double m_ry1;
59        double m_rx2;
60        double m_ry2;
61        double m_rx3;
62        double m_ry3;
63        double m_rx4;
64        double m_ry4;
65        unsigned m_status;
66        arc      m_arc;
67    };
68
69}
70
71#endif
72
73