static void line_set_props(Line *line, GPtrArray *props) { object_set_props_from_offsets(&line->connection.object, line_offsets, props); line_update_data(line); }
static DiaObject * line_copy(Line *line) { Line *newline; Connection *conn, *newconn; DiaObject *newobj; int rcc = 0; conn = &line->connection; newline = g_malloc0(sizeof(Line)); newconn = &newline->connection; newobj = &newconn->object; connection_copy(conn, newconn); newline->cpl = connpointline_copy(newobj,line->cpl,&rcc); newline->line_color = line->line_color; newline->line_width = line->line_width; newline->line_style = line->line_style; newline->line_caps = line->line_caps; newline->dashlength = line->dashlength; newline->start_arrow = line->start_arrow; newline->end_arrow = line->end_arrow; newline->absolute_start_gap = line->absolute_start_gap; newline->absolute_end_gap = line->absolute_end_gap; line_update_data(line); return &newline->connection.object; }
static ObjectChange * line_apply_properties(Line *line) { ObjectState *old_state; if (line != line_properties_dialog->line) { printf("Dialog problem: %p != %p\n", line, line_properties_dialog->line); line = line_properties_dialog->line; } old_state = (ObjectState *)line_get_state(line); line->line_width = gtk_spin_button_get_value_as_float(line_properties_dialog->line_width); dia_color_selector_get_color(line_properties_dialog->color, &line->line_color); dia_line_style_selector_get_linestyle(line_properties_dialog->line_style, &line->line_style, &line->dashlength); line->start_arrow = dia_arrow_selector_get_arrow(line_properties_dialog->start_arrow); line->end_arrow = dia_arrow_selector_get_arrow(line_properties_dialog->end_arrow); line_update_data(line); return new_object_state_change((Object *)line, old_state, (GetStateFunc)line_get_state, (SetStateFunc)line_set_state); }
/*! * \brief Remove a connection point from the line * * \memberof Line */ static ObjectChange * line_remove_connpoint_callback(DiaObject *obj, Point *clicked, gpointer data) { ObjectChange *oc; oc = connpointline_remove_point(((Line *)obj)->cpl,clicked); line_update_data((Line *)obj); return oc; }
static void line_move_handle(Line *line, Handle *handle, Point *to, HandleMoveReason reason, ModifierKeys modifiers) { assert(line!=NULL); assert(handle!=NULL); assert(to!=NULL); connection_move_handle(&line->connection, handle->id, to, reason); line_update_data(line); }
static void line_set_state(Line *line, LineState *state) { line->line_color = state->line_color; line->line_width = state->line_width; line->line_style = state->line_style; line->dashlength = state->dashlength; line->start_arrow = state->start_arrow; line->end_arrow = state->end_arrow; g_free(state); line_update_data(line); }
static void line_move(Line *line, Point *to) { Point start_to_end; Point *endpoints = &line->connection.endpoints[0]; start_to_end = endpoints[1]; point_sub(&start_to_end, &endpoints[0]); endpoints[1] = endpoints[0] = *to; point_add(&endpoints[1], &start_to_end); line_update_data(line); }
static ObjectChange* line_move_handle(Line *line, Handle *handle, Point *to, ConnectionPoint *cp, HandleMoveReason reason, ModifierKeys modifiers) { assert(line!=NULL); assert(handle!=NULL); assert(to!=NULL); connection_move_handle(&line->connection, handle->id, to, cp, reason, modifiers); line_update_data(line); return NULL; }
static DiaObject * line_create(Point *startpoint, void *user_data, Handle **handle1, Handle **handle2) { Line *line; Connection *conn; DiaObject *obj; Point defaultlen = { 1.0, 1.0 }; line_init_defaults(); line = g_malloc0(sizeof(Line)); line->line_width = attributes_get_default_linewidth(); line->line_color = attributes_get_foreground(); line->absolute_start_gap = default_properties.absolute_start_gap; line->absolute_end_gap = default_properties.absolute_end_gap; conn = &line->connection; conn->endpoints[0] = *startpoint; conn->endpoints[1] = *startpoint; point_add(&conn->endpoints[1], &defaultlen); obj = &conn->object; obj->type = &line_type; obj->ops = &line_ops; connection_init(conn, 2, 0); line->cpl = connpointline_create(obj,1); attributes_get_default_line_style(&line->line_style, &line->dashlength); line->line_caps = LINECAPS_BUTT; line->start_arrow = attributes_get_default_start_arrow(); line->end_arrow = attributes_get_default_end_arrow(); line_update_data(line); *handle1 = obj->handles[0]; *handle2 = obj->handles[1]; return &line->connection.object; }
static Object * line_create(Point *startpoint, void *user_data, Handle **handle1, Handle **handle2) { Line *line; Connection *conn; Object *obj; Point defaultlen = { 1.0, 1.0 }; /*line_init_defaults();*/ line = g_malloc(sizeof(Line)); line->line_width = attributes_get_default_linewidth(); line->line_color = attributes_get_foreground(); conn = &line->connection; conn->endpoints[0] = *startpoint; conn->endpoints[1] = *startpoint; point_add(&conn->endpoints[1], &defaultlen); obj = (Object *) line; obj->type = &line_type; obj->ops = &line_ops; connection_init(conn, 2, 1); obj->connections[0] = &line->middle_point; line->middle_point.object = obj; line->middle_point.connected = NULL; attributes_get_default_line_style(&line->line_style, &line->dashlength); line->start_arrow = attributes_get_default_start_arrow(); line->end_arrow = attributes_get_default_end_arrow(); line_update_data(line); *handle1 = obj->handles[0]; *handle2 = obj->handles[1]; return (Object *)line; }
static DiaObject * line_load(ObjectNode obj_node, int version, DiaContext *ctx) { Line *line; Connection *conn; DiaObject *obj; AttributeNode attr; line = g_malloc0(sizeof(Line)); conn = &line->connection; obj = &conn->object; obj->type = &line_type; obj->ops = &line_ops; connection_load(conn, obj_node, ctx); line->line_color = color_black; attr = object_find_attribute(obj_node, "line_color"); if (attr != NULL) data_color(attribute_first_data(attr), &line->line_color, ctx); line->line_width = 0.1; attr = object_find_attribute(obj_node, PROP_STDNAME_LINE_WIDTH); if (attr != NULL) line->line_width = data_real(attribute_first_data(attr), ctx); line->line_style = LINESTYLE_SOLID; attr = object_find_attribute(obj_node, "line_style"); if (attr != NULL) line->line_style = data_enum(attribute_first_data(attr), ctx); line->line_caps = LINECAPS_BUTT; attr = object_find_attribute(obj_node, "line_caps"); if (attr != NULL) line->line_caps = data_enum(attribute_first_data(attr), ctx); load_arrow(obj_node, &line->start_arrow, "start_arrow", "start_arrow_length", "start_arrow_width", ctx); load_arrow(obj_node, &line->end_arrow, "end_arrow", "end_arrow_length", "end_arrow_width", ctx); line->absolute_start_gap = 0.0; attr = object_find_attribute(obj_node, "absolute_start_gap"); if (attr != NULL) line->absolute_start_gap = data_real(attribute_first_data(attr), ctx); line->absolute_end_gap = 0.0; attr = object_find_attribute(obj_node, "absolute_end_gap"); if (attr != NULL) line->absolute_end_gap = data_real(attribute_first_data(attr), ctx); line->dashlength = DEFAULT_LINESTYLE_DASHLEN; attr = object_find_attribute(obj_node, "dashlength"); if (attr != NULL) line->dashlength = data_real(attribute_first_data(attr), ctx); connection_init(conn, 2, 0); line->cpl = connpointline_load(obj,obj_node,"numcp",1,NULL, ctx); line_update_data(line); return &line->connection.object; }
static Object * line_load(ObjectNode obj_node, int version, const char *filename) { Line *line; Connection *conn; Object *obj; AttributeNode attr; line = g_malloc(sizeof(Line)); conn = &line->connection; obj = (Object *) line; obj->type = &line_type; obj->ops = &line_ops; connection_load(conn, obj_node); line->line_color = color_black; attr = object_find_attribute(obj_node, "line_color"); if (attr != NULL) data_color(attribute_first_data(attr), &line->line_color); line->line_width = 0.1; attr = object_find_attribute(obj_node, "line_width"); if (attr != NULL) line->line_width = data_real(attribute_first_data(attr)); line->line_style = LINESTYLE_SOLID; attr = object_find_attribute(obj_node, "line_style"); if (attr != NULL) line->line_style = data_enum(attribute_first_data(attr)); line->start_arrow.type = ARROW_NONE; line->start_arrow.length = 0.8; line->start_arrow.width = 0.8; attr = object_find_attribute(obj_node, "start_arrow"); if (attr != NULL) line->start_arrow.type = data_enum(attribute_first_data(attr)); attr = object_find_attribute(obj_node, "start_arrow_length"); if (attr != NULL) line->start_arrow.length = data_real(attribute_first_data(attr)); attr = object_find_attribute(obj_node, "start_arrow_width"); if (attr != NULL) line->start_arrow.width = data_real(attribute_first_data(attr)); line->end_arrow.type = ARROW_NONE; line->end_arrow.length = 0.8; line->end_arrow.width = 0.8; attr = object_find_attribute(obj_node, "end_arrow"); if (attr != NULL) line->end_arrow.type = data_enum(attribute_first_data(attr)); attr = object_find_attribute(obj_node, "end_arrow_length"); if (attr != NULL) line->end_arrow.length = data_real(attribute_first_data(attr)); attr = object_find_attribute(obj_node, "end_arrow_width"); if (attr != NULL) line->end_arrow.width = data_real(attribute_first_data(attr)); line->dashlength = DEFAULT_LINESTYLE_DASHLEN; attr = object_find_attribute(obj_node, "dashlength"); if (attr != NULL) line->dashlength = data_real(attribute_first_data(attr)); connection_init(conn, 2, 1); obj->connections[0] = &line->middle_point; line->middle_point.object = obj; line->middle_point.connected = NULL; line_update_data(line); return (Object *)line; }