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/displist.c')
-rw-r--r--source/blender/blenkernel/intern/displist.c74
1 files changed, 31 insertions, 43 deletions
diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c
index 0154a2fa1e5..9274d7aefcb 100644
--- a/source/blender/blenkernel/intern/displist.c
+++ b/source/blender/blenkernel/intern/displist.c
@@ -425,8 +425,8 @@ static void curve_to_displist(Curve *cu, ListBase *nubase, ListBase *dispbase, i
void BKE_displist_fill(ListBase *dispbase, ListBase *to, int flipnormal)
{
ScanFillContext sf_ctx;
- ScanFillVert *eve, *v1, *vlast;
- ScanFillFace *efa;
+ ScanFillVert *sf_vert, *sf_vert_new, *sf_vert_last;
+ ScanFillFace *sf_tri;
DispList *dlnew = NULL, *dl;
float *f1;
int colnr = 0, charidx = 0, cont = 1, tot, a, *index, nextcol = 0;
@@ -454,24 +454,24 @@ void BKE_displist_fill(ListBase *dispbase, ListBase *to, int flipnormal)
/* make editverts and edges */
f1 = dl->verts;
a = dl->nr;
- eve = v1 = NULL;
+ sf_vert = sf_vert_new = NULL;
while (a--) {
- vlast = eve;
+ sf_vert_last = sf_vert;
- eve = BLI_scanfill_vert_add(&sf_ctx, f1);
+ sf_vert = BLI_scanfill_vert_add(&sf_ctx, f1);
totvert++;
- if (vlast == NULL)
- v1 = eve;
+ if (sf_vert_last == NULL)
+ sf_vert_new = sf_vert;
else {
- BLI_scanfill_edge_add(&sf_ctx, vlast, eve);
+ BLI_scanfill_edge_add(&sf_ctx, sf_vert_last, sf_vert);
}
f1 += 3;
}
- if (eve != NULL && v1 != NULL) {
- BLI_scanfill_edge_add(&sf_ctx, eve, v1);
+ if (sf_vert != NULL && sf_vert_new != NULL) {
+ BLI_scanfill_edge_add(&sf_ctx, sf_vert, sf_vert_new);
}
}
else if (colnr < dl->col) {
@@ -499,31 +499,31 @@ void BKE_displist_fill(ListBase *dispbase, ListBase *to, int flipnormal)
/* vert data */
f1 = dlnew->verts;
totvert = 0;
- eve = sf_ctx.fillvertbase.first;
- while (eve) {
- copy_v3_v3(f1, eve->co);
+ sf_vert = sf_ctx.fillvertbase.first;
+ while (sf_vert) {
+ copy_v3_v3(f1, sf_vert->co);
f1 += 3;
/* index number */
- eve->tmp.l = totvert;
+ sf_vert->tmp.l = totvert;
totvert++;
- eve = eve->next;
+ sf_vert = sf_vert->next;
}
/* index data */
- efa = sf_ctx.fillfacebase.first;
+ sf_tri = sf_ctx.fillfacebase.first;
index = dlnew->index;
- while (efa) {
- index[0] = (intptr_t)efa->v1->tmp.l;
- index[1] = (intptr_t)efa->v2->tmp.l;
- index[2] = (intptr_t)efa->v3->tmp.l;
+ while (sf_tri) {
+ index[0] = (intptr_t)sf_tri->v1->tmp.l;
+ index[1] = (intptr_t)sf_tri->v2->tmp.l;
+ index[2] = (intptr_t)sf_tri->v3->tmp.l;
if (flipnormal)
SWAP(int, index[0], index[2]);
index += 3;
- efa = efa->next;
+ sf_tri = sf_tri->next;
}
}
@@ -752,7 +752,7 @@ static void curve_calc_modifiers_pre(Scene *scene, Object *ob, int forRender, fl
Curve *cu = ob->data;
ListBase *nurb = BKE_curve_nurbs_get(cu);
int numVerts = 0;
- const int editmode = (!forRender && cu->editnurb);
+ const int editmode = (!forRender && (cu->editnurb || cu->editfont));
ModifierApplyFlag app_flag = 0;
float (*originalVerts)[3] = NULL;
float (*deformedVerts)[3] = NULL;
@@ -793,9 +793,7 @@ static void curve_calc_modifiers_pre(Scene *scene, Object *ob, int forRender, fl
md->scene = scene;
- if ((md->mode & required_mode) != required_mode)
- continue;
- if (mti->isDisabled && mti->isDisabled(md, forRender))
+ if (!modifier_isEnabled(scene, md, required_mode))
continue;
if (mti->type != eModifierTypeType_OnlyDeform)
continue;
@@ -867,7 +865,7 @@ static void curve_calc_modifiers_post(Scene *scene, Object *ob, ListBase *dispba
Curve *cu = ob->data;
ListBase *nurb = BKE_curve_nurbs_get(cu);
int required_mode = 0, totvert = 0;
- int editmode = (!forRender && cu->editnurb);
+ int editmode = (!forRender && (cu->editnurb || cu->editfont));
DerivedMesh *dm = NULL, *ndm;
float (*vertCos)[3] = NULL;
int useCache = !forRender;
@@ -899,9 +897,7 @@ static void curve_calc_modifiers_post(Scene *scene, Object *ob, ListBase *dispba
md->scene = scene;
- if ((md->mode & required_mode) != required_mode)
- continue;
- if (mti->isDisabled && mti->isDisabled(md, forRender))
+ if (!modifier_isEnabled(scene, md, required_mode))
continue;
if (mti->type == eModifierTypeType_OnlyDeform ||
@@ -1095,7 +1091,7 @@ static void curve_calc_orcodm(Scene *scene, Object *ob, DerivedMesh *derivedFina
ModifierData *pretessellatePoint;
Curve *cu = ob->data;
int required_mode;
- int editmode = (!forRender && cu->editnurb);
+ int editmode = (!forRender && (cu->editnurb || cu->editfont));
DerivedMesh *ndm, *orcodm = NULL;
const ModifierApplyFlag app_flag = forRender ? MOD_APPLY_RENDER : 0;
@@ -1118,9 +1114,7 @@ static void curve_calc_orcodm(Scene *scene, Object *ob, DerivedMesh *derivedFina
md->scene = scene;
- if ((md->mode & required_mode) != required_mode)
- continue;
- if (mti->isDisabled && mti->isDisabled(md, forRender))
+ if (!modifier_isEnabled(scene, md, required_mode))
continue;
if (mti->type != eModifierTypeType_Constructive)
continue;
@@ -1606,19 +1600,13 @@ static void boundbox_displist(Object *ob)
if (cu->bb == NULL) cu->bb = MEM_callocN(sizeof(BoundBox), "boundbox");
bb = cu->bb;
- dl = ob->disp.first;
-
- while (dl) {
- if (dl->type == DL_INDEX3) tot = dl->nr;
- else tot = dl->nr * dl->parts;
-
+ for (dl = ob->disp.first; dl; dl = dl->next) {
+ tot = (dl->type == DL_INDEX3) ? dl->nr : dl->nr * dl->parts;
vert = dl->verts;
for (a = 0; a < tot; a++, vert += 3) {
- doit = 1;
- DO_MINMAX(vert, min, max);
+ minmax_v3v3_v3(min, max, vert);
}
-
- dl = dl->next;
+ doit = (tot != 0);
}
if (!doit) {