X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Fsrc%2Fmodules%2Fmod_svg%2Fsvg_parser.h;h=3ac8f9b0a1bcfc429c8e5a08313490659a625005;hb=f914485e14ee9b40981817346ad0e2932d4ded1e;hp=54e57b05147c19bddcb74eb4659b3298d34feeb7;hpb=28cab743c75c1e410a61a2d01ddc397c9cf63c20;p=synfig.git diff --git a/synfig-core/src/modules/mod_svg/svg_parser.h b/synfig-core/src/modules/mod_svg/svg_parser.h index 54e57b0..3ac8f9b 100644 --- a/synfig-core/src/modules/mod_svg/svg_parser.h +++ b/synfig-core/src/modules/mod_svg/svg_parser.h @@ -65,13 +65,13 @@ typedef struct stop_t{ float pos; }ColorStop; typedef struct linear_g{ - char name[40]; + char name[80]; float x1,x2,y1,y2; std::list *stops; Matrix *transform; }LinearGradient; typedef struct radial_g{ - char name[40]; + char name[80]; float cx,cy;//center point //float fx,fy; //not supported by Synfig float r; //radius @@ -84,12 +84,20 @@ typedef struct url_t{ void* data; }URL; -typedef struct vertice_t{ +typedef struct Vertex_t{ float x,y; float radius1,angle1; float radius2,angle2; bool split; -}Vertice; +}Vertex; + +typedef struct bline_t{ + std::list *points; + bool loop; + String* bline_id; + String* offset_id; +}BLine; + class Svg_parser { //this is inkscape oriented in some cases @@ -108,7 +116,6 @@ private: int uid; int kux,set_canvas; float ox,oy; - bool loop;//aux :D //urls std::list lg; std::list rg; @@ -131,8 +138,8 @@ private: void parser_layer(const xmlpp::Node* node,xmlpp::Element* root,String parent_style,Matrix* mtx); void parser_rect(const xmlpp::Element* nodeElement,xmlpp::Element* root,String fill, String fill_opacity, String opacity); /* === CONVERT TO PATH PARSERS ==================== */ - std::list > parser_path_polygon(Glib::ustring polygon_points, Matrix* mtx); - std::list > parser_path_d(String path_d,Matrix* mtx); + std::list parser_path_polygon(Glib::ustring polygon_points, Matrix* mtx); + std::list parser_path_d(String path_d,Matrix* mtx); /* === EFFECTS PARSERS ============================ */ void parser_effects(const xmlpp::Element* nodeElement,xmlpp::Element* root,String parent_style,Matrix* mtx); @@ -144,6 +151,7 @@ private: ColorStop* newColorStop(String color,float opacity,float pos); LinearGradient* newLinearGradient(String name,float x1,float y1, float x2,float y2,std::list *stops, Matrix* transform); RadialGradient* newRadialGradient(String name,float cx,float cy,float r,std::list *stops, Matrix* transform); + BLine* newBLine(std::list *points,bool loop); /* === BUILDS ===================================== */ void build_transform(xmlpp::Element* root,Matrix* mtx); @@ -158,9 +166,9 @@ private: void build_gamma(xmlpp::Element* root,float gamma); void build_rotate(xmlpp::Element* root,float dx,float dy,float angle); void build_translate(xmlpp::Element* root,float dx,float dy); - void build_points(xmlpp::Element* root,std::list p); - void build_vertice(xmlpp::Element* root , Vertice *p); - void build_bline(xmlpp::Element* root,std::list p,bool loop,String blinegui); + void build_points(xmlpp::Element* root,std::list p); + void build_vertex(xmlpp::Element* root , Vertex *p); + void build_bline(xmlpp::Element* root,std::list p,bool loop,String blineguid); void build_param (xmlpp::Element* root,String name,String type,String value); void build_param (xmlpp::Element* root,String name,String type,float value); void build_param (xmlpp::Element* root,String name,String type,int value); @@ -170,16 +178,17 @@ private: void build_vector (xmlpp::Element* root,String name,float x,float y,String guid); void build_color(xmlpp::Element* root,float r,float g,float b,float a); xmlpp::Element* nodeStartBasicLayer(xmlpp::Element* root); + xmlpp::Element* nodeStartBasicLayer(xmlpp::Element* root, String name); /* === COORDINATES & TRANSFORMATIONS ============== */ //points,etc void coor2vect(float *x,float *y); - void setTg2(Vertice* p,float p1x,float p1y,float p2x,float p2y); - void setTg1(Vertice *p,float p1x,float p1y,float p2x,float p2y); - void setSplit(Vertice* p,bool val); - int isFirst(Vertice* nodo,float a, float b); - Vertice* newVertice(float x,float y); + void setTg2(Vertex* p,float p1x,float p1y,float p2x,float p2y); + void setTg1(Vertex *p,float p1x,float p1y,float p2x,float p2y); + void setSplit(Vertex* p,bool val); + int isFirst(Vertex* nodo,float a, float b); + Vertex* newVertex(float x,float y); //matrix operations Matrix* parser_transform(const String transform); @@ -204,6 +213,7 @@ private: int getGreen(String hex); int getBlue(String hex); int hextodec(String hex); + int getColor(String name, int position); float getDimension(const String ac); //string functions void removeS(String *input);