typeStroke=2; //gradient
}
- xmlpp::Element* child_layer = nodeStartBasicLayer(root->add_child("layer"));
- xmlpp::Element* child_fill = child_layer;
- xmlpp::Element* child_stroke = child_layer;
- if(typeFill==2){
- child_fill=nodeStartBasicLayer(child_fill->add_child("layer"));
- }
- if(typeStroke==2){
- child_stroke=nodeStartBasicLayer(child_stroke->add_child("layer"));
- }
+ xmlpp::Element* child_layer = root;
+ xmlpp::Element* child_fill;
+ xmlpp::Element* child_stroke;
//make simple fills
if(nodename.compare("rect")==0 && typeFill!=0){
+ if (mtx) child_layer = nodeStartBasicLayer(root->add_child("layer"), id);
+ child_fill=child_layer;
parser_rect(nodeElement,child_fill,fill,fill_opacity,opacity);
if(typeFill==2){
build_fill (child_fill,fill,NULL);
parser_effects(nodeElement,child_layer,parent_style,mtx);
return;
}
-
+ if ((!(SVG_RESOLVE_BLINE) && mtx) || typeFill==2 || typeStroke==2)
+ child_layer = nodeStartBasicLayer(root->add_child("layer"), id);
+ child_fill=child_layer;
+ child_stroke=child_layer;
//=======================================================================
//int n = k.size();
if(typeFill!=0){//region layer
+ /*if(typeFill==2){
+ child_fill=nodeStartBasicLayer(child_fill->add_child("layer"));
+ }*/
for (aux = k.begin(); aux!=k.end(); aux++){
xmlpp::Element *child_region=child_fill->add_child("layer");
child_region->set_attribute("type","region");
}
if(typeStroke!=0){//outline layer
+ if(typeStroke==2){
+ child_stroke=nodeStartBasicLayer(child_stroke->add_child("layer"),"stroke");
+ }
for (aux=k.begin(); aux!=k.end(); aux++){
xmlpp::Element *child_outline=child_stroke->add_child("layer");
child_outline->set_attribute("type","outline");
}
if(typeStroke==2){ //gradient in onto mode (stroke)
- if (SVG_RESOLVE_BLINE)
- build_fill(child_stroke,fill,mtx);
- else
- build_fill(child_stroke,fill,NULL);
- }
- if (SVG_RESOLVE_BLINE)
- parser_effects(nodeElement,child_layer,parent_style,NULL);
- else
- parser_effects(nodeElement,child_layer,parent_style,mtx);
-
+ if (SVG_RESOLVE_BLINE)
+ build_fill(child_stroke,stroke,mtx);
+ else
+ build_fill(child_stroke,stroke,NULL);
+ }
}
+
+ if (SVG_RESOLVE_BLINE)
+ parser_effects(nodeElement,child_layer,parent_style,NULL);
+ else
+ parser_effects(nodeElement,child_layer,parent_style,mtx);
}
}
/* === EFFECTS PARSERS ===================================================== */
void
-Svg_parser::parser_effects(const xmlpp::Element* nodeElement,xmlpp::Element* root,String parent_style,Matrix* mtx){
+Svg_parser::parser_effects(const xmlpp::Element* /*nodeElement*/,xmlpp::Element* root,String /*parent_style*/,Matrix* mtx){
build_transform(root, mtx);
}
gradient->set_attribute("type","linear_gradient");
gradient->set_attribute("active","true");
- gradient->set_attribute("desc","Gradient004");
+ gradient->set_attribute("desc",data->name);
build_param (gradient->add_child("param"),"z_depth","real","0");
build_param (gradient->add_child("param"),"amount","real","1");
//straight onto
//gradient link
xmlpp::Element *child_stops=gradient->add_child("param");
child_stops->set_attribute("name","gradient");
+ child_stops->set_attribute("guid",GUID::hasher(data->name).get_string());
build_stop_color (child_stops->add_child("gradient"),data->stops);
build_param (gradient->add_child("param"),"loop","bool","false");
build_param (gradient->add_child("param"),"zigzag","bool","false");
layer->set_attribute("type","PasteCanvas");
layer->set_attribute("active","true");
layer->set_attribute("version","0.1");
- layer->set_attribute("desc","Composite");
+ layer->set_attribute("desc",data->name);
build_param (layer->add_child("param"),"z_depth","real","0");
build_param (layer->add_child("param"),"amount","real","1");
build_param (layer->add_child("param"),"blend_method","integer","21"); //straight onto
xmlpp::Element* child_layer=child->add_child("canvas");
gradient=child_layer->add_child("layer");
+ gradient->set_attribute("desc",data->name);
build_param (gradient->add_child("param"),"blend_method","integer","0"); //composite
Matrix *mtx2=NULL;
if (mtx && data->transform){
}else {
gradient=root->add_child("layer");
+ gradient->set_attribute("desc",data->name);
build_param (gradient->add_child("param"),"blend_method","integer","21"); //straight onto
}
//gradient link
xmlpp::Element *child_stops=gradient->add_child("param");
child_stops->set_attribute("name","gradient");
+ child_stops->set_attribute("guid",GUID::hasher(data->name).get_string());
build_stop_color (child_stops->add_child("gradient"),data->stops);
//here the center point and radius
}
xmlpp::Element*
-Svg_parser::nodeStartBasicLayer(xmlpp::Element* root){
+Svg_parser::nodeStartBasicLayer(xmlpp::Element* root, String name){
root->set_attribute("type","PasteCanvas");
root->set_attribute("active","true");
root->set_attribute("version","0.1");
- root->set_attribute("desc","Composite");
+ root->set_attribute("desc",name);
build_param (root->add_child("param"),"z_depth","real","0");
build_param (root->add_child("param"),"amount","real","1");
build_param (root->add_child("param"),"blend_method","integer","0");
Matrix*
Svg_parser::newMatrix(const String mvector){
if(!mvector.empty()){
- Matrix* data=(Matrix*)malloc(sizeof(Matrix));
std::vector<String> tokens=tokenize(mvector,",");
if(tokens.size()!=6) return newMatrix(1,0,0,1,0,0);
+ Matrix* data=(Matrix*)malloc(sizeof(Matrix));
data->a=atof(tokens.at(0).data());
data->b=atof(tokens.at(1).data());
data->c=atof(tokens.at(2).data());