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:
authorCampbell Barton <campbell@blender.org>2022-02-24 04:53:09 +0300
committerCampbell Barton <campbell@blender.org>2022-02-24 04:53:09 +0300
commite83e7d49b6637177c1ba16531e4927533f7cb0f4 (patch)
treee4d47588b13ff9333d162574af7e198d9fd17ca0 /source/blender/blenkernel/intern/vfont.c
parentaffed12bb9d93e3257c7608470f96ed1e4dec68d (diff)
Cleanup: use continue instead of goto for 3D text wrapping logic
Diffstat (limited to 'source/blender/blenkernel/intern/vfont.c')
-rw-r--r--source/blender/blenkernel/intern/vfont.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/source/blender/blenkernel/intern/vfont.c b/source/blender/blenkernel/intern/vfont.c
index 7e025c59b6c..5e75088a008 100644
--- a/source/blender/blenkernel/intern/vfont.c
+++ b/source/blender/blenkernel/intern/vfont.c
@@ -905,8 +905,8 @@ static bool vfont_to_curve(Object *ob,
custrinfo[i].flag &= ~(CU_CHINFO_WRAP | CU_CHINFO_SMALLCAPS_CHECK | CU_CHINFO_OVERFLOW);
}
- for (i = 0; i <= slen; i++) {
- makebreak:
+ i = 0;
+ while (i <= slen) {
/* Characters in the list */
info = &custrinfo[i];
ascii = mem[i];
@@ -985,6 +985,7 @@ static bool vfont_to_curve(Object *ob,
}
else if (x_used > x_available) {
// CLOG_WARN(&LOG, "linewidth exceeded: %c%c%c...", mem[i], mem[i+1], mem[i+2]);
+ bool dobreak = false;
for (j = i; (mem[j] != '\n') && (chartransdata[j].dobreak == 0); j--) {
/* Special case when there are no breaks possible. */
@@ -1001,7 +1002,6 @@ static bool vfont_to_curve(Object *ob,
break;
}
- bool dobreak = false;
if (ELEM(mem[j], ' ', '-')) {
ct -= (i - (j - 1));
cnr -= (i - (j - 1));
@@ -1016,8 +1016,9 @@ static bool vfont_to_curve(Object *ob,
ct[1].dobreak = 1;
custrinfo[i + 1].flag |= CU_CHINFO_WRAP;
dobreak = true;
+ break;
}
- else if (chartransdata[j].dobreak) {
+ if (chartransdata[j].dobreak) {
// CLOG_WARN(&LOG, "word too long: %c%c%c...", mem[j], mem[j+1], mem[j+2]);
ct->dobreak = 1;
custrinfo[i + 1].flag |= CU_CHINFO_WRAP;
@@ -1026,14 +1027,17 @@ static bool vfont_to_curve(Object *ob,
i--;
xof = ct->xof;
dobreak = true;
+ break;
}
- if (dobreak) {
- if (tb_scale.h == 0.0f) {
- /* NOTE: If underlined text is truncated away, the extra space is also truncated. */
- custrinfo[i + 1].flag |= CU_CHINFO_OVERFLOW;
- }
- goto makebreak;
+ }
+
+ if (dobreak) {
+ if (tb_scale.h == 0.0f) {
+ /* NOTE: If underlined text is truncated away, the extra space is also truncated. */
+ custrinfo[i + 1].flag |= CU_CHINFO_OVERFLOW;
}
+ /* Since a break was added, re-run this loop with `i` at it's new value. */
+ continue;
}
}
}
@@ -1139,7 +1143,9 @@ static bool vfont_to_curve(Object *ob,
}
}
ct++;
+ i++;
}
+
current_line_length += xof + twidth - MARGIN_X_MIN;
longest_line_length = MAX2(current_line_length, longest_line_length);