static void bezierline_save(Bezierline *bezierline, ObjectNode obj_node, DiaContext *ctx) { if (connpoint_is_autogap(bezierline->bez.object.handles[0]->connected_to) || connpoint_is_autogap(bezierline->bez.object.handles[3*(bezierline->bez.bezier.num_points-1)]->connected_to) || bezierline->absolute_start_gap || bezierline->absolute_end_gap) { Point gap_points[4]; compute_gap_points(bezierline, gap_points); exchange_bez_gap_points(&bezierline->bez,gap_points); bezierconn_update_boundingbox(&bezierline->bez); exchange_bez_gap_points(&bezierline->bez,gap_points); } bezierconn_save(&bezierline->bez, obj_node, ctx); if (!color_equals(&bezierline->line_color, &color_black)) data_add_color(new_attribute(obj_node, "line_color"), &bezierline->line_color, ctx); if (bezierline->line_width != 0.1) data_add_real(new_attribute(obj_node, PROP_STDNAME_LINE_WIDTH), bezierline->line_width, ctx); if (bezierline->line_style != LINESTYLE_SOLID) data_add_enum(new_attribute(obj_node, "line_style"), bezierline->line_style, ctx); if (bezierline->line_style != LINESTYLE_SOLID && bezierline->dashlength != DEFAULT_LINESTYLE_DASHLEN) data_add_real(new_attribute(obj_node, "dashlength"), bezierline->dashlength, ctx); if (bezierline->line_join != LINEJOIN_MITER) data_add_enum(new_attribute(obj_node, "line_join"), bezierline->line_join, ctx); if (bezierline->line_caps != LINECAPS_BUTT) data_add_enum(new_attribute(obj_node, "line_caps"), bezierline->line_caps, ctx); if (bezierline->start_arrow.type != ARROW_NONE) { save_arrow(obj_node, &bezierline->start_arrow, "start_arrow", "start_arrow_length", "start_arrow_width", ctx); } if (bezierline->end_arrow.type != ARROW_NONE) { save_arrow(obj_node, &bezierline->end_arrow, "end_arrow", "end_arrow_length", "end_arrow_width", ctx); } if (bezierline->absolute_start_gap) data_add_real(new_attribute(obj_node, "absolute_start_gap"), bezierline->absolute_start_gap, ctx); if (bezierline->absolute_end_gap) data_add_real(new_attribute(obj_node, "absolute_end_gap"), bezierline->absolute_end_gap, ctx); }
static void bezierline_save(Bezierline *bezierline, ObjectNode obj_node, const char *filename) { bezierconn_save(&bezierline->bez, obj_node); if (!color_equals(&bezierline->line_color, &color_black)) data_add_color(new_attribute(obj_node, "line_color"), &bezierline->line_color); if (bezierline->line_width != 0.1) data_add_real(new_attribute(obj_node, "line_width"), bezierline->line_width); if (bezierline->line_style != LINESTYLE_SOLID) data_add_enum(new_attribute(obj_node, "line_style"), bezierline->line_style); if (bezierline->line_style != LINESTYLE_SOLID && bezierline->dashlength != DEFAULT_LINESTYLE_DASHLEN) data_add_real(new_attribute(obj_node, "dashlength"), bezierline->dashlength); if (bezierline->start_arrow.type != ARROW_NONE) { data_add_enum(new_attribute(obj_node, "start_arrow"), bezierline->start_arrow.type); data_add_real(new_attribute(obj_node, "start_arrow_length"), bezierline->start_arrow.length); data_add_real(new_attribute(obj_node, "start_arrow_width"), bezierline->start_arrow.width); } if (bezierline->end_arrow.type != ARROW_NONE) { data_add_enum(new_attribute(obj_node, "end_arrow"), bezierline->end_arrow.type); data_add_real(new_attribute(obj_node, "end_arrow_length"), bezierline->end_arrow.length); data_add_real(new_attribute(obj_node, "end_arrow_width"), bezierline->end_arrow.width); } }