Intruduce casting macro GIMP_ANCHOR.

2003-08-26  Simon Budig  <simon@gimp.org>

	* app/vectors/gimpanchor.h: Intruduce casting macro GIMP_ANCHOR.

	* app/tools/gimpvectortool.c
	* app/vectors/gimpstroke.c
	* app/vectors/gimpbezierstroke.c
	* app/vectors/gimpvectors-compat.c: Use it for code readibility.
This commit is contained in:
Simon Budig 2003-08-26 14:29:10 +00:00 committed by Simon Budig
parent 3b30a0b80a
commit 47571782a7
6 changed files with 64 additions and 55 deletions

View File

@ -1,3 +1,12 @@
2003-08-26 Simon Budig <simon@gimp.org>
* app/vectors/gimpanchor.h: Intruduce casting macro GIMP_ANCHOR.
* app/tools/gimpvectortool.c
* app/vectors/gimpstroke.c
* app/vectors/gimpbezierstroke.c
* app/vectors/gimpvectors-compat.c: Use it for code readibility.
2003-08-26 Michael Natterer <mitch@gimp.org> 2003-08-26 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpdockbook.c: added gimp_dockbook_help_func() * app/widgets/gimpdockbook.c: added gimp_dockbook_help_func()

View File

@ -618,22 +618,22 @@ gimp_vector_tool_on_handle (GimpTool *tool,
while (anchor_list) while (anchor_list)
{ {
dx = coords->x - ((GimpAnchor *) anchor_list->data)->position.x; dx = coords->x - GIMP_ANCHOR (anchor_list->data)->position.x;
dy = coords->y - ((GimpAnchor *) anchor_list->data)->position.y; dy = coords->y - GIMP_ANCHOR (anchor_list->data)->position.y;
if (mindist < 0 || mindist > dx * dx + dy * dy) if (mindist < 0 || mindist > dx * dx + dy * dy)
{ {
mindist = dx * dx + dy * dy; mindist = dx * dx + dy * dy;
anchor = (GimpAnchor *) anchor_list->data; anchor = GIMP_ANCHOR (anchor_list->data);
if (ret_stroke) if (ret_stroke)
*ret_stroke = stroke; *ret_stroke = stroke;
} }
if ((pref_mindist < 0 || pref_mindist > dx * dx + dy * dy) && if ((pref_mindist < 0 || pref_mindist > dx * dx + dy * dy) &&
((GimpAnchor *) anchor_list->data)->type == preferred) GIMP_ANCHOR (anchor_list->data)->type == preferred)
{ {
pref_mindist = dx * dx + dy * dy; pref_mindist = dx * dx + dy * dy;
pref_anchor = (GimpAnchor *) anchor_list->data; pref_anchor = GIMP_ANCHOR (anchor_list->data);
pref_stroke = stroke; pref_stroke = stroke;
} }
@ -964,7 +964,7 @@ gimp_vector_tool_draw (GimpDrawTool *draw_tool)
for (list = draw_anchors; list; list = g_list_next (list)) for (list = draw_anchors; list; list = g_list_next (list))
{ {
cur_anchor = (GimpAnchor *) list->data; cur_anchor = GIMP_ANCHOR (list->data);
if (cur_anchor->type == GIMP_ANCHOR_ANCHOR) if (cur_anchor->type == GIMP_ANCHOR_ANCHOR)
{ {
@ -988,7 +988,7 @@ gimp_vector_tool_draw (GimpDrawTool *draw_tool)
for (list = draw_anchors; list; list = g_list_next (list)) for (list = draw_anchors; list; list = g_list_next (list))
{ {
cur_anchor = (GimpAnchor *) list->data; cur_anchor = GIMP_ANCHOR (list->data);
gimp_draw_tool_draw_handle (draw_tool, gimp_draw_tool_draw_handle (draw_tool,
GIMP_HANDLE_SQUARE, GIMP_HANDLE_SQUARE,

View File

@ -22,6 +22,7 @@
#ifndef __GIMP_ANCHOR_H__ #ifndef __GIMP_ANCHOR_H__
#define __GIMP_ANCHOR_H__ #define __GIMP_ANCHOR_H__
#define GIMP_ANCHOR(anchor) ((GimpAnchor *) (anchor))
struct _GimpAnchor struct _GimpAnchor
{ {

View File

@ -277,7 +277,7 @@ gimp_bezier_stroke_anchor_delete (GimpStroke *stroke,
{ {
g_return_if_fail (list != NULL); g_return_if_fail (list != NULL);
list2 = g_list_next (list); list2 = g_list_next (list);
gimp_anchor_free ((GimpAnchor *) list->data); gimp_anchor_free (GIMP_ANCHOR (list->data));
stroke->anchors = g_list_delete_link (stroke->anchors, list); stroke->anchors = g_list_delete_link (stroke->anchors, list);
list = list2; list = list2;
} }
@ -354,7 +354,7 @@ gimp_bezier_stroke_anchor_insert (GimpStroke *stroke,
for (i=0; i <= 3; i++) for (i=0; i <= 3; i++)
{ {
beziercoords[i] = ((GimpAnchor *) list->data)->position; beziercoords[i] = GIMP_ANCHOR (list->data)->position;
list = g_list_next (list); list = g_list_next (list);
if (!list) if (!list)
list = stroke->anchors; list = stroke->anchors;
@ -415,7 +415,7 @@ gimp_bezier_stroke_anchor_insert (GimpStroke *stroke,
} }
else else
{ {
((GimpAnchor *) list->data)->position = subdivided[i]; GIMP_ANCHOR (list->data)->position = subdivided[i];
} }
list = g_list_next (list); list = g_list_next (list);
@ -426,7 +426,7 @@ gimp_bezier_stroke_anchor_insert (GimpStroke *stroke,
stroke->anchors = g_list_first (stroke->anchors); stroke->anchors = g_list_first (stroke->anchors);
return ((GimpAnchor *) segment_start->data); return GIMP_ANCHOR (segment_start->data);
} }
@ -479,7 +479,7 @@ gimp_bezier_stroke_point_move_relative (GimpStroke *stroke,
for (i=0; i <= 1; i++) for (i=0; i <= 1; i++)
{ {
gimp_stroke_anchor_move_relative (stroke, ((GimpAnchor *) list->data), gimp_stroke_anchor_move_relative (stroke, GIMP_ANCHOR (list->data),
&(offsetcoords[i]), feature); &(offsetcoords[i]), feature);
list = g_list_next (list); list = g_list_next (list);
if (!list) if (!list)
@ -511,7 +511,7 @@ gimp_bezier_stroke_point_move_absolute (GimpStroke *stroke,
for (i=0; i <= 3; i++) for (i=0; i <= 3; i++)
{ {
beziercoords[i] = ((GimpAnchor *) list->data)->position; beziercoords[i] = GIMP_ANCHOR (list->data)->position;
list = g_list_next (list); list = g_list_next (list);
if (!list) if (!list)
list = stroke->anchors; list = stroke->anchors;
@ -555,7 +555,7 @@ gimp_bezier_stroke_nearest_point_get (const GimpStroke *stroke,
min_dist = -1; min_dist = -1;
for (anchorlist = stroke->anchors; for (anchorlist = stroke->anchors;
anchorlist && ((GimpAnchor *) anchorlist->data)->type != GIMP_ANCHOR_ANCHOR; anchorlist && GIMP_ANCHOR (anchorlist->data)->type != GIMP_ANCHOR_ANCHOR;
anchorlist = g_list_next (anchorlist)); anchorlist = g_list_next (anchorlist));
segment_start = anchorlist->data; segment_start = anchorlist->data;
@ -596,12 +596,12 @@ gimp_bezier_stroke_nearest_point_get (const GimpStroke *stroke,
while (count < 3) while (count < 3)
{ {
segmentcoords[count] = ((GimpAnchor *) anchorlist->data)->position; segmentcoords[count] = GIMP_ANCHOR (anchorlist->data)->position;
count++; count++;
} }
anchorlist = g_list_next (anchorlist); anchorlist = g_list_next (anchorlist);
if (anchorlist) if (anchorlist)
segmentcoords[3] = ((GimpAnchor *) anchorlist->data)->position; segmentcoords[3] = GIMP_ANCHOR (anchorlist->data)->position;
dist = gimp_bezier_stroke_segment_nearest_point_get (segmentcoords, dist = gimp_bezier_stroke_segment_nearest_point_get (segmentcoords,
coord, precision, coord, precision,
@ -795,12 +795,12 @@ gimp_bezier_stroke_is_extendable (GimpStroke *stroke,
if (listneighbor && neighbor->type == GIMP_ANCHOR_CONTROL) if (listneighbor && neighbor->type == GIMP_ANCHOR_CONTROL)
{ {
if (listneighbor->prev && if (listneighbor->prev &&
((GimpAnchor *) listneighbor->prev->data)->type == GIMP_ANCHOR_ANCHOR) GIMP_ANCHOR (listneighbor->prev->data)->type == GIMP_ANCHOR_ANCHOR)
{ {
listneighbor = listneighbor->prev; listneighbor = listneighbor->prev;
} }
else if (listneighbor->next && else if (listneighbor->next &&
((GimpAnchor *) listneighbor->next->data)->type == GIMP_ANCHOR_ANCHOR) GIMP_ANCHOR (listneighbor->next->data)->type == GIMP_ANCHOR_ANCHOR)
{ {
listneighbor = listneighbor->next; listneighbor = listneighbor->next;
} }
@ -917,12 +917,12 @@ gimp_bezier_stroke_extend (GimpStroke *stroke,
if (listneighbor && neighbor->type == GIMP_ANCHOR_CONTROL) if (listneighbor && neighbor->type == GIMP_ANCHOR_CONTROL)
{ {
if (listneighbor->prev && if (listneighbor->prev &&
((GimpAnchor *) listneighbor->prev->data)->type == GIMP_ANCHOR_ANCHOR) GIMP_ANCHOR (listneighbor->prev->data)->type == GIMP_ANCHOR_ANCHOR)
{ {
listneighbor = listneighbor->prev; listneighbor = listneighbor->prev;
} }
else if (listneighbor->next && else if (listneighbor->next &&
((GimpAnchor *) listneighbor->next->data)->type == GIMP_ANCHOR_ANCHOR) GIMP_ANCHOR (listneighbor->next->data)->type == GIMP_ANCHOR_ANCHOR)
{ {
listneighbor = listneighbor->next; listneighbor = listneighbor->next;
} }
@ -965,7 +965,7 @@ gimp_bezier_stroke_extend (GimpStroke *stroke,
if (loose_end == 1) if (loose_end == 1)
{ {
while (listneighbor && while (listneighbor &&
((GimpAnchor *) listneighbor->data)->type == GIMP_ANCHOR_CONTROL) GIMP_ANCHOR (listneighbor->data)->type == GIMP_ANCHOR_CONTROL)
{ {
control_count++; control_count++;
listneighbor = listneighbor->prev; listneighbor = listneighbor->prev;
@ -974,7 +974,7 @@ gimp_bezier_stroke_extend (GimpStroke *stroke,
else else
{ {
while (listneighbor && while (listneighbor &&
((GimpAnchor *) listneighbor->data)->type == GIMP_ANCHOR_CONTROL) GIMP_ANCHOR (listneighbor->data)->type == GIMP_ANCHOR_CONTROL)
{ {
control_count++; control_count++;
listneighbor = listneighbor->next; listneighbor = listneighbor->next;
@ -1077,17 +1077,16 @@ gimp_bezier_stroke_anchor_move_relative (GimpStroke *stroke,
{ {
if (g_list_previous (anchor_list)) if (g_list_previous (anchor_list))
{ {
coord2 = ((GimpAnchor *) g_list_previous (anchor_list)->data)->position; coord2 = GIMP_ANCHOR (g_list_previous (anchor_list)->data)->position;
gimp_bezier_coords_add (&coord2, &delta, &coord1); gimp_bezier_coords_add (&coord2, &delta, &coord1);
((GimpAnchor *) g_list_previous (anchor_list)->data)->position = GIMP_ANCHOR (g_list_previous (anchor_list)->data)->position = coord1;
coord1;
} }
if (g_list_next (anchor_list)) if (g_list_next (anchor_list))
{ {
coord2 = ((GimpAnchor *) g_list_next (anchor_list)->data)->position; coord2 = GIMP_ANCHOR (g_list_next (anchor_list)->data)->position;
gimp_bezier_coords_add (&coord2, &delta, &coord1); gimp_bezier_coords_add (&coord2, &delta, &coord1);
((GimpAnchor *) g_list_next (anchor_list)->data)->position = coord1; GIMP_ANCHOR (g_list_next (anchor_list)->data)->position = coord1;
} }
} }
else else
@ -1099,7 +1098,7 @@ gimp_bezier_stroke_anchor_move_relative (GimpStroke *stroke,
/* search for opposite control point. Sigh. */ /* search for opposite control point. Sigh. */
neighbour = g_list_previous (anchor_list); neighbour = g_list_previous (anchor_list);
if (neighbour && if (neighbour &&
((GimpAnchor *) neighbour->data)->type == GIMP_ANCHOR_ANCHOR) GIMP_ANCHOR (neighbour->data)->type == GIMP_ANCHOR_ANCHOR)
{ {
opposite = g_list_previous (neighbour); opposite = g_list_previous (neighbour);
} }
@ -1107,19 +1106,19 @@ gimp_bezier_stroke_anchor_move_relative (GimpStroke *stroke,
{ {
neighbour = g_list_next (anchor_list); neighbour = g_list_next (anchor_list);
if (neighbour && if (neighbour &&
((GimpAnchor *) neighbour->data)->type == GIMP_ANCHOR_ANCHOR) GIMP_ANCHOR (neighbour->data)->type == GIMP_ANCHOR_ANCHOR)
{ {
opposite = g_list_next (neighbour); opposite = g_list_next (neighbour);
} }
} }
if (opposite && if (opposite &&
((GimpAnchor *) opposite->data)->type == GIMP_ANCHOR_CONTROL) GIMP_ANCHOR (opposite->data)->type == GIMP_ANCHOR_CONTROL)
{ {
gimp_bezier_coords_difference (&(((GimpAnchor *) neighbour->data)->position), gimp_bezier_coords_difference (&(GIMP_ANCHOR (neighbour->data)->position),
&(anchor->position), &delta); &(anchor->position), &delta);
gimp_bezier_coords_add (&(((GimpAnchor *) neighbour->data)->position), gimp_bezier_coords_add (&(GIMP_ANCHOR (neighbour->data)->position),
&delta, &coord1); &delta, &coord1);
((GimpAnchor *) opposite->data)->position = coord1; GIMP_ANCHOR (opposite->data)->position = coord1;
} }
} }
} }
@ -1156,21 +1155,21 @@ gimp_bezier_stroke_anchor_convert (GimpStroke *stroke,
if (anchor->type == GIMP_ANCHOR_ANCHOR) if (anchor->type == GIMP_ANCHOR_ANCHOR)
{ {
if (g_list_previous (anchor_list)) if (g_list_previous (anchor_list))
((GimpAnchor *) g_list_previous (anchor_list)->data)->position = GIMP_ANCHOR (g_list_previous (anchor_list)->data)->position =
anchor->position; anchor->position;
if (g_list_next (anchor_list)) if (g_list_next (anchor_list))
((GimpAnchor *) g_list_next (anchor_list)->data)->position = GIMP_ANCHOR (g_list_next (anchor_list)->data)->position =
anchor->position; anchor->position;
} }
else else
{ {
if (g_list_previous (anchor_list) && if (g_list_previous (anchor_list) &&
((GimpAnchor *) g_list_previous (anchor_list)->data)->type == GIMP_ANCHOR_ANCHOR) GIMP_ANCHOR (g_list_previous (anchor_list)->data)->type == GIMP_ANCHOR_ANCHOR)
anchor->position = ((GimpAnchor *) g_list_previous (anchor_list)->data)->position; anchor->position = GIMP_ANCHOR (g_list_previous (anchor_list)->data)->position;
if (g_list_next (anchor_list) && if (g_list_next (anchor_list) &&
((GimpAnchor *) g_list_next (anchor_list)->data)->type == GIMP_ANCHOR_ANCHOR) GIMP_ANCHOR (g_list_next (anchor_list)->data)->type == GIMP_ANCHOR_ANCHOR)
anchor->position = ((GimpAnchor *) g_list_next (anchor_list)->data)->position; anchor->position = GIMP_ANCHOR (g_list_next (anchor_list)->data)->position;
} }
break; break;
@ -1207,7 +1206,7 @@ gimp_bezier_stroke_interpolate (const GimpStroke *stroke,
count = 0; count = 0;
for (anchorlist = stroke->anchors; for (anchorlist = stroke->anchors;
anchorlist && ((GimpAnchor *) anchorlist->data)->type != GIMP_ANCHOR_ANCHOR; anchorlist && GIMP_ANCHOR (anchorlist->data)->type != GIMP_ANCHOR_ANCHOR;
anchorlist = g_list_next (anchorlist)); anchorlist = g_list_next (anchorlist));
for ( ; anchorlist; anchorlist = g_list_next (anchorlist)) for ( ; anchorlist; anchorlist = g_list_next (anchorlist))
@ -1232,12 +1231,12 @@ gimp_bezier_stroke_interpolate (const GimpStroke *stroke,
while (count < 3) while (count < 3)
{ {
segmentcoords[count] = ((GimpAnchor *) anchorlist->data)->position; segmentcoords[count] = GIMP_ANCHOR (anchorlist->data)->position;
count++; count++;
} }
anchorlist = g_list_next (anchorlist); anchorlist = g_list_next (anchorlist);
if (anchorlist) if (anchorlist)
segmentcoords[3] = ((GimpAnchor *) anchorlist->data)->position; segmentcoords[3] = GIMP_ANCHOR (anchorlist->data)->position;
gimp_bezier_coords_subdivide (segmentcoords, precision, &ret_coords); gimp_bezier_coords_subdivide (segmentcoords, precision, &ret_coords);
need_endpoint = TRUE; need_endpoint = TRUE;

View File

@ -247,7 +247,7 @@ gimp_stroke_finalize (GObject *object)
stroke = GIMP_STROKE (object); stroke = GIMP_STROKE (object);
for (list = stroke->anchors; list; list = list->next) for (list = stroke->anchors; list; list = list->next)
gimp_anchor_free ((GimpAnchor *) list->data); gimp_anchor_free (GIMP_ANCHOR (list->data));
G_OBJECT_CLASS (parent_class)->finalize (object); G_OBJECT_CLASS (parent_class)->finalize (object);
} }
@ -326,13 +326,13 @@ gimp_stroke_real_anchor_get (const GimpStroke *stroke,
for (list = anchors; list; list = g_list_next (list)) for (list = anchors; list; list = g_list_next (list))
{ {
dx = coord->x - ((GimpAnchor *) list->data)->position.x; dx = coord->x - GIMP_ANCHOR (list->data)->position.x;
dy = coord->y - ((GimpAnchor *) list->data)->position.y; dy = coord->y - GIMP_ANCHOR (list->data)->position.y;
if (mindist < 0 || mindist > dx * dx + dy * dy) if (mindist < 0 || mindist > dx * dx + dy * dy)
{ {
mindist = dx * dx + dy * dy; mindist = dx * dx + dy * dy;
anchor = (GimpAnchor *) list->data; anchor = GIMP_ANCHOR (list->data);
} }
} }
@ -342,13 +342,13 @@ gimp_stroke_real_anchor_get (const GimpStroke *stroke,
for (list = anchors; list; list = g_list_next (list)) for (list = anchors; list; list = g_list_next (list))
{ {
dx = coord->x - ((GimpAnchor *) list->data)->position.x; dx = coord->x - GIMP_ANCHOR (list->data)->position.x;
dy = coord->y - ((GimpAnchor *) list->data)->position.y; dy = coord->y - GIMP_ANCHOR (list->data)->position.y;
if (mindist < 0 || mindist > dx * dx + dy * dy) if (mindist < 0 || mindist > dx * dx + dy * dy)
{ {
mindist = dx * dx + dy * dy; mindist = dx * dx + dy * dy;
anchor = (GimpAnchor *) list->data; anchor = GIMP_ANCHOR (list->data);
} }
} }
@ -387,7 +387,7 @@ gimp_stroke_real_anchor_get_next (const GimpStroke *stroke,
} }
if (list) if (list)
return (GimpAnchor *) list->data; return GIMP_ANCHOR (list->data);
return NULL; return NULL;
} }
@ -416,7 +416,7 @@ gimp_stroke_real_anchor_select (GimpStroke *stroke,
{ {
while (list) while (list)
{ {
((GimpAnchor *) list->data)->selected = FALSE; GIMP_ANCHOR (list->data)->selected = FALSE;
list = g_list_next (list); list = g_list_next (list);
} }
} }
@ -424,7 +424,7 @@ gimp_stroke_real_anchor_select (GimpStroke *stroke,
list = g_list_find (stroke->anchors, anchor); list = g_list_find (stroke->anchors, anchor);
if (list) if (list)
((GimpAnchor *) list->data)->selected = TRUE; GIMP_ANCHOR (list->data)->selected = TRUE;
} }
@ -784,7 +784,7 @@ gimp_stroke_real_duplicate (const GimpStroke *stroke)
for (list = new_stroke->anchors; list; list = g_list_next (list)) for (list = new_stroke->anchors; list; list = g_list_next (list))
{ {
list->data = gimp_anchor_duplicate ((GimpAnchor *) list->data); list->data = gimp_anchor_duplicate (GIMP_ANCHOR (list->data));
} }
return new_stroke; return new_stroke;
@ -1057,7 +1057,7 @@ gimp_stroke_real_get_draw_anchors (const GimpStroke *stroke)
for (list = stroke->anchors; list; list = g_list_next (list)) for (list = stroke->anchors; list; list = g_list_next (list))
{ {
if (((GimpAnchor *) list->data)->type == GIMP_ANCHOR_ANCHOR) if (GIMP_ANCHOR (list->data)->type == GIMP_ANCHOR_ANCHOR)
ret_list = g_list_prepend (ret_list, list->data); ret_list = g_list_prepend (ret_list, list->data);
} }

View File

@ -208,7 +208,7 @@ gimp_vectors_compat_get_points (GimpVectors *vectors,
/* write the skipped control point */ /* write the skipped control point */
if (! anchors->next && stroke->closed) if (! anchors->next && stroke->closed)
{ {
anchor = (GimpAnchor *) stroke->anchors->data; anchor = GIMP_ANCHOR (stroke->anchors->data);
points[i].type = GIMP_VECTORS_COMPAT_CONTROL; points[i].type = GIMP_VECTORS_COMPAT_CONTROL;
points[i].x = anchor->position.x; points[i].x = anchor->position.x;