Store edit-font select-box length
A little awkward to calculate when drawing.
This commit is contained in:
parent
aeda1a16f3
commit
13ee5ba467
|
@ -60,8 +60,9 @@ typedef struct EditFont {
|
|||
struct CharInfo *textbufinfo;
|
||||
|
||||
/* array of rectangles & rotation */
|
||||
EditFontSelBox *selboxes;
|
||||
float textcurs[4][2];
|
||||
EditFontSelBox *selboxes;
|
||||
int selboxes_len;
|
||||
|
||||
/* positional vars relative to the textbuf, textbufinfo (not utf8 bytes)
|
||||
* a copy of these is kept in Curve, but use these in editmode */
|
||||
|
|
|
@ -695,10 +695,14 @@ bool BKE_vfont_to_curve_ex(Main *bmain, Object *ob, int mode, ListBase *r_nubase
|
|||
if (ef->selboxes)
|
||||
MEM_freeN(ef->selboxes);
|
||||
|
||||
if (BKE_vfont_select_get(ob, &selstart, &selend))
|
||||
ef->selboxes = MEM_callocN((selend - selstart + 1) * sizeof(EditFontSelBox), "font selboxes");
|
||||
else
|
||||
if (BKE_vfont_select_get(ob, &selstart, &selend)) {
|
||||
ef->selboxes_len = (selend - selstart) + 1;
|
||||
ef->selboxes = MEM_callocN(ef->selboxes_len * sizeof(EditFontSelBox), "font selboxes");
|
||||
}
|
||||
else {
|
||||
ef->selboxes_len = 0;
|
||||
ef->selboxes = NULL;
|
||||
}
|
||||
|
||||
selboxes = ef->selboxes;
|
||||
}
|
||||
|
|
|
@ -6472,7 +6472,6 @@ static void draw_editfont(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *b
|
|||
Curve *cu = ob->data;
|
||||
EditFont *ef = cu->editfont;
|
||||
float vec1[3], vec2[3];
|
||||
int selstart, selend;
|
||||
|
||||
draw_editfont_textcurs(rv3d, ef->textcurs);
|
||||
|
||||
|
@ -6525,17 +6524,16 @@ static void draw_editfont(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *b
|
|||
setlinestyle(0);
|
||||
|
||||
|
||||
if (BKE_vfont_select_get(ob, &selstart, &selend) && ef->selboxes) {
|
||||
const int seltot = selend - selstart;
|
||||
if (ef->selboxes && ef->selboxes_len) {
|
||||
float selboxw;
|
||||
|
||||
cpack(0xffffff);
|
||||
set_inverted_drawing(1);
|
||||
for (int i = 0; i <= seltot; i++) {
|
||||
for (int i = 0; i < ef->selboxes_len; i++) {
|
||||
EditFontSelBox *sb = &ef->selboxes[i];
|
||||
float tvec[3];
|
||||
|
||||
if (i != seltot) {
|
||||
if (i + 1 != ef->selboxes_len) {
|
||||
if (ef->selboxes[i + 1].y == sb->y)
|
||||
selboxw = ef->selboxes[i + 1].x - sb->x;
|
||||
else
|
||||
|
|
Loading…
Reference in New Issue