phew... a whole bunch of old and nasty files translated, including the

central mesh editing one.
This commit is contained in:
2003-04-29 15:30:59 +00:00
parent a4f2249497
commit ceb3e8cc2a
11 changed files with 622 additions and 801 deletions

View File

@@ -30,6 +30,15 @@
* ***** END GPL/BL DUAL LICENSE BLOCK *****
*/
/* this code feels over-complex, mostly because I choose in the past to devise a system
that converts the Ipo blocks (linked to Object, Material, etc), into a copy of that
data which is being worked on; the 'editipo'.
The editipo then can have 'ipokey' data, which is optimized for editing curves as if
it were key positions. This is still a great feature to work with, which makes ipo editing
in Blender still valuable. However, getting this beast under control was hard, even
for me... (ton) */
#include <stdlib.h>
#include <string.h>
#include <math.h>
@@ -554,7 +563,7 @@ void editipo_changed(SpaceIpo *si, int doredraw)
if(ei->icu) {
/* 2 keer i.v.m. ittereren nieuwe autohandle */
/* twice because of ittererating new autohandle */
calchandles_ipocurve(ei->icu);
calchandles_ipocurve(ei->icu);
@@ -572,9 +581,8 @@ void editipo_changed(SpaceIpo *si, int doredraw)
}
v2d= &(si->v2d);
// v2d = &G.v2d;
/* keylijnen? */
/* keylines? */
if(si->blocktype==ID_KE) {
key= (Key *)si->from;
if(key && key->block.first) {
@@ -586,7 +594,7 @@ void editipo_changed(SpaceIpo *si, int doredraw)
}
/* is er geen curve? */
/* is there no curve? */
if(first) {
v2d->tot.xmin= 0.0;
v2d->tot.xmax= EFRA;
@@ -604,13 +612,12 @@ void editipo_changed(SpaceIpo *si, int doredraw)
si->tot= v2d->tot;
if(doredraw) {
/* als do_ipo altijd wordt aangeroepen: problemen met insertkey, bijvoorbeeld
* als alleen een 'loc' wordt ge-insert wordt de 'ob->rot' veranderd.
/* if you always call do_ipo: you get problems with insertkey, for example
* when inserting only a 'loc' the 'ob->rot' value then is changed.
*/
if(si->blocktype==ID_OB) {
/* clear delta loc,rot,size (bij ipo vrijgeven/deleten) */
/* clear delta loc,rot,size (when free/delete ipo) */
clear_delta_obipo(si->ipo);
}
@@ -658,7 +665,7 @@ void editipo_changed(SpaceIpo *si, int doredraw)
void scale_editipo()
{
/* komt uit buttons, scale met G.sipo->tot rect */
/* comes from buttons, scale with G.sipo->tot rect */
EditIpo *ei;
BezTriple *bezt;
@@ -801,7 +808,7 @@ unsigned int ipo_rainbow(int cur, int tot)
dfac= (float)(1.0/( (float)tot+1.0));
/* deze berekening zorgt voor twee verschillende cycles regenboogkleuren */
/* this calculation makes 2 different cycles of rainbow colors */
if(cur< tot/2) fac= (float)(cur*2.0*dfac);
else fac= (float)((cur-tot/2)*2.0*dfac +dfac);
@@ -973,7 +980,6 @@ void make_mat_editipo(SpaceIpo *si)
ei->adrcode |= texchannel_to_adrcode(si->channel);
}
else {
/* dit was weggecommentaard. Waarom? */
if(ei->adrcode==MA_MODE) ei->disptype= IPO_DISPBITS;
}
@@ -1246,7 +1252,7 @@ void make_editipo()
if(G.sipo->editipo==0) return;
/* rowbut voor VISIBLE select */
/* rowbut for VISIBLE select */
G.sipo->rowbut= 0;
ei= G.sipo->editipo;
for(a=0; a<G.sipo->totipo; a++, ei++) {
@@ -1357,7 +1363,7 @@ void get_status_editipo()
if(ei->flag & IPO_SELECT) totipo_sel++;
if(G.sipo->showkey || (ei->flag & IPO_EDIT)) {
/* als showkey: wel de vertices tellen (voor grab) */
/* if showkey: do count the vertices (for grab) */
if(G.sipo->showkey==0) totipo_edit++;
if(ei->icu) {
@@ -1439,7 +1445,7 @@ void set_editflag_editipo()
EditIpo *ei;
int a; /* , tot= 0, ok= 0; */
/* van showkey direkt door naar editen geselecteerde punten */
/* after showkey immediately go to editing of selected points */
if(G.sipo->showkey) {
G.sipo->showkey= 0;
if(G.sipo->ipo) G.sipo->ipo->showkey= 0;
@@ -1646,8 +1652,8 @@ void deselectall_editipo()
short findnearest_ipovert(IpoCurve **icu, BezTriple **bezt)
{
/* selected krijgen een nadeel */
/* in icu en (bezt of bp) wordt nearest weggeschreven */
/* selected verts get a disadvantage */
/* in icu and (bezt or bp) the nearest is written */
/* return 0 1 2: handlepunt */
EditIpo *ei;
BezTriple *bezt1;
@@ -1686,7 +1692,7 @@ short findnearest_ipovert(IpoCurve **icu, BezTriple **bezt)
}
if(ei->disptype!=IPO_DISPBITS && ei->icu->ipo==IPO_BEZ) {
/* middelste punten een klein voordeel */
/* middle points get an advantage */
temp= -3+abs(mval[0]- bezt1->s[0][0])+ abs(mval[1]- bezt1->s[0][1]);
if( bezt1->f1 & 1) temp+=5;
if(temp<dist) {
@@ -1788,13 +1794,13 @@ void do_ipo_selectbuttons()
if(G.sipo->showkey) return;
/* geen editipo toestaan: editipo's naar selected omzetten */
/* do not allow editipo here: convert editipos to selected */
get_status_editipo();
if(totipo_edit) {
set_editflag_editipo();
}
/* welke */
/* which */
getmouseco_areawin(mval);
nr= -(mval[1]-curarea->winy+30-G.sipo->butofs-IPOBUTY)/IPOBUTY;
@@ -1970,8 +1976,8 @@ IpoCurve *get_ipocurve(ID *from, short type, int adrcode, Ipo *useipo)
Ipo *ipo= 0;
IpoCurve *icu=0;
/* return 0 als lib */
/* ook testen of ipo en ipocurve bestaan */
/* return 0 if lib */
/* also test if ipo and ipocurve exist */
if (useipo==NULL) {
@@ -2036,7 +2042,7 @@ void insert_vert_ipo(IpoCurve *icu, float x, float y)
icu->totvert= 1;
}
else {
/* alle vertices deselect */
/* all vertices deselect */
for(a=0; a<icu->totvert; a++, bezt++) {
bezt->f1= bezt->f2= bezt->f3= 0;
}
@@ -2044,7 +2050,7 @@ void insert_vert_ipo(IpoCurve *icu, float x, float y)
bezt= icu->bezt;
for(a=0; a<=icu->totvert; a++, bezt++) {
/* geen dubbele punten */
/* no double points */
if(a<icu->totvert && (bezt->vec[1][0]>x-IPOTHRESH && bezt->vec[1][0]<x+IPOTHRESH)) {
*(bezt)= beztr;
break;
@@ -2071,7 +2077,7 @@ void insert_vert_ipo(IpoCurve *icu, float x, float y)
calchandles_ipocurve(icu);
/* handletype goedzetten */
/* set handletype */
if(icu->totvert>2) {
h1= h2= HD_AUTO;
if(a>0) h1= (bezt-1)->h2;
@@ -2120,7 +2126,7 @@ void add_vert_ipo()
insert_vert_ipo(ei->icu, x, y);
/* voor zekerheid: als icu 0 was, of maar 1 curve visible */
/* to be sure: if icu was 0, or only 1 curve visible */
ei->flag |= IPO_SELECT;
ei->icu->flag= ei->flag;
@@ -2144,7 +2150,7 @@ void add_duplicate_editipo()
if(G.sipo->showkey || (ei->flag & IPO_EDIT)) {
icu= ei->icu;
/* hoeveel punten */
/* how many points */
tot= 0;
b= icu->totvert;
bezt= icu->bezt;
@@ -2199,7 +2205,7 @@ void remove_doubles_ipo()
for(a=0; a<G.sipo->totipo; a++, ei++) {
if ISPOIN3(ei, flag & IPO_VISIBLE, icu, icu->bezt) {
/* OF de curve is selected OF in editmode OF in keymode */
/* OR the curve is selected OR in editmode OR in keymode */
mode= 0;
if(G.sipo->showkey || (ei->flag & IPO_EDIT)) mode= 1;
else if(ei->flag & IPO_SELECT) mode= 2;
@@ -2212,16 +2218,16 @@ void remove_doubles_ipo()
bezt++;
while(b--) {
/* mag er verwijderd worden? */
/* can we remove? */
if(mode==2 || (bezt->f2 & 1)) {
/* verschillen de punten? */
/* are the points different? */
if( fabs( bezt->vec[1][0]-newb->vec[1][0] ) > 0.9 ) {
newb++;
*newb= *bezt;
}
else {
/* gemiddelde */
/* median */
VecMidf(newb->vec[0], newb->vec[0], bezt->vec[0]);
VecMidf(newb->vec[1], newb->vec[1], bezt->vec[1]);
VecMidf(newb->vec[2], newb->vec[2], bezt->vec[2]);
@@ -2247,9 +2253,9 @@ void remove_doubles_ipo()
}
}
editipo_changed(G.sipo, 1); /* maakt ook ipokeys opnieuw! */
editipo_changed(G.sipo, 1); /* makes ipokeys again! */
/* dubbele keys weg */
/* remove double keys */
if(G.sipo->showkey) {
ik= G.sipo->ipokey.first;
ikn= ik->next;
@@ -2270,7 +2276,7 @@ void remove_doubles_ipo()
}
editipo_changed(G.sipo, 1); /* maakt ook ipokeys opnieuw! */
editipo_changed(G.sipo, 1); /* makes ipokeys agian! */
}
deselectall_editipo();
@@ -2294,14 +2300,14 @@ void join_ipo()
}
else if(mode!=1) return;
/* eerst: meerdere geselecteerde verts in 1 curve */
/* first: multiple selected verts in 1 curve */
ei= G.sipo->editipo;
for(a=0; a<G.sipo->totipo; a++, ei++) {
if ISPOIN3(ei, flag & IPO_VISIBLE, icu, icu->bezt) {
if(G.sipo->showkey || (ei->flag & IPO_EDIT)) {
icu= ei->icu;
/* hoeveel punten */
/* how many points */
tot= 0;
b= icu->totvert;
bezt= icu->bezt;
@@ -2315,7 +2321,7 @@ void join_ipo()
icu->totvert-= tot;
newb= MEM_mallocN(icu->totvert*sizeof(BezTriple), "bezt");
/* het eerste punt wordt het nieuwe punt */
/* the first point is the new one */
beztn= newb+1;
tot= 0;
@@ -2353,9 +2359,9 @@ void join_ipo()
}
}
/* dan: in keymode: meerdere geselecteerde keys samenvoegen */
/* next: in keymode: join multiple selected keys */
editipo_changed(G.sipo, 1); /* maakt ook ipokeys opnieuw! */
editipo_changed(G.sipo, 1); /* makes ipokeys again! */
if(G.sipo->showkey) {
ik= G.sipo->ipokey.first;
@@ -2572,7 +2578,7 @@ void mouse_select_ipo()
getmouseco_areawin(mval);
areamouseco_to_ipoco(G.v2d, mval, &x, &y);
/* hoeveel is 20 pixels? */
/* how much is 20 pixels? */
mindist= (float)(20.0*(G.v2d->cur.ymax-G.v2d->cur.ymin)/(float)curarea->winy);
kb= key->block.first;
@@ -2591,25 +2597,12 @@ void mouse_select_ipo()
ok= okee("Copy Key after leaving EditMode");
}
if(ok) {
/* doet ook alle keypos */
/* also does all keypos */
deselectall_editipo();
/* oldflag= actkb->flag; */
actkb->flag |= 1;
/* if(G.qual & LR_SHIFTKEY); */
/* else { */
/* deselectall_key(); */
/* } */
/* if(G.qual & LR_SHIFTKEY) { */
/* if(oldflag & 1) actkb->flag &= ~1; */
/* else actkb->flag |= 1; */
/* } */
/* else { */
actkb->flag |= 1;
/* } */
/* bereken keypos */
/* calc keypos */
showkeypos((Key *)G.sipo->from, actkb);
}
}
@@ -2795,6 +2788,7 @@ int selected_bezier_loop(int (*looptest)(EditIpo *),
ipocurve_function(ei->icu);
}
/* nufte flourdje zim ploopydu <-- random dutch looking comment ;) */
/* looks more like russian to me! (ton) */
}
return 0;
@@ -3330,7 +3324,7 @@ void paste_editipo()
error("Incompatible paste");
}
else {
/* problemen voorkomen: andere splines visible dan select */
/* prevent problems: splines visible that are not selected */
if(totipo_vis==totipo_sel) totipo_vis= 0;
icu= ipocopybuf.first;
@@ -3376,7 +3370,7 @@ void set_exprap_ipo(int mode)
int a;
if(G.sipo->ipo && G.sipo->ipo->id.lib) return;
/* in geval van keys: altijd ok */
/* in case of keys: always ok */
ei= G.sipo->editipo;
for(a=0; a<G.sipo->totipo; a++, ei++) {
@@ -3425,7 +3419,7 @@ void set_speed_editipo(float speed)
if(G.sipo->ipo && G.sipo->ipo->id.lib) return;
/* uitgaande van 1 visible curve, selected punt, bijhorende punten: lencorr! */
/* starting with 1 visible curve, selected point, associated points: do lencorr! */
ei= G.sipo->editipo;
for(a=0; a<G.sipo->totipo; a++, ei++) {
@@ -3514,7 +3508,7 @@ void insertkey(ID *id, int adrcode)
if( GS(id->name)==ID_OB ) {
ob= (Object *)id;
if(ob->sf!=0.0 && (ob->ipoflag & OB_OFFS_OB) ) {
/* eigenlijk frametofloat overniew berekenen! daarvoor CFRA als float door kunnen geven */
/* actually frametofloat calc again! */
cfra-= ob->sf*G.scene->r.framelen;
}
}
@@ -3550,7 +3544,7 @@ void insertkey_editipo()
else if(ei->flag & IPO_SELECT) ok= 1;
if(ok) {
/* aantal tellen */
/* count amount */
if(event==1) tot= 1;
else {
ik= G.sipo->ipokey.first;
@@ -3562,7 +3556,7 @@ void insertkey_editipo()
}
if(tot) {
/* correctie voor ob timeoffs */
/* correction for ob timeoffs */
cfra= frame_to_float(CFRA);
id= G.sipo->from;
if(id && GS(id->name)==ID_OB ) {
@@ -3580,7 +3574,7 @@ void insertkey_editipo()
}
insertvals= MEM_mallocN(sizeof(float)*2*tot, "insertkey_editipo");
/* zeker zijn dat icu->curval klopt */
/* make sure icu->curval is correct */
calc_ipo(G.sipo->ipo, cfra);
if(event==1) {
@@ -3939,7 +3933,7 @@ void common_insertkey()
if TESTBASELIB(base) {
id= (ID *)(base->object);
/* alle curves in ipo deselect */
/* all curves in ipo deselect */
if(base->object->ipo) {
icu= base->object->ipo->curve.first;
while(icu) {
@@ -3965,14 +3959,14 @@ void common_insertkey()
insertkey(id, OB_SIZE_Z);
}
if(event==5) {
/* localview weghalen */
/* remove localview */
tlay= base->object->lay;
base->object->lay &= 0xFFFFFF;
insertkey(id, OB_LAY);
base->object->lay= tlay;
}
if(event==8) {
/* deze patch moet omdat duplicators de positie van effg veranderen */
/* a patch, can be removed (old ika) */
Ika *ika= ob->data;
VecMat4MulVecfl(ika->effg, ob->obmat, ika->effn);
@@ -3998,10 +3992,10 @@ void common_insertkey()
/* IPOKEY:
*
* er zijn drie manieren om hiermee om te gaan:
* 1. hieronder: voor tekenen en editen in Ipo window
* 2. voor tekenen keys in View3D (zie ipo.c en drawobject.c)
* 3. voor editen keys in View3D (hieronder en editobject.c)
* there are three ways to use this system:
* 1. below: for drawing and editing in Ipo window
* 2. for drawing key positions in View3D (see ipo.c and drawobject.c)
* 3. editing keys in View3D (below and in editobject.c)
*
*/
@@ -4027,7 +4021,7 @@ void add_to_ipokey(ListBase *lb, BezTriple *bezt, int nr, int len)
while(ik) {
if( ik->val==bezt->vec[1][0] ) {
if(ik->data[nr]==0) { /* dubbele punten! */
if(ik->data[nr]==0) { /* double points! */
ik->data[nr]= bezt;
if(bezt->f2 & 1) ik->flag= 1;
return;
@@ -4077,7 +4071,7 @@ void make_ipokey(void)
}
}
/* selectflags testen */
/* test selectflags */
ik= lb->first;
while(ik) {
sel= desel= 0;
@@ -4121,7 +4115,7 @@ void make_ipokey_transform(Object *ob, ListBase *lb, int sel)
if(ob->ipo==0) return;
if(ob->ipo->showkey==0) return;
/* testen: zijn er delta curves? */
/* test: are there delta curves? */
icu= ob->ipo->curve.first;
while(icu) {
if(icu->flag & IPO_VISIBLE) {
@@ -4202,7 +4196,7 @@ void make_ipokey_transform(Object *ob, ListBase *lb, int sel)
}
}
void update_ipokey_val() /* na verplaatsen vertices */
void update_ipokey_val() /* after moving vertices */
{
IpoKey *ik;
int a;
@@ -4276,17 +4270,17 @@ void set_ipo_pointers_transob(IpoKey *ik, TransOb *tob)
}
}
/* oldvals voor o.a. undo */
/* oldvals for e.g. undo */
if(tob->locx) set_tob_old(tob->oldloc, tob->locx);
if(tob->locy) set_tob_old(tob->oldloc+1, tob->locy);
if(tob->locz) set_tob_old(tob->oldloc+2, tob->locz);
/* bewaar de eerste oldrot, ivm mapping curves ('1'=10 graden) en correcte berekening */
/* store first oldrot, for mapping curves ('1'=10 degrees) and correct calculation */
if(tob->rotx) set_tob_old(tob->oldrot+3, tob->rotx);
if(tob->roty) set_tob_old(tob->oldrot+4, tob->roty);
if(tob->rotz) set_tob_old(tob->oldrot+5, tob->rotz);
/* bewaar de eerste oldsize, dit mag niet de dsize zijn! */
/* store the first oldsize, this is not allowed to be dsize! */
if(tob->sizex) set_tob_old(tob->oldsize+3, tob->sizex);
if(tob->sizey) set_tob_old(tob->oldsize+4, tob->sizey);
if(tob->sizez) set_tob_old(tob->oldsize+5, tob->sizez);
@@ -4326,7 +4320,7 @@ void nextkey(ListBase *elems, int dir)
else if(ik==0) previk->flag= 0;
}
/* als geen een key select: */
/* when no key select: */
if(totsel==0) {
if(dir==1) ik= elems->first;
else ik= elems->last;
@@ -4344,7 +4338,7 @@ static int float_to_frame (float frame)
return to;
}
void movekey_ipo(int dir) /* alleen extern aanroepen vanuit view3d queue */
void movekey_ipo(int dir) /* only call external from view3d queue */
{
IpoKey *ik;
float toframe = 0.0;
@@ -4381,7 +4375,7 @@ void movekey_ipo(int dir) /* alleen extern aanroepen vanuit view3d queue */
}
void movekey_obipo(int dir) /* alleen extern aanroepen vanuit view3d queue */
void movekey_obipo(int dir) /* only call external from view3d queue */
{
Base *base;
Object *ob;
@@ -4436,7 +4430,7 @@ void movekey_obipo(int dir) /* alleen extern aanroepen vanuit view3d queue */
}
void nextkey_ipo(int dir) /* aanroepen vanuit ipo queue */
void nextkey_ipo(int dir) /* call from ipo queue */
{
IpoKey *ik;
int a;
@@ -4445,7 +4439,7 @@ void nextkey_ipo(int dir) /* aanroepen vanuit ipo queue */
nextkey(&G.sipo->ipokey, dir);
/* kopieeren naar beziers */
/* copy to beziers */
ik= G.sipo->ipokey.first;
while(ik) {
for(a=0; a<G.sipo->totipo; a++) {
@@ -4460,7 +4454,7 @@ void nextkey_ipo(int dir) /* aanroepen vanuit ipo queue */
if(G.sipo->blocktype == ID_OB) allqueue(REDRAWVIEW3D, 0);
}
void nextkey_obipo(int dir) /* alleen extern aanroepen vanuit view3d queue */
void nextkey_obipo(int dir) /* only call external from view3d queue */
{
Base *base;
Object *ob;
@@ -4482,7 +4476,7 @@ void nextkey_obipo(int dir) /* alleen extern aanroepen vanuit view3d queue */
nextkey(&elems, dir);
/* kopieeren naar beziers */
/* copy to beziers */
ik= elems.first;
while(ik) {
for(a=0; a<OB_TOTIPO; a++) {
@@ -4584,11 +4578,11 @@ void transform_ipo(int mode)
if(G.sipo->ipo && G.sipo->ipo->id.lib) return;
if(G.sipo->editipo==0) return;
if(mode=='r') return; /* vanuit gesture */
if(mode=='r') return; /* from gesture */
INIT_MINMAX(min, max);
/* welke vertices doen mee */
/* which vertices are involved */
get_status_editipo();
if(totipo_vertsel) {
tot= totipo_vertsel;
@@ -4611,7 +4605,7 @@ void transform_ipo(int mode)
VECCOPY(tv->oldloc, tv->loc);
if(ei->disptype==IPO_DISPBITS) tv->flag= 1;
/* let op: we nemen middelste vertex */
/* we take the middle vertex */
DO_MINMAX2(bezt->vec[1], min, max);
tv++;
@@ -4621,7 +4615,7 @@ void transform_ipo(int mode)
VECCOPY(tv->oldloc, tv->loc);
if(ei->disptype==IPO_DISPBITS) tv->flag= 1;
/* let op: we nemen middelste vertex */
/* we take the middle vertex */
DO_MINMAX2(bezt->vec[1], min, max);
tv++;
@@ -4732,7 +4726,7 @@ void transform_ipo(int mode)
if(midtog) dvec[proj]= 0.0;
/* vec wordt verderop nog gebruikt: remake_ipo_transverts */
/* vec is reused below: remake_ipo_transverts */
vec[0]= dvec[0];
vec[1]= dvec[1];
@@ -4780,7 +4774,7 @@ void transform_ipo(int mode)
for(a=0; a<G.sipo->totipo; a++, ei++) {
if ISPOIN(ei, flag & IPO_VISIBLE, icu) {
/* let op: als de tijd verkeerd is: niet de handles corrigeren */
/* watch it: if the time is wrong: do not correct handles */
if (test_time_ipocurve(ei->icu) ) dosort++;
else testhandles_ipocurve(ei->icu);
}
@@ -4924,7 +4918,7 @@ void clever_numbuts_ipo()
if(G.sipo->ipo && G.sipo->ipo->id.lib) return;
if(G.sipo->editipo==0) return;
/* welke vertices doen mee */
/* which vertices are involved */
get_status_editipo();
if(G.qual & LR_SHIFTKEY) totbut= 1;
@@ -5074,7 +5068,7 @@ void sampledata_to_ipocurve(float *data, int sfra, int efra, IpoCurve *icu)
if(icu->bezt) MEM_freeN(icu->bezt);
icu->bezt= 0;
tot= 1; /* eerste punt */
tot= 1; /* first point */
da= data+1;
for(a=sfra+1; a<efra; a++, da++) {
if( IS_EQ(da[0], da[1])==0 && IS_EQ(da[1], da[2])==0 ) tot++;
@@ -5097,12 +5091,12 @@ void sampledata_to_ipocurve(float *data, int sfra, int efra, IpoCurve *icu)
void ipo_record()
{
/* 1 of 2 aktieve curves
* kopie maken (ESC)
/* only 1 or 2 active curves
* make a copy (ESC)
*
* nulpunt is de huidige stand (of 0)
* dx (dy identiek) is de hoogteverhouding
* CTRL start record
* reference point is the current situation (or 0)
* dx (dy) is the height correction factor
* CTRL: start record
*/
extern double tottime;
EditIpo *ei, *ei1=0, *ei2=0;
@@ -5147,7 +5141,7 @@ void ipo_record()
return;
}
/* curves gereedmaken, startwaardes */
/* make curves ready, start values */
if(ei1->icu==0) ei1->icu= get_ipocurve(G.sipo->from, G.sipo->blocktype, ei1->adrcode, 0);
if(ei1->icu==0) return;
poin= get_ipo_poin(G.sipo->from, ei1->icu, &type);
@@ -5167,7 +5161,7 @@ void ipo_record()
fac= G.v2d->cur.ymax - G.v2d->cur.ymin;
fac/= (float)curarea->winy;
/* welke area */
/* which area */
oldarea= curarea;
sa= G.curscreen->areabase.first;
while(sa) {
@@ -5183,7 +5177,7 @@ void ipo_record()
}
if(sa) areawinset(sa->win);
/* kandie? */
/* can we? */
while(get_mbut()&L_MOUSE) BIF_wait_for_statechange();
data1= MEM_callocN(sizeof(float)*(EFRA-SFRA+1), "data1");
data2= MEM_callocN(sizeof(float)*(EFRA-SFRA+1), "data2");
@@ -5208,7 +5202,7 @@ void ipo_record()
set_timecursor(cfra);
/* ipo doen: eerst alles daarna de specifieke */
/* do ipo: first all, then the specific ones */
if(anim==2) {
do_all_ipos();
do_all_keys();
@@ -5236,7 +5230,7 @@ void ipo_record()
if(sa) scrarea_do_windraw(sa);
/* minimaal swaptime laten voorbijgaan */
/* minimal wait swaptime */
tottime -= swaptime;
while (update_time()) PIL_sleep_ms(1);
@@ -5270,14 +5264,14 @@ void ipo_record()
sampledata_to_ipocurve(data1+sfra-SFRA, sfra, efra, ei1->icu);
if(ei2) sampledata_to_ipocurve(data2+sfra-SFRA, sfra, efra, ei2->icu);
/* vervelend als dat aanstaat */
/* not nice when this is on */
if(G.sipo->showkey) {
G.sipo->showkey= 0;
free_ipokey(&G.sipo->ipokey);
}
}
else {
/* undo: startwaardes */
/* undo: start values */
poin= get_ipo_poin(G.sipo->from, ei1->icu, &type);
if(poin) write_ipo_poin(poin, type, or1);
if(ei1->icu->bezt==0) {
@@ -5307,7 +5301,7 @@ void ipo_record()
scrarea_queue_redraw(oldarea);
CFRA= cfrao;
/* vooropig? */
/* for the time being? */
update_for_newframe();
MEM_freeN(data1);