code cleanup: use for loops for mask/spline looping

This commit is contained in:
2012-05-18 14:49:30 +00:00
parent 2870366d72
commit ec142edaa0
8 changed files with 53 additions and 122 deletions

View File

@@ -957,13 +957,13 @@ void BKE_mask_calc_handles(Mask *mask)
void BKE_mask_evaluate(Mask *mask, float ctime)
{
MaskObject *maskobj = mask->maskobjs.first;
MaskObject *maskobj;
while (maskobj) {
MaskSpline *spline = maskobj->splines.first;
for (maskobj = mask->maskobjs.first; maskobj; maskobj = maskobj->next) {
MaskSpline *spline;
int i;
while (spline) {
for (spline = maskobj->splines.first; spline; spline = spline->next) {
for (i = 0; i < spline->tot_point; i++) {
MaskSplinePoint *point = &spline->points[i];
BezTriple *bezt = &point->bezt;
@@ -977,11 +977,7 @@ void BKE_mask_evaluate(Mask *mask, float ctime)
add_v2_v2(bezt->vec[1], delta);
add_v2_v2(bezt->vec[2], delta);
}
spline = spline->next;
}
maskobj = maskobj->next;
}
BKE_mask_calc_handles(mask);

View File

@@ -6282,8 +6282,7 @@ static void direct_link_mask(FileData *fd, Mask *mask)
link_list(fd, &mask->maskobjs);
maskobj = mask->maskobjs.first;
while (maskobj) {
for (maskobj = mask->maskobjs.first; maskobj; maskobj = maskobj->next) {
MaskSpline *spline;
link_list(fd, &maskobj->splines);
@@ -6306,8 +6305,6 @@ static void direct_link_mask(FileData *fd, Mask *mask)
maskobj->act_spline = newdataadr(fd, maskobj->act_spline);
maskobj->act_point = newdataadr(fd, maskobj->act_point);
maskobj = maskobj->next;
}
}
@@ -6328,8 +6325,7 @@ static void lib_link_mask(FileData *fd, Main *main)
if (mask->adt)
lib_link_animdata(fd, &mask->id, mask->adt);
maskobj = mask->maskobjs.first;
while (maskobj) {
for (maskobj = mask->maskobjs.first; maskobj; maskobj = maskobj->next) {
MaskSpline *spline;
spline = maskobj->splines.first;
@@ -6346,8 +6342,6 @@ static void lib_link_mask(FileData *fd, Main *main)
spline = spline->next;
}
maskobj = maskobj->next;
}
mask->id.flag -= LIB_NEEDLINK;

View File

@@ -2769,14 +2769,12 @@ static void write_masks(WriteData *wd, ListBase *idbase)
if (mask->adt)
write_animdata(wd, mask->adt);
maskobj = mask->maskobjs.first;
while (maskobj) {
for (maskobj = mask->maskobjs.first; maskobj; maskobj = maskobj->next) {
MaskSpline *spline;
writestruct(wd, DATA, "MaskObject", 1, maskobj);
spline = maskobj->splines.first;
while (spline) {
for (spline = maskobj->splines.first; spline; spline = spline->next) {
int i;
writestruct(wd, DATA, "MaskSpline", 1, spline);
@@ -2788,11 +2786,7 @@ static void write_masks(WriteData *wd, ListBase *idbase)
if (point->tot_uw)
writestruct(wd, DATA, "MaskSplinePointUW", point->tot_uw, point->uw);
}
spline = spline->next;
}
maskobj = maskobj->next;
}
}

View File

@@ -218,22 +218,18 @@ static void draw_spline_curve(MaskObject *maskobj, MaskSpline *spline)
static void draw_maskobjs(Mask *mask)
{
MaskObject *maskobj = mask->maskobjs.first;
MaskObject *maskobj;
while (maskobj) {
MaskSpline *spline = maskobj->splines.first;
for (maskobj = mask->maskobjs.first; maskobj; maskobj = maskobj->next) {
MaskSpline *spline;
while (spline) {
for (spline = maskobj->splines.first; spline; spline = spline->next) {
/* draw curve itself first... */
draw_spline_curve(maskobj, spline);
/* ...and then handles over the curve so they're nicely visible */
draw_spline_points(maskobj, spline);
spline = spline->next;
}
maskobj = maskobj->next;
}
}

View File

@@ -167,19 +167,16 @@ static int points_has_selection(MaskSplinePoint *points, int tot_point)
static int mask_has_selection(Mask *mask)
{
MaskObject *maskobj = mask->maskobjs.first;
MaskObject *maskobj;
while (maskobj) {
MaskSpline *spline = maskobj->splines.first;
for (maskobj = mask->maskobjs.first; maskobj; maskobj = maskobj->next) {
MaskSpline *spline;
while (spline) {
if (points_has_selection(spline->points, spline->tot_point))
for (spline = maskobj->splines.first; spline; spline = spline->next) {
if (points_has_selection(spline->points, spline->tot_point)) {
return TRUE;
spline = spline->next;
}
}
maskobj = maskobj->next;
}
return FALSE;
@@ -187,7 +184,7 @@ static int mask_has_selection(Mask *mask)
static void toggle_selection_all(Mask *mask, int action)
{
MaskObject *maskobj = mask->maskobjs.first;
MaskObject *maskobj;
if (action == SEL_TOGGLE) {
if (mask_has_selection(mask))
@@ -196,10 +193,10 @@ static void toggle_selection_all(Mask *mask, int action)
action = SEL_SELECT;
}
while (maskobj) {
MaskSpline *spline = maskobj->splines.first;
for (maskobj = mask->maskobjs.first; maskobj; maskobj = maskobj->next) {
MaskSpline *spline;
while (spline) {
for (spline = maskobj->splines.first; spline; spline = spline->next) {
int i;
for (i = 0; i < spline->tot_point; i++) {
@@ -207,11 +204,7 @@ static void toggle_selection_all(Mask *mask, int action)
spline_point_select(point, action);
}
spline = spline->next;
}
maskobj = maskobj->next;
}
}
@@ -234,11 +227,10 @@ static MaskSplinePoint *find_nearest_point(bContext *C, Mask *mask, float normal
co[0] = normal_co[0] * scalex;
co[1] = normal_co[1] * scaley;
maskobj = mask->maskobjs.first;
while (maskobj) {
MaskSpline *spline = maskobj->splines.first;
for (maskobj = mask->maskobjs.first; maskobj; maskobj = maskobj->next) {
MaskSpline *spline;
while (spline) {
for (spline = maskobj->splines.first; spline; spline = spline->next) {
int i;
for (i = 0; i < spline->tot_point; i++) {
@@ -274,11 +266,7 @@ static MaskSplinePoint *find_nearest_point(bContext *C, Mask *mask, float normal
is_handle = FALSE;
}
}
spline = spline->next;
}
maskobj = maskobj->next;
}
if (len < threshold) {
@@ -328,11 +316,10 @@ static int find_nearest_feather(bContext *C, Mask *mask, float normal_co[2], int
co[0] = normal_co[0] * scalex;
co[1] = normal_co[1] * scaley;
maskobj = mask->maskobjs.first;
while (maskobj) {
MaskSpline *spline = maskobj->splines.first;
for (maskobj = mask->maskobjs.first; maskobj; maskobj = maskobj->next) {
MaskSpline *spline;
while (spline) {
for (spline = maskobj->splines.first; spline; spline = spline->next) {
int i, tot_feather_point;
float *feather_points, *fp;
@@ -367,11 +354,7 @@ static int find_nearest_feather(bContext *C, Mask *mask, float normal_co[2], int
}
MEM_freeN(feather_points);
spline = spline->next;
}
maskobj = maskobj->next;
}
if (len < threshold) {
@@ -424,11 +407,10 @@ static int find_nearest_diff_point(bContext *C, Mask *mask, float normal_co[2],
co[0] = normal_co[0] * scalex;
co[1] = normal_co[1] * scaley;
maskobj = mask->maskobjs.first;
while (maskobj) {
MaskSpline *spline = maskobj->splines.first;
for (maskobj = mask->maskobjs.first; maskobj; maskobj = maskobj->next) {
MaskSpline *spline;
while (spline) {
for (spline = maskobj->splines.first; spline; spline = spline->next) {
int i;
for (i = 0; i < spline->tot_point; i++) {
@@ -484,11 +466,7 @@ static int find_nearest_diff_point(bContext *C, Mask *mask, float normal_co[2],
MEM_freeN(diff_points);
}
}
spline = spline->next;
}
maskobj = maskobj->next;
}
if (point && dist < threshold) {
@@ -526,11 +504,10 @@ static void mask_flush_selection(Mask *mask)
{
MaskObject *maskobj;
maskobj = mask->maskobjs.first;
while (maskobj) {
MaskSpline *spline = maskobj->splines.first;
for (maskobj = mask->maskobjs.first; maskobj; maskobj = maskobj->next) {
MaskSpline *spline;
while (spline) {
for (spline = maskobj->splines.first; spline; spline = spline->next) {
int i;
spline->flag &= ~SELECT;
@@ -552,11 +529,7 @@ static void mask_flush_selection(Mask *mask)
}
}
}
spline = spline->next;
}
maskobj = maskobj->next;
}
}
@@ -1477,19 +1450,16 @@ void MASK_OT_add_feather_vertex(wmOperatorType *ot)
static int cyclic_toggle_exec(bContext *C, wmOperator *UNUSED(op))
{
Mask *mask = CTX_data_edit_mask(C);
MaskObject *maskobj = mask->maskobjs.first;
MaskObject *maskobj;
while (maskobj) {
MaskSpline *spline = maskobj->splines.first;
for (maskobj = mask->maskobjs.first; maskobj; maskobj = maskobj->next) {
MaskSpline *spline;
while (spline) {
if (points_has_selection(spline->points, spline->tot_point))
for (spline = maskobj->splines.first; spline; spline = spline->next) {
if (points_has_selection(spline->points, spline->tot_point)) {
spline->flag ^= MASK_SPLINE_CYCLIC;
spline = spline->next;
}
}
maskobj = maskobj->next;
}
WM_event_add_notifier(C, NC_MASK | NA_EDITED, mask);
@@ -1553,9 +1523,9 @@ static void delete_feather_points(MaskSplinePoint *point)
static int delete_exec(bContext *C, wmOperator *UNUSED(op))
{
Mask *mask = CTX_data_edit_mask(C);
MaskObject *maskobj = mask->maskobjs.first;
MaskObject *maskobj;
while (maskobj) {
for (maskobj = mask->maskobjs.first; maskobj; maskobj = maskobj->next) {
MaskSpline *spline = maskobj->splines.first;
while (spline) {
@@ -1615,8 +1585,6 @@ static int delete_exec(bContext *C, wmOperator *UNUSED(op))
spline = next_spline;
}
maskobj = maskobj->next;
}
WM_event_add_notifier(C, NC_MASK | NA_EDITED, mask);
@@ -1645,14 +1613,14 @@ void MASK_OT_delete(wmOperatorType *ot)
static int set_handle_type_exec(bContext *C, wmOperator *op)
{
Mask *mask = CTX_data_edit_mask(C);
MaskObject *maskobj = mask->maskobjs.first;
MaskObject *maskobj;
int handle_type = RNA_enum_get(op->ptr, "type");
while (maskobj) {
MaskSpline *spline = maskobj->splines.first;
for (maskobj = mask->maskobjs.first; maskobj; maskobj = maskobj->next) {
MaskSpline *spline;
int i;
while (spline) {
for (spline = maskobj->splines.first; spline; spline = spline->next) {
for (i = 0; i < spline->tot_point; i++) {
MaskSplinePoint *point = &spline->points[i];
@@ -1662,11 +1630,7 @@ static int set_handle_type_exec(bContext *C, wmOperator *op)
bezt->h1 = bezt->h2 = handle_type;
}
}
spline = spline->next;
}
maskobj = maskobj->next;
}
WM_event_add_notifier(C, NC_MASK | ND_DATA, mask);

View File

@@ -5949,8 +5949,7 @@ static void createTransMaskingData(bContext *C, TransInfo *t)
TransDataMasking *tdm = NULL;
/* count */
maskobj = mask ? mask->maskobjs.first : NULL;
while (maskobj) {
for (maskobj = mask->maskobjs.first; maskobj; maskobj = maskobj->next) {
MaskSpline *spline = maskobj->splines.first;
while (spline) {
@@ -5969,8 +5968,6 @@ static void createTransMaskingData(bContext *C, TransInfo *t)
spline = spline->next;
}
maskobj = maskobj->next;
}
if (t->total == 0)
@@ -5985,8 +5982,7 @@ static void createTransMaskingData(bContext *C, TransInfo *t)
t->flag |= T_FREE_CUSTOMDATA;
/* create data */
maskobj = mask->maskobjs.first;
while (maskobj) {
for (maskobj = mask->maskobjs.first; maskobj; maskobj = maskobj->next) {
MaskSpline *spline = maskobj->splines.first;
while (spline) {
@@ -6013,8 +6009,6 @@ static void createTransMaskingData(bContext *C, TransInfo *t)
spline = spline->next;
}
maskobj = maskobj->next;
}
}

View File

@@ -185,19 +185,17 @@ static PointerRNA rna_MaskObject_active_spline_point_get(PointerRNA *ptr)
static void rna_MaskObject_active_spline_point_set(PointerRNA *ptr, PointerRNA value)
{
MaskObject *maskobj = (MaskObject *)ptr->data;
MaskSpline *spline = maskobj->splines.first;
MaskSpline *spline;
MaskSplinePoint *point = (MaskSplinePoint *)value.data;
maskobj->act_point = NULL;
while (spline) {
for (spline = maskobj->splines.first; spline; spline = spline->next) {
if (point >= spline->points && point < spline->points + spline->tot_point) {
maskobj->act_point = point;
break;
}
spline = spline->next;
}
}

View File

@@ -84,11 +84,10 @@ static void exec(void *data, bNode *node, bNodeStack **in, bNodeStack **out)
stackbuf = alloc_compbuf(sx, sy, CB_VAL, TRUE);
res = stackbuf->rect;
maskobj = mask->maskobjs.first;
while (maskobj) {
MaskSpline *spline = maskobj->splines.first;
for (maskobj = mask->maskobjs.first; maskobj; maskobj = maskobj->next) {
MaskSpline *spline;
while (spline) {
for (spline = maskobj->splines.first; spline; spline = spline->next) {
float *diff_points;
int tot_diff_point;
@@ -119,11 +118,7 @@ static void exec(void *data, bNode *node, bNodeStack **in, bNodeStack **out)
MEM_freeN(diff_points);
}
spline = spline->next;
}
maskobj = maskobj->next;
}
/* pass on output and free */