Graph Editor Bugfix: 'HomeKey' (View All) wasn't correctly calculating y-extents

It was only using the y-extents of the last F-Curve it encountered
This commit is contained in:
Joshua Leung
2009-05-11 11:51:30 +00:00
parent 1a76f8a9f3
commit 69fca66a81
2 changed files with 16 additions and 10 deletions

View File

@@ -210,8 +210,10 @@ void calc_fcurve_bounds (FCurve *fcu, float *xmin, float *xmax, float *ymin, flo
BezTriple *bezt;
for (bezt=fcu->bezt, i=0; i < fcu->totvert; bezt++, i++) {
yminv= MIN2(yminv, bezt->vec[1][1]);
ymaxv= MAX2(ymaxv, bezt->vec[1][1]);
if (bezt->vec[1][1] < yminv)
yminv= bezt->vec[1][1];
if (bezt->vec[1][1] > ymaxv)
ymaxv= bezt->vec[1][1];
}
}
}
@@ -227,8 +229,10 @@ void calc_fcurve_bounds (FCurve *fcu, float *xmin, float *xmax, float *ymin, flo
FPoint *fpt;
for (fpt=fcu->fpt, i=0; i < fcu->totvert; fpt++, i++) {
yminv= MIN2(yminv, fpt->vec[1]);
ymaxv= MAX2(ymaxv, fpt->vec[1]);
if (fpt->vec[1] < yminv)
yminv= fpt->vec[1];
if (fpt->vec[1] > ymaxv)
ymaxv= fpt->vec[1];
}
}
}

View File

@@ -116,19 +116,21 @@ static void get_graph_keyframe_extents (bAnimContext *ac, float *xmin, float *xm
for (ale= anim_data.first; ale; ale= ale->next) {
Object *nob= NULL; //ANIM_nla_mapping_get(ac, ale);
FCurve *fcu= (FCurve *)ale->key_data;
float tmin, tmax;
float txmin, txmax, tymin, tymax;
/* get range and apply necessary scaling before */
calc_fcurve_bounds(fcu, &tmin, &tmax, ymin, ymax);
calc_fcurve_bounds(fcu, &txmin, &txmax, &tymin, &tymax);
if (nob) {
tmin= get_action_frame_inv(nob, tmin);
tmax= get_action_frame_inv(nob, tmax);
txmin= get_action_frame_inv(nob, txmin);
txmax= get_action_frame_inv(nob, txmax);
}
/* try to set cur using these values, if they're more extreme than previously set values */
if (xmin) *xmin= MIN2(*xmin, tmin);
if (xmax) *xmax= MAX2(*xmax, tmax);
if ((xmin) && (txmin < *xmin)) *xmin= txmin;
if ((xmax) && (txmax > *xmax)) *xmax= txmax;
if ((ymin) && (tymin < *ymin)) *ymin= tymin;
if ((ymax) && (tymax > *ymax)) *ymax= tymax;
}
/* free memory */