- decided it made more sense to make a key_get_active function, switched

to that in editmesh as well as for edit{curve,lattice}
 - added a G.editModeTitleExtra string that gets displayed in header info
   string in editmode. currently used to display "(Key)" when editing a
   key (before there was not UI level display of this info).
This commit is contained in:
Daniel Dunbar 2005-07-15 17:55:19 +00:00
parent 5263d588c1
commit 0be013010f
10 changed files with 56 additions and 76 deletions

@ -80,6 +80,7 @@ typedef struct Global {
struct Scene *scene; /* denk aan file.c */
struct bScreen *curscreen;
struct Object *obedit;
char editModeTitleExtra[64];
/* fonts, allocated global data */
struct BMF_Font *font, *fonts, *fontss;

@ -60,5 +60,7 @@ void do_spec_key(struct Key *key);
void unlock_all_keys(void);
struct KeyBlock *key_get_active(struct Key *keyData);
#endif

@ -80,7 +80,6 @@ void mesh_set_smooth_flag(struct Object *meshOb, int enableSmooth);
struct BoundBox *mesh_get_bb(struct Mesh *me);
void mesh_get_texspace(struct Mesh *me, float *loc_r, float *rot_r, float *size_r);
struct KeyBlock *mesh_get_active_key(struct Mesh *me);
void make_edges(struct Mesh *me);

@ -1206,3 +1206,16 @@ void do_spec_key(Key *key)
else if(idcode==ID_LT) do_latt_key( (Lattice *)key->from);
}
KeyBlock *key_get_active(Key *keyData)
{
if (keyData) {
KeyBlock *key;
for (key=keyData->block.first; key; key= key->next)
if (key->flag&SELECT)
return key;
}
return NULL;
}

@ -1287,14 +1287,3 @@ void mesh_set_smooth_flag(Object *meshOb, int enableSmooth) {
DAG_object_flush_update(G.scene, meshOb, OB_RECALC_DATA);
}
KeyBlock *mesh_get_active_key(Mesh *me)
{
KeyBlock *key;
for (key=me->key->block.first; key; key= key->next)
if (key->flag&SELECT)
break;
return key;
}

@ -69,6 +69,7 @@
#include "BKE_global.h"
#include "BKE_object.h"
#include "BKE_main.h"
#include "BKE_key.h"
#include "BIF_editmode_undo.h"
#include "BIF_gl.h"
@ -238,7 +239,7 @@ void load_editNurb()
/* load editNurb in object */
Curve *cu= 0;
Nurb *nu, *newnu;
KeyBlock *actkey=0;
KeyBlock *actkey;
if(G.obedit==0) return;
@ -249,24 +250,17 @@ void load_editNurb()
cu= G.obedit->data;
/* are there keys? */
if(cu->key) {
actkey= cu->key->block.first;
while(actkey) {
if(actkey->flag & SELECT) break;
actkey= actkey->next;
}
if(actkey) {
/* active key: the vertices */
if(G.totvert) {
if(actkey->data) MEM_freeN(actkey->data);
actkey->data= MEM_callocN(cu->key->elemsize*G.totvert, "actkey->data");
actkey->totelem= G.totvert;
actkey = key_get_active(cu->key);
if(actkey) {
/* active key: the vertices */
curve_to_key(cu, actkey, &editNurb);
}
if(G.totvert) {
if(actkey->data) MEM_freeN(actkey->data);
actkey->data= MEM_callocN(cu->key->elemsize*G.totvert, "actkey->data");
actkey->totelem= G.totvert;
curve_to_key(cu, actkey, &editNurb);
}
}
@ -296,7 +290,6 @@ void load_editNurb()
}
lastnu= NULL; /* for selected */
}
void make_editNurb()
@ -304,7 +297,7 @@ void make_editNurb()
/* make copy of baseNurb in editNurb */
Curve *cu=0;
Nurb *nu, *newnu;
KeyBlock *actkey=0;
KeyBlock *actkey;
if(G.obedit==NULL) return;
@ -323,16 +316,10 @@ void make_editNurb()
nu= nu->next;
}
if(cu->key) {
actkey= cu->key->block.first;
while(actkey) {
if(actkey->flag & SELECT) break;
actkey= actkey->next;
}
if(actkey) {
key_to_curve(actkey, cu, &editNurb);
}
actkey = key_get_active(cu->key);
if(actkey) {
strcpy(G.editModeTitleExtra, "(Key) ");
key_to_curve(actkey, cu, &editNurb);
}
}
else G.obedit= NULL;

@ -108,22 +108,15 @@ static void setflagsLatt(int flag)
void make_editLatt(void)
{
Lattice *lt;
KeyBlock *actkey=0;
KeyBlock *actkey;
free_editLatt();
lt= G.obedit->data;
/* keys? */
if(lt->key) {
actkey= lt->key->block.first;
while(actkey) {
if(actkey->flag & SELECT) break;
actkey= actkey->next;
}
}
actkey = key_get_active(lt->key);
if(actkey) {
strcpy(G.editModeTitleExtra, "(Key) ");
key_to_latt(actkey, lt);
}
@ -138,22 +131,14 @@ void make_editLatt(void)
void load_editLatt(void)
{
Lattice *lt;
KeyBlock *actkey=0;
KeyBlock *actkey;
BPoint *bp;
float *fp;
int tot;
lt= G.obedit->data;
/* are there keys? */
if(lt->key) {
actkey= lt->key->block.first;
while(actkey) {
if(actkey->flag & SELECT) break;
actkey= actkey->next;
}
}
actkey = key_get_active(lt->key);
if(actkey) {
/* active key: vertices */
tot= editLatt->pntsu*editLatt->pntsv*editLatt->pntsw;
@ -170,7 +155,7 @@ void load_editLatt(void)
bp++;
}
if(actkey) showkeypos(lt->key, actkey);
showkeypos(lt->key, actkey);
}
else {

@ -660,9 +660,9 @@ void make_editMesh()
/* initialize fastmalloc for editmesh */
init_editmesh_fastmalloc(G.editMesh, me->totvert, me->totedge, me->totface);
actkey = mesh_get_active_key(me);
actkey = key_get_active(me->key);
if(actkey) {
strcpy(G.editModeTitleExtra, "(Key) ");
key_to_mesh(actkey, me);
tot= actkey->totelem;
}
@ -1168,7 +1168,7 @@ void load_editMesh(void)
/* are there keys? */
if(me->key) {
KeyBlock *currkey, *actkey = mesh_get_active_key(me);
KeyBlock *currkey, *actkey = key_get_active(me->key);
/* Lets reorder the key data so that things line up roughly
* with the way things were before editmode */

@ -1366,6 +1366,8 @@ void enter_editmode(void)
if(base==0) return;
if((G.vd==NULL || (base->lay & G.vd->lay))==0) return;
strcpy(G.editModeTitleExtra, "");
ob= base->object;
if(ob->data==0) return;

@ -1775,25 +1775,27 @@ static void info_text(int x, int y)
int hsize;
if(G.obedit) {
char *s = infostr;
s+= sprintf(s, "%s", G.editModeTitleExtra);
if(G.obedit->type==OB_MESH) {
if(G.scene->selectmode & SCE_SELECT_VERTEX)
sprintf(infostr,"Ve:%d-%d | Ed:%d-%d | Fa:%d-%d | Mem:%.2fM ",
G.totvertsel, G.totvert, G.totedgesel, G.totedge, G.totfacesel, G.totface, (mem_in_use>>10)/1024.0);
s+= sprintf(s,"Ve:%d-%d | Ed:%d-%d | Fa:%d-%d",
G.totvertsel, G.totvert, G.totedgesel, G.totedge, G.totfacesel, G.totface);
else if(G.scene->selectmode & SCE_SELECT_EDGE)
sprintf(infostr,"Ed:%d-%d | Fa:%d-%d | Mem:%.2fM ",
G.totedgesel, G.totedge, G.totfacesel, G.totface, (mem_in_use>>10)/1024.0);
s+= sprintf(s,"Ed:%d-%d | Fa:%d-%d",
G.totedgesel, G.totedge, G.totfacesel, G.totface);
else
sprintf(infostr,"Fa:%d-%d | Mem:%.2fM ",
G.totfacesel, G.totface, (mem_in_use>>10)/1024.0);
s+= sprintf(s,"Fa:%d-%d", G.totfacesel, G.totface);
}
else if(G.obedit->type==OB_ARMATURE) {
sprintf(infostr,"Ve:%d-%d | Bo:%d-%d | Mem:%.2fM ",
G.totvertsel, G.totvert, G.totbonesel, G.totbone, (mem_in_use>>10)/1024.0);
s+= sprintf(s,"Ve:%d-%d | Bo:%d-%d", G.totvertsel, G.totvert, G.totbonesel, G.totbone);
}
else {
sprintf(infostr,"Ve:%d-%d | Mem:%.2fM ",
G.totvertsel, G.totvert, (mem_in_use>>10)/1024.0);
s+= sprintf(s,"Ve:%d-%d", G.totvertsel, G.totvert);
}
sprintf(s," | Mem:%.2fM", (mem_in_use>>10)/1024.0);
}
else if(G.obpose) {
sprintf(infostr,"Bo:%d-%d | Mem:%.2fM ",