作図ソフト dia の改良版
Revision | 84c37afb9e258ed00cb6911c0949a9e0df314e07 (tree) |
---|---|
Time | 2015-01-12 05:11:43 |
Author | Hans Breuer <hans@breu...> |
Commiter | Hans Breuer |
uml: update 'UML - Activity' to have main point
less code, more functionality
@@ -39,11 +39,13 @@ | ||
39 | 39 | |
40 | 40 | typedef struct _State State; |
41 | 41 | |
42 | +#define NUM_CONNECTIONS 9 | |
43 | + | |
42 | 44 | /** \file objects/UML/activity.c Implementation of the 'UML - Activity' type */ |
43 | 45 | struct _State { |
44 | 46 | Element element; |
45 | 47 | |
46 | - ConnectionPoint connections[8]; | |
48 | + ConnectionPoint connections[NUM_CONNECTIONS]; | |
47 | 49 | |
48 | 50 | Text *text; |
49 | 51 |
@@ -259,30 +261,7 @@ state_update_data(State *state) | ||
259 | 261 | extra->border_trans = STATE_LINEWIDTH / 2.0; |
260 | 262 | |
261 | 263 | /* Update connections: */ |
262 | - state->connections[0].pos = elem->corner; | |
263 | - state->connections[1].pos.x = elem->corner.x + elem->width / 2.0; | |
264 | - state->connections[1].pos.y = elem->corner.y; | |
265 | - state->connections[2].pos.x = elem->corner.x + elem->width; | |
266 | - state->connections[2].pos.y = elem->corner.y; | |
267 | - state->connections[3].pos.x = elem->corner.x; | |
268 | - state->connections[3].pos.y = elem->corner.y + elem->height / 2.0; | |
269 | - state->connections[4].pos.x = elem->corner.x + elem->width; | |
270 | - state->connections[4].pos.y = elem->corner.y + elem->height / 2.0; | |
271 | - state->connections[5].pos.x = elem->corner.x; | |
272 | - state->connections[5].pos.y = elem->corner.y + elem->height; | |
273 | - state->connections[6].pos.x = elem->corner.x + elem->width / 2.0; | |
274 | - state->connections[6].pos.y = elem->corner.y + elem->height; | |
275 | - state->connections[7].pos.x = elem->corner.x + elem->width; | |
276 | - state->connections[7].pos.y = elem->corner.y + elem->height; | |
277 | - | |
278 | - state->connections[0].directions = DIR_NORTH|DIR_WEST; | |
279 | - state->connections[1].directions = DIR_NORTH; | |
280 | - state->connections[2].directions = DIR_NORTH|DIR_EAST; | |
281 | - state->connections[3].directions = DIR_WEST; | |
282 | - state->connections[4].directions = DIR_EAST; | |
283 | - state->connections[5].directions = DIR_SOUTH|DIR_WEST; | |
284 | - state->connections[6].directions = DIR_SOUTH; | |
285 | - state->connections[7].directions = DIR_SOUTH|DIR_EAST; | |
264 | + element_update_connections_rectangle (elem, state->connections); | |
286 | 265 | |
287 | 266 | element_update_boundingbox(elem); |
288 | 267 |
@@ -325,13 +304,14 @@ state_create_activity(Point *startpoint, | ||
325 | 304 | |
326 | 305 | state->text = new_text("", font, 0.8, &p, &color_black, ALIGN_CENTER); |
327 | 306 | dia_font_unref(font); |
328 | - element_init(elem, 8, 8); | |
307 | + element_init(elem, 8, NUM_CONNECTIONS); | |
329 | 308 | |
330 | - for (i=0;i<8;i++) { | |
309 | + for (i=0;i<NUM_CONNECTIONS;i++) { | |
331 | 310 | obj->connections[i] = &state->connections[i]; |
332 | 311 | state->connections[i].object = obj; |
333 | 312 | state->connections[i].connected = NULL; |
334 | 313 | } |
314 | + state->connections[8].flags = CP_FLAGS_MAIN; | |
335 | 315 | elem->extra_spacing.border_trans = 0.0; |
336 | 316 | state_update_data(state); |
337 | 317 |