1 /**
2  * @file lv_svg_parser.h
3  *
4  */
5 
6 #ifndef LV_SVG_PARSER_H
7 #define LV_SVG_PARSER_H
8 
9 /*********************
10  *      INCLUDES
11  *********************/
12 #include "../../lv_conf_internal.h"
13 #if LV_USE_SVG
14 
15 #include "lv_svg.h"
16 #include "lv_svg_token.h"
17 
18 /*********************
19  *      DEFINES
20  *********************/
21 
22 /**********************
23  *      TYPEDEFS
24  **********************/
25 
26 typedef enum {
27     LV_SVG_PARSER_PROCESS = 0,
28     LV_SVG_PARSER_IGNORE,
29 } _lv_svg_parser_state_t;
30 
31 typedef struct {
32     uint16_t state;
33     char * ignore_name;
34     uint32_t ignore_len;
35     int32_t dpi;
36     lv_svg_node_t * doc_root;
37     lv_svg_node_t * cur_node;
38 } _lv_svg_parser_t;
39 
40 /**********************
41  * GLOBAL PROTOTYPES
42  **********************/
43 
44 /**
45  * @brief Initialize the SVG parser
46  * @param parser pointer to a parser object
47  */
48 void _lv_svg_parser_init(_lv_svg_parser_t * parser);
49 
50 /**
51  * @brief Deinitialize the SVG parser
52  * @param parser pointer to a parser object
53  */
54 void _lv_svg_parser_deinit(_lv_svg_parser_t * parser);
55 
56 /**
57  * @brief Parse an SVG document
58  * @param parser pointer to a parser object
59  * @param token pointer to a token object
60  * @return true: the parsing is finished, false: the parsing is not finished yet.
61  */
62 bool _lv_svg_parser_token(_lv_svg_parser_t * parser, const _lv_svg_token_t * token);
63 
64 /**
65  * @brief Check if the parsing is finished
66  * @param parser pointer to a parser object
67  * @return true: the parsing is finished, false: the parsing is not finished yet.
68  */
69 bool _lv_svg_parser_is_finish(_lv_svg_parser_t * parser);
70 
71 /**
72  * @brief Dump the SVG tree
73  * @param root pointer to the root of the SVG tree
74  * @param depth the depth of the current node in the tree
75  */
76 void _lv_svg_dump_tree(lv_svg_node_t * root, int depth);
77 
78 /**********************
79  *      MACROS
80  **********************/
81 
82 #endif /*LV_USE_SVG*/
83 
84 #endif /*LV_SVG_PARSER_H*/
85