Graph Editor Bugfix: 'HomeKey' (View All) wasn't correctly calculating y-extents
authorJoshua Leung <aligorith@gmail.com>
Mon, 11 May 2009 11:51:30 +0000 (11:51 +0000)
committerJoshua Leung <aligorith@gmail.com>
Mon, 11 May 2009 11:51:30 +0000 (11:51 +0000)
It was only using the y-extents of the last F-Curve it encountered

source/blender/blenkernel/intern/fcurve.c
source/blender/editors/space_graph/graph_edit.c

index cade555a07ab87adae3e0828217414213c39db4f..fed5ffc2ebdb7ced01104bebe58b14870f92785b 100644 (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];
                                }
                        }
                }
index d4bdfce54148e21e3ad22d37c7c1a9a9da842ed9..a3d0b50b9a6dc46280ce95956a802284ef9c0aa2 100644 (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 */