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// Arc vertex generator 17// 18//---------------------------------------------------------------------------- 19 20#ifndef AGG_ARC_INCLUDED 21#define AGG_ARC_INCLUDED 22 23#include <math.h> 24#include "agg_basics.h" 25 26namespace agg 27{ 28 29 //=====================================================================arc 30 // 31 // See Implementation agg_arc.cpp 32 // 33 class arc 34 { 35 public: 36 arc() : m_scale(1.0), m_initialized(false) {} 37 arc(double x, double y, 38 double rx, double ry, 39 double a1, double a2, 40 bool ccw=true); 41 42 void init(double x, double y, 43 double rx, double ry, 44 double a1, double a2, 45 bool ccw=true); 46 47 void approximation_scale(double s); 48 double approximation_scale() const { return m_scale; } 49 50 void rewind(unsigned); 51 unsigned vertex(double* x, double* y); 52 53 private: 54 void normalize(double a1, double a2, bool ccw); 55 56 double m_x; 57 double m_y; 58 double m_rx; 59 double m_ry; 60 double m_angle; 61 double m_start; 62 double m_end; 63 double m_scale; 64 double m_da; 65 bool m_ccw; 66 bool m_initialized; 67 unsigned m_path_cmd; 68 }; 69 70 71} 72 73 74#endif 75