Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/blenkernel/intern/sketch.c')
-rw-r--r--source/blender/blenkernel/intern/sketch.c129
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;
}
}