1
//----------------------------------------------------------------------------
2
// Anti-Grain Geometry - Version 2.3
3
// Copyright (C) 2002-2005 Maxim Shemanarev (http://www.antigrain.com)
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.
10
//----------------------------------------------------------------------------
11
// Contact: mcseem@antigrain.com
12
// mcseemagg@yahoo.com
13
// http://www.antigrain.com
14
//----------------------------------------------------------------------------
18
//----------------------------------------------------------------------------
20
#ifndef AGG_SVG_PARSER_INCLUDED
21
#define AGG_SVG_PARSER_INCLUDED
23
#include "agg_svg_path_tokenizer.h"
24
#include "agg_svg_path_renderer.h"
33
enum buf_size_e { buf_size = BUFSIZ };
37
parser(path_renderer& path);
39
void parse(const char* fname);
40
const char* title() const { return m_title; }
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);
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);
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);
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);
69
path_renderer& m_path;
70
path_tokenizer m_tokenizer;
78
unsigned m_attr_name_len;
79
unsigned m_attr_value_len;