Coverage Report

Created: 2025-06-22 06:59

/src/MapServer/src/renderers/agg/include/agg_arc.h
Line
Count
Source (jump to first uncovered line)
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
26
namespace mapserver
27
{
28
29
    //=====================================================================arc
30
    //
31
    // See Implementation agg_arc.cpp 
32
    //
33
    class arc
34
    {
35
    public:
36
0
        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
0
        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 = 0;
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 = 0;
68
    };
69
70
71
}
72
73
74
#endif