diff options
Diffstat (limited to 'source/blender/blenkernel/intern/sketch.c')
-rw-r--r-- | source/blender/blenkernel/intern/sketch.c | 129 |
1 files changed, 86 insertions, 43 deletions
diff --git a/source/blender/blenkernel/intern/sketch.c b/source/blender/blenkernel/intern/sketch.c index 32681c3a041..71ea85de716 100644 --- a/source/blender/blenkernel/intern/sketch.c +++ b/source/blender/blenkernel/intern/sketch.c @@ -44,7 +44,8 @@ void freeSketch(SK_Sketch *sketch) { SK_Stroke *stk, *next; - for (stk = sketch->strokes.first; stk; stk = next) { + for (stk = sketch->strokes.first; stk; stk = next) + { next = stk->next; sk_freeStroke(stk); @@ -118,7 +119,8 @@ SK_Stroke* sk_createStroke(void) void sk_shrinkStrokeBuffer(SK_Stroke *stk) { - if (stk->nb_points < stk->buf_size) { + if (stk->nb_points < stk->buf_size) + { SK_Point *old_points = stk->points; stk->buf_size = stk->nb_points; @@ -133,7 +135,8 @@ void sk_shrinkStrokeBuffer(SK_Stroke *stk) void sk_growStrokeBuffer(SK_Stroke *stk) { - if (stk->nb_points == stk->buf_size) { + if (stk->nb_points == stk->buf_size) + { SK_Point *old_points = stk->points; stk->buf_size *= 2; @@ -148,10 +151,12 @@ void sk_growStrokeBuffer(SK_Stroke *stk) void sk_growStrokeBufferN(SK_Stroke *stk, int n) { - if (stk->nb_points + n > stk->buf_size) { + if (stk->nb_points + n > stk->buf_size) + { SK_Point *old_points = stk->points; - while (stk->nb_points + n > stk->buf_size) { + while (stk->nb_points + n > stk->buf_size) + { stk->buf_size *= 2; } @@ -197,7 +202,8 @@ void sk_insertStrokePoints(SK_Stroke *stk, SK_Point *pts, int len, int start, in sk_growStrokeBufferN(stk, len - size); - if (len != size) { + if (len != size) + { int tail_size = stk->nb_points - end + 1; memmove(stk->points + start + len, stk->points + end + 1, tail_size * sizeof(SK_Point)); @@ -212,7 +218,8 @@ void sk_trimStroke(SK_Stroke *stk, int start, int end) { int size = end - start + 1; - if (start > 0) { + if (start > 0) + { memmove(stk->points, stk->points + start, size * sizeof(SK_Point)); } @@ -246,7 +253,8 @@ void sk_straightenStroke(SK_Stroke *stk, int start, int end, float p_start[3], f sk_insertStrokePoint(stk, &pt1, start + 1); /* insert after start */ sk_insertStrokePoint(stk, &pt2, end + 1); /* insert before end (since end was pushed back already) */ - for (i = 1; i < total; i++) { + for (i = 1; i < total; i++) + { float delta = (float)i / (float)total; float *p = stk->points[start + 1 + i].p; @@ -261,23 +269,30 @@ void sk_polygonizeStroke(SK_Stroke *stk, int start, int end) int i; /* find first exact points outside of range */ - for (;start > 0; start--) { - if (stk->points[start].type == PT_EXACT) { + for (;start > 0; start--) + { + if (stk->points[start].type == PT_EXACT) + { break; } } - for (;end < stk->nb_points - 1; end++) { - if (stk->points[end].type == PT_EXACT) { + for (;end < stk->nb_points - 1; end++) + { + if (stk->points[end].type == PT_EXACT) + { break; } } offset = start + 1; - for (i = start + 1; i < end; i++) { - if (stk->points[i].type == PT_EXACT) { - if (offset != i) { + for (i = start + 1; i < end; i++) + { + if (stk->points[i].type == PT_EXACT) + { + if (offset != i) + { memcpy(stk->points + offset, stk->points + i, sizeof(SK_Point)); } @@ -286,7 +301,8 @@ void sk_polygonizeStroke(SK_Stroke *stk, int start, int end) } /* some points were removes, move end of array */ - if (offset < end) { + if (offset < end) + { int size = stk->nb_points - end; memmove(stk->points + offset, stk->points + end, size * sizeof(SK_Point)); stk->nb_points = offset + size; @@ -307,7 +323,8 @@ void sk_flattenStroke(SK_Stroke *stk, int start, int end) project_v3_v3v3(normal, distance, normal); limit = normalize_v3(normal); - for (i = 1; i < total - 1; i++) { + for (i = 1; i < total - 1; i++) + { float d = limit * i / total; float offset[3]; float *p = stk->points[start + i].p; @@ -325,7 +342,8 @@ void sk_flattenStroke(SK_Stroke *stk, int start, int end) void sk_removeStroke(SK_Sketch *sketch, SK_Stroke *stk) { - if (sketch->active_stroke == stk) { + if (sketch->active_stroke == stk) + { sketch->active_stroke = NULL; } @@ -340,7 +358,8 @@ void sk_reverseStroke(SK_Stroke *stk) sk_allocStrokeBuffer(stk); - for (i = 0; i < stk->nb_points; i++) { + for (i = 0; i < stk->nb_points; i++) + { sk_copyPoint(stk->points + i, old_points + stk->nb_points - 1 - i); } @@ -357,7 +376,8 @@ void sk_filterStroke(SK_Stroke *stk, int start, int end) char work; int i; - if (start == -1) { + if (start == -1) + { start = 0; end = stk->nb_points - 1; } @@ -366,7 +386,8 @@ void sk_filterStroke(SK_Stroke *stk, int start, int end) stk->nb_points = 0; /* adding points before range */ - for (i = 0; i < start; i++) { + for (i = 0; i < start; i++) + { sk_appendStrokePoint(stk, old_points + i); } @@ -377,7 +398,8 @@ void sk_filterStroke(SK_Stroke *stk, int start, int end) work = 1; /* while still reducing */ - while (work) { + while (work) + { int ls, le; work = 0; @@ -385,13 +407,15 @@ void sk_filterStroke(SK_Stroke *stk, int start, int end) le = start+1; /* while not over interval */ - while (ls < end) { + while (ls < end) + { int max_i = 0; short v1[2]; float max_dist = 16; /* more than 4 pixels */ /* find the next marked point */ - while (marked[le] == 0) { + while (marked[le] == 0) + { le++; } @@ -400,7 +424,8 @@ void sk_filterStroke(SK_Stroke *stk, int start, int end) v1[0] = old_points[ls].p2d[1] - old_points[le].p2d[1]; - for ( i = ls + 1; i < le; i++ ) { + for ( i = ls + 1; i < le; i++ ) + { float mul; float dist; short v2[2]; @@ -408,7 +433,8 @@ void sk_filterStroke(SK_Stroke *stk, int start, int end) v2[0] = old_points[i].p2d[0] - old_points[ls].p2d[0]; v2[1] = old_points[i].p2d[1] - old_points[ls].p2d[1]; - if (v2[0] == 0 && v2[1] == 0) { + if (v2[0] == 0 && v2[1] == 0) + { continue; } @@ -416,13 +442,15 @@ void sk_filterStroke(SK_Stroke *stk, int start, int end) dist = mul * mul * (v2[0]*v2[0] + v2[1]*v2[1]); - if (dist > max_dist) { + if (dist > max_dist) + { max_dist = dist; max_i = i; } } - if (max_i != 0) { + if (max_i != 0) + { work = 1; marked[max_i] = 1; } @@ -434,8 +462,10 @@ void sk_filterStroke(SK_Stroke *stk, int start, int end) /* adding points after range */ - for (i = start; i <= end; i++) { - if (marked[i]) { + for (i = start; i <= end; i++) + { + if (marked[i]) + { sk_appendStrokePoint(stk, old_points + i); } } @@ -443,7 +473,8 @@ void sk_filterStroke(SK_Stroke *stk, int start, int end) MEM_freeN(marked); /* adding points after range */ - for (i = end + 1; i < nb_points; i++) { + for (i = end + 1; i < nb_points; i++) + { sk_appendStrokePoint(stk, old_points + i); } @@ -459,11 +490,13 @@ void sk_filterLastContinuousStroke(SK_Stroke *stk) end = stk->nb_points -1; - for (start = end - 1; start > 0 && stk->points[start].type == PT_CONTINUOUS; start--) { + for (start = end - 1; start > 0 && stk->points[start].type == PT_CONTINUOUS; start--) + { /* nothing to do here*/ } - if (end - start > 1) { + if (end - start > 1) + { sk_filterStroke(stk, start, end); } } @@ -472,7 +505,8 @@ SK_Point *sk_lastStrokePoint(SK_Stroke *stk) { SK_Point *pt = NULL; - if (stk->nb_points > 0) { + if (stk->nb_points > 0) + { pt = stk->points + (stk->nb_points - 1); } @@ -486,7 +520,8 @@ void sk_endContinuousStroke(SK_Stroke *stk) void sk_updateNextPoint(SK_Sketch *sketch, SK_Stroke *stk) { - if (stk) { + if (stk) + { memcpy(&sketch->next_point, stk->points[stk->nb_points - 1].p, sizeof(SK_Point)); } } @@ -494,7 +529,8 @@ void sk_updateNextPoint(SK_Sketch *sketch, SK_Stroke *stk) int sk_stroke_filtermval(SK_DrawData *dd) { int retval = 0; - if (ABS(dd->mval[0] - dd->previous_mval[0]) + ABS(dd->mval[1] - dd->previous_mval[1]) > U.gp_manhattendist) { + if (ABS(dd->mval[0] - dd->previous_mval[0]) + ABS(dd->mval[1] - dd->previous_mval[1]) > U.gp_manhattendist) + { retval = 1; } @@ -515,10 +551,12 @@ void sk_deleteSelectedStrokes(SK_Sketch *sketch) { SK_Stroke *stk, *next; - for (stk = sketch->strokes.first; stk; stk = next) { + for (stk = sketch->strokes.first; stk; stk = next) + { next = stk->next; - if (stk->selected == 1) { + if (stk->selected == 1) + { sk_removeStroke(sketch, stk); } } @@ -528,26 +566,31 @@ void sk_selectAllSketch(SK_Sketch *sketch, int mode) { SK_Stroke *stk = NULL; - if (mode == -1) { - for (stk = sketch->strokes.first; stk; stk = stk->next) { + if (mode == -1) + { + for (stk = sketch->strokes.first; stk; stk = stk->next) + { stk->selected = 0; } } else if (mode == 0) { - for (stk = sketch->strokes.first; stk; stk = stk->next) { + for (stk = sketch->strokes.first; stk; stk = stk->next) + { stk->selected = 1; } } else if (mode == 1) { int selected = 1; - for (stk = sketch->strokes.first; stk; stk = stk->next) { + for (stk = sketch->strokes.first; stk; stk = stk->next) + { selected &= stk->selected; } selected ^= 1; - for (stk = sketch->strokes.first; stk; stk = stk->next) { + for (stk = sketch->strokes.first; stk; stk = stk->next) + { stk->selected = selected; } } |