Boolequation * load_boolequation(ObjectNode obj_node, const gchar *attrname, const gchar *defaultvalue, DiaFont *font, real fontheight, Color *color) { gchar *value = NULL; Boolequation *booleq; AttributeNode attr; booleq = boolequation_create(NULL,font,fontheight,color); attr = object_find_attribute(obj_node,attrname); if (attr) value = data_string(attribute_first_data(attr)); else if (defaultvalue) value = g_strdup (defaultvalue); if (value) boolequation_set_value(booleq,value); g_free(value); return booleq; }
static DiaObject * transition_create(Point *startpoint, void *user_data, Handle **handle1, Handle **handle2) { Transition *transition; DiaObject *obj; int i; Element *elem; DiaFont *default_font = NULL; real default_fontheight; Color fg_color; transition = g_malloc0(sizeof(Transition)); elem = &transition->element; obj = &elem->object; obj->type = &transition_type; obj->ops = &transition_ops; elem->corner = *startpoint; elem->width = TRANSITION_DECLAREDWIDTH; elem->height = TRANSITION_DECLAREDHEIGHT; element_init(elem, 10,2); attributes_get_default_font(&default_font,&default_fontheight); fg_color = attributes_get_foreground(); transition->receptivity = boolequation_create("", default_font, default_fontheight, &fg_color); transition->rcep_value = g_strdup(""); transition->rcep_font = dia_font_ref(default_font); transition->rcep_fontheight = default_fontheight; transition->rcep_color = fg_color; dia_font_unref(default_font); for (i=0;i<8;i++) { obj->handles[i]->type = HANDLE_NON_MOVABLE; } obj->handles[8] = &transition->north; obj->handles[9] = &transition->south; transition->north.connect_type = HANDLE_CONNECTABLE; transition->north.type = HANDLE_MAJOR_CONTROL; transition->north.id = HANDLE_NORTH; transition->south.connect_type = HANDLE_CONNECTABLE; transition->south.type = HANDLE_MAJOR_CONTROL; transition->south.id = HANDLE_SOUTH; transition->north.pos.x = -65536.0; /* magic */ for (i=0;i<2;i++) { obj->connections[i] = &transition->connections[i]; obj->connections[i]->object = obj; obj->connections[i]->connected = NULL; } transition_update_data(transition); *handle1 = NULL; *handle2 = obj->handles[0]; return &transition->element.object; }