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 26 namespace agg 27 { 28 //------------------------------------------------------------rounded_rect 29 // 30 // See Implemantation agg_rounded_rect.cpp 31 // 32 class rounded_rect 33 { 34 public: rounded_rect()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 approximation_scale(double s)46 void approximation_scale(double s) { m_arc.approximation_scale(s); } approximation_scale()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