~ubuntu-branches/ubuntu/saucy/mapserver/saucy-security

« back to all changes in this revision

Viewing changes to renderers/agg/include/agg_svg_parser.h

  • Committer: Package Import Robot
  • Author(s): Francesco Paolo Lovergine
  • Date: 2011-12-23 14:02:06 UTC
  • mfrom: (26.1.2 sid)
  • Revision ID: package-import@ubuntu.com-20111223140206-n3h9t2hsa8hyslmu
Tags: 6.0.1-2
Added missed stuff for libmapscript-perl.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//----------------------------------------------------------------------------
 
2
// Anti-Grain Geometry - Version 2.3
 
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
// SVG parser.
 
17
//
 
18
//----------------------------------------------------------------------------
 
19
 
 
20
#ifndef AGG_SVG_PARSER_INCLUDED
 
21
#define AGG_SVG_PARSER_INCLUDED
 
22
 
 
23
#include "agg_svg_path_tokenizer.h"
 
24
#include "agg_svg_path_renderer.h"
 
25
 
 
26
namespace mapserver
 
27
{
 
28
namespace svg
 
29
{
 
30
 
 
31
    class parser
 
32
    {
 
33
        enum buf_size_e { buf_size = BUFSIZ };
 
34
    public:
 
35
 
 
36
        ~parser();
 
37
        parser(path_renderer& path);
 
38
 
 
39
        void parse(const char* fname);
 
40
        const char* title() const { return m_title; }
 
41
 
 
42
    private:
 
43
        // XML event handlers
 
44
        static void start_element(void* data, const char* el, const char** attr);
 
45
        static void end_element(void* data, const char* el);
 
46
        static void content(void* data, const char* s, int len);
 
47
 
 
48
        void parse_attr(const char** attr);
 
49
        void parse_path(const char** attr);
 
50
        void parse_poly(const char** attr, bool close_flag);
 
51
        void parse_rect(const char** attr);
 
52
        void parse_line(const char** attr);
 
53
        void parse_style(const char* str);
 
54
        void parse_transform(const char* str);
 
55
 
 
56
        unsigned parse_matrix(const char* str);
 
57
        unsigned parse_translate(const char* str);
 
58
        unsigned parse_rotate(const char* str);
 
59
        unsigned parse_scale(const char* str);
 
60
        unsigned parse_skew_x(const char* str);
 
61
        unsigned parse_skew_y(const char* str);
 
62
        
 
63
        bool parse_attr(const char* name, const char* value);
 
64
        bool parse_name_value(const char* nv_start, const char* nv_end);
 
65
        void copy_name(const char* start, const char* end);
 
66
        void copy_value(const char* start, const char* end);
 
67
        
 
68
    private:
 
69
        path_renderer& m_path;
 
70
        path_tokenizer m_tokenizer;
 
71
        char*          m_buf;
 
72
        char*          m_title;
 
73
        unsigned       m_title_len;
 
74
        bool           m_title_flag;
 
75
        bool           m_path_flag;
 
76
        char*          m_attr_name;
 
77
        char*          m_attr_value;
 
78
        unsigned       m_attr_name_len;
 
79
        unsigned       m_attr_value_len;
 
80
    };
 
81
 
 
82
}
 
83
}
 
84
 
 
85
#endif