1 /** 2 * @file lv_svg_token.h 3 * 4 */ 5 6 #ifndef LV_SVG_TOKEN_H 7 #define LV_SVG_TOKEN_H 8 9 /********************* 10 * INCLUDES 11 *********************/ 12 #include "../../lv_conf_internal.h" 13 #if LV_USE_SVG 14 15 #include "../../misc/lv_array.h" 16 17 /********************* 18 * DEFINES 19 *********************/ 20 21 #define SVG_TOKEN_LEN(t) ((t)->end - (t)->start) 22 23 /********************** 24 * TYPEDEFS 25 **********************/ 26 27 typedef enum { 28 LV_SVG_TOKEN_BEGIN = 0, 29 LV_SVG_TOKEN_END, 30 LV_SVG_TOKEN_CONTENT, 31 } _lv_svg_token_type_t; 32 33 typedef struct { 34 const char * name_start; 35 const char * name_end; 36 const char * value_start; 37 const char * value_end; 38 } _lv_svg_token_attr_t; 39 40 typedef struct { 41 const char * start; 42 const char * end; 43 _lv_svg_token_type_t type; 44 bool flat; 45 _lv_svg_token_attr_t * cur_attr; 46 lv_array_t attrs; 47 } _lv_svg_token_t; 48 49 typedef bool (*svg_token_process)(_lv_svg_token_t * token, void * user_data); 50 51 /********************** 52 * GLOBAL PROTOTYPES 53 **********************/ 54 55 /** 56 * @brief Parse SVG data and call a callback for each token 57 * @param svg_data pointer to SVG data 58 * @param len length of the SVG data 59 * @param cb callback function to be called for each token 60 * @param user_data custom data to be passed to the callback function 61 * @return true: SVG data successfully parsed, false: error occurred 62 */ 63 bool _lv_svg_tokenizer(const char * svg_data, uint32_t len, svg_token_process cb, void * user_data); 64 65 /********************** 66 * MACROS 67 **********************/ 68 #endif /*LV_USE_SVG*/ 69 70 #endif /*LV_SVG_TOKEN_H*/ 71