static DiaObject * bezierline_load(ObjectNode obj_node, int version, DiaContext *ctx) { Bezierline *bezierline; BezierConn *bez; DiaObject *obj; AttributeNode attr; bezierline = g_new0(Bezierline, 1); bezierline->bez.object.enclosing_box = g_new0 (Rectangle, 1); bez = &bezierline->bez; obj = &bez->object; obj->type = &bezierline_type; obj->ops = &bezierline_ops; bezierconn_load(bez, obj_node, ctx); bezierline->line_color = color_black; attr = object_find_attribute(obj_node, "line_color"); if (attr != NULL) data_color(attribute_first_data(attr), &bezierline->line_color, ctx); bezierline->line_width = 0.1; attr = object_find_attribute(obj_node, PROP_STDNAME_LINE_WIDTH); if (attr != NULL) bezierline->line_width = data_real(attribute_first_data(attr), ctx); bezierline->line_style = LINESTYLE_SOLID; attr = object_find_attribute(obj_node, "line_style"); if (attr != NULL) bezierline->line_style = data_enum(attribute_first_data(attr), ctx); bezierline->line_join = LINEJOIN_MITER; attr = object_find_attribute(obj_node, "line_join"); if (attr != NULL) bezierline->line_join = data_enum(attribute_first_data(attr), ctx); bezierline->line_caps = LINECAPS_BUTT; attr = object_find_attribute(obj_node, "line_caps"); if (attr != NULL) bezierline->line_caps = data_enum(attribute_first_data(attr), ctx); bezierline->dashlength = DEFAULT_LINESTYLE_DASHLEN; attr = object_find_attribute(obj_node, "dashlength"); if (attr != NULL) bezierline->dashlength = data_real(attribute_first_data(attr), ctx); load_arrow(obj_node, &bezierline->start_arrow, "start_arrow", "start_arrow_length", "start_arrow_width", ctx); load_arrow(obj_node, &bezierline->end_arrow, "end_arrow", "end_arrow_length", "end_arrow_width", ctx); bezierline->absolute_start_gap = 0.0; attr = object_find_attribute(obj_node, "absolute_start_gap"); if (attr != NULL) bezierline->absolute_start_gap = data_real(attribute_first_data(attr), ctx); bezierline->absolute_end_gap = 0.0; attr = object_find_attribute(obj_node, "absolute_end_gap"); if (attr != NULL) bezierline->absolute_end_gap = data_real(attribute_first_data(attr), ctx); /* if "screws up the bounding box if auto_gap" it must be fixed there * not by copying some meaningless bounding_box before this function call! * But the real fix is in connectionpoint.c(connpoint_is_autogap) */ bezierline_update_data(bezierline); return &bezierline->bez.object; }
static Object * bezierline_load(ObjectNode obj_node, int version, const char *filename) { Bezierline *bezierline; BezierConn *bez; Object *obj; AttributeNode attr; bezierline = g_new(Bezierline, 1); bez = &bezierline->bez; obj = (Object *) bezierline; obj->type = &bezierline_type; obj->ops = &bezierline_ops; bezierconn_load(bez, obj_node); bezierline->line_color = color_black; attr = object_find_attribute(obj_node, "line_color"); if (attr != NULL) data_color(attribute_first_data(attr), &bezierline->line_color); bezierline->line_width = 0.1; attr = object_find_attribute(obj_node, "line_width"); if (attr != NULL) bezierline->line_width = data_real(attribute_first_data(attr)); bezierline->line_style = LINESTYLE_SOLID; attr = object_find_attribute(obj_node, "line_style"); if (attr != NULL) bezierline->line_style = data_enum(attribute_first_data(attr)); bezierline->dashlength = DEFAULT_LINESTYLE_DASHLEN; attr = object_find_attribute(obj_node, "dashlength"); if (attr != NULL) bezierline->dashlength = data_real(attribute_first_data(attr)); bezierline->start_arrow.type = ARROW_NONE; bezierline->start_arrow.length = 0.8; bezierline->start_arrow.width = 0.8; attr = object_find_attribute(obj_node, "start_arrow"); if (attr != NULL) bezierline->start_arrow.type = data_enum(attribute_first_data(attr)); attr = object_find_attribute(obj_node, "start_arrow_length"); if (attr != NULL) bezierline->start_arrow.length = data_real(attribute_first_data(attr)); attr = object_find_attribute(obj_node, "start_arrow_width"); if (attr != NULL) bezierline->start_arrow.width = data_real(attribute_first_data(attr)); bezierline->end_arrow.type = ARROW_NONE; bezierline->end_arrow.length = 0.8; bezierline->end_arrow.width = 0.8; attr = object_find_attribute(obj_node, "end_arrow"); if (attr != NULL) bezierline->end_arrow.type = data_enum(attribute_first_data(attr)); attr = object_find_attribute(obj_node, "end_arrow_length"); if (attr != NULL) bezierline->end_arrow.length = data_real(attribute_first_data(attr)); attr = object_find_attribute(obj_node, "end_arrow_width"); if (attr != NULL) bezierline->end_arrow.width = data_real(attribute_first_data(attr)); bezierline_update_data(bezierline); return (Object *)bezierline; }