Revision: 18685
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18685
Author:   aligorith
Date:     2009-01-27 00:18:27 +0100 (Tue, 27 Jan 2009)

Log Message:
-----------
Graph Editor: Added files + Bugfixes

* Copied files containing code for tools from Action Editor to use as a base 
for the Graph Editor's tools. The toolsets are now very similar, so it should 
just be a case of making a few tweaks here and there. Currently all of these 
tools are #if-def'd out, as there are still a few things to clean up.
(BUILDSYSTEM MAINTAINERS BEWARE!)

* Tweaked some UI stuff (width of mode selector in header, names in the 
spacetype choosing menu)

* Fixed a few bugs which were causing crashes when loading old files with IPO 
Editors open. 

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
    branches/blender2.5/blender/source/blender/editors/animation/anim_filter.c
    branches/blender2.5/blender/source/blender/editors/screen/area.c
    branches/blender2.5/blender/source/blender/editors/space_ipo/SConscript
    branches/blender2.5/blender/source/blender/editors/space_ipo/ipo_draw.c
    branches/blender2.5/blender/source/blender/editors/space_ipo/ipo_header.c
    branches/blender2.5/blender/source/blender/editors/space_ipo/ipo_intern.h
    branches/blender2.5/blender/source/blender/editors/space_ipo/space_ipo.c

Added Paths:
-----------
    branches/blender2.5/blender/source/blender/editors/space_ipo/ipo_edit.c
    branches/blender2.5/blender/source/blender/editors/space_ipo/ipo_ops.c
    branches/blender2.5/blender/source/blender/editors/space_ipo/ipo_select.c

Modified: 
branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c     
2009-01-26 22:43:12 UTC (rev 18684)
+++ branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c     
2009-01-26 23:18:27 UTC (rev 18685)
@@ -5454,11 +5454,7 @@
                                /* init mainarea view2d */
                                ar->v2d.scroll |= 
(V2D_SCROLL_BOTTOM|V2D_SCROLL_SCALE_HORIZONTAL);
                                ar->v2d.scroll |= 
(V2D_SCROLL_LEFT|V2D_SCROLL_SCALE_VERTICAL);
-                               
-                               /* init dopesheet */
-                               // XXX move this elsewhere instead?
-                               sipo->ads= MEM_callocN(sizeof(bDopeSheet), 
"GraphEdit DopeSheet");
-                               
+                                                               
                                //ar->v2d.flag |= V2D_IS_INITIALISED;
                                break;
                        }

Modified: 
branches/blender2.5/blender/source/blender/editors/animation/anim_filter.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/animation/anim_filter.c  
2009-01-26 22:43:12 UTC (rev 18684)
+++ branches/blender2.5/blender/source/blender/editors/animation/anim_filter.c  
2009-01-26 23:18:27 UTC (rev 18685)
@@ -199,6 +199,10 @@
 /* Get data being edited in Graph Editor (depending on current 'mode') */
 static short graphedit_get_context (bAnimContext *ac, SpaceIpo *sipo)
 {
+       /* init dopesheet data if non-existant (i.e. for old files) */
+       if (sipo->ads == NULL)
+               sipo->ads= MEM_callocN(sizeof(bDopeSheet), "GraphEdit 
DopeSheet");
+       
        /* sync settings with current view status, then return appropriate data 
*/
        switch (sipo->mode) {
                case SIPO_MODE_ANIMATION:       /* Animation F-Curve Editor */
@@ -466,7 +470,7 @@
         */
        for (fcu= first; ((fcu) && (fcu->grp==grp)); fcu= fcu->next) {
                /* only include if visible (Graph Editor check, not channels 
check) */
-               if (!(filter_mode & ANIMFILTER_CURVEVISIBLE) || (fcu->flag & 
FCURVE_VISIBLE)) {
+               //if (!(filter_mode & ANIMFILTER_CURVEVISIBLE) || (fcu->flag & 
FCURVE_VISIBLE)) { // XXX don't do this till we have tools to set this
                        /* only work with this channel and its subchannels if 
it is editable */
                        if (!(filter_mode & ANIMFILTER_FOREDIT) || 
EDITABLE_FCU(fcu)) {
                                /* only include this curve if selected */
@@ -480,7 +484,7 @@
                                        }
                                }
                        }
-               }
+               //}
        }
        
        /* return the number of items added to the list */

Modified: branches/blender2.5/blender/source/blender/editors/screen/area.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/screen/area.c    
2009-01-26 22:43:12 UTC (rev 18684)
+++ branches/blender2.5/blender/source/blender/editors/screen/area.c    
2009-01-26 23:18:27 UTC (rev 18685)
@@ -764,8 +764,8 @@
                   
                   "|%l" // 33
                   
-                  "|Ipo Curve Editor %x2" //54
-                  "|Action Editor %x12" //73
+                  "|Graph Editor %x2" //54
+                  "|DopeSheet Editor %x12" //73
                   "|NLA Editor %x13" //94
                   
                   "|%l" //97

Modified: 
branches/blender2.5/blender/source/blender/editors/space_ipo/SConscript
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_ipo/SConscript     
2009-01-26 22:43:12 UTC (rev 18684)
+++ branches/blender2.5/blender/source/blender/editors/space_ipo/SConscript     
2009-01-26 23:18:27 UTC (rev 18685)
@@ -3,7 +3,7 @@
 
 sources = env.Glob('*.c')
 
-incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../imbuf'
+incs = '../include ../../blenlib ../../blenkernel ../../makesdna 
../../makesrna ../../imbuf'
 incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include'
 
 env.BlenderLib ( 'bf_editors_space_ipo', sources, Split(incs), [], 
libtype=['core'], priority=[50] )

Modified: 
branches/blender2.5/blender/source/blender/editors/space_ipo/ipo_draw.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_ipo/ipo_draw.c     
2009-01-26 22:43:12 UTC (rev 18684)
+++ branches/blender2.5/blender/source/blender/editors/space_ipo/ipo_draw.c     
2009-01-26 23:18:27 UTC (rev 18685)
@@ -247,9 +247,6 @@
 {
        extern unsigned int nurbcol[];
        unsigned int *col;
-       
-       BezTriple *bezt=fcu->bezt, *prevbezt=NULL;
-       float *fp;
        int sel, b;
        
        /* don't draw handle lines if handles are not shown */
@@ -258,6 +255,9 @@
        
        /* slightly hacky, but we want to draw unselected points before 
selected ones*/
        for (sel= 0; sel < 2; sel++) {
+               BezTriple *bezt=fcu->bezt, *prevbezt=NULL;
+               float *fp;
+               
                if (sel) col= nurbcol+4;
                else col= nurbcol;
                        
@@ -268,7 +268,7 @@
                                /* only draw first handle if previous segment 
had handles */
                                if ( (!prevbezt && (bezt->ipo==BEZT_IPO_BEZ)) 
|| (prevbezt && (prevbezt->ipo==BEZT_IPO_BEZ)) ) 
                                {
-                                       cpack(col[bezt->h1]);
+                                       cpack(col[(unsigned char)bezt->h1]);
                                        glBegin(GL_LINE_STRIP); 
                                                glVertex2fv(fp); 
glVertex2fv(fp+3); 
                                        glEnd();
@@ -278,7 +278,7 @@
                                /* only draw second handle if this segment is 
bezier */
                                if (bezt->ipo == BEZT_IPO_BEZ) 
                                {
-                                       cpack(col[bezt->h2]);
+                                       cpack(col[(unsigned char)bezt->h2]);
                                        glBegin(GL_LINE_STRIP); 
                                                glVertex2fv(fp+3); 
glVertex2fv(fp+6); 
                                        glEnd();
@@ -290,7 +290,7 @@
                                         ( (!prevbezt && 
(bezt->ipo==BEZT_IPO_BEZ)) || (prevbezt && (prevbezt->ipo==BEZT_IPO_BEZ)) ) ) 
                                {
                                        fp= bezt->vec[0];
-                                       cpack(col[bezt->h1]);
+                                       cpack(col[(unsigned char)bezt->h1]);
                                        
                                        glBegin(GL_LINE_STRIP); 
                                                glVertex2fv(fp); 
glVertex2fv(fp+3); 
@@ -302,7 +302,7 @@
                                         (bezt->ipo == BEZT_IPO_BEZ) )
                                {
                                        fp= bezt->vec[1];
-                                       cpack(col[bezt->h2]);
+                                       cpack(col[(unsigned char)bezt->h2]);
                                        
                                        glBegin(GL_LINE_STRIP); 
                                                glVertex2fv(fp); 
glVertex2fv(fp+3); 
@@ -604,7 +604,7 @@
        
        /* build list of curves to draw */
                // XXX enable ANIMFILTER_CURVEVISIBLE when we have a method to 
set them
-       filter= 
(ANIMFILTER_VISIBLE|ANIMFILTER_CURVESONLY/*|ANIMFILTER_CURVEVISIBLE*/);
+       filter= 
(ANIMFILTER_VISIBLE|ANIMFILTER_CURVESONLY|ANIMFILTER_CURVEVISIBLE);
        items= ANIM_animdata_filter(ac, &anim_data, filter, ac->data, 
ac->datatype);
                
        /* for each curve:
@@ -630,7 +630,6 @@
                draw_fcurve_handles(sipo, ar, fcu);
                draw_fcurve_vertices(sipo, ar, fcu);
                
-               
                /* undo mapping of keyframes for drawing if scaled F-Curve */
                if (nob)
                        ANIM_nla_mapping_apply_fcurve(nob, ale->key_data, 1, 
1); 

Added: branches/blender2.5/blender/source/blender/editors/space_ipo/ipo_edit.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_ipo/ipo_edit.c     
                        (rev 0)
+++ branches/blender2.5/blender/source/blender/editors/space_ipo/ipo_edit.c     
2009-01-26 23:18:27 UTC (rev 18685)
@@ -0,0 +1,1373 @@
+/**
+ * $Id: editaction.c 17746 2008-12-08 11:19:44Z aligorith $
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): Joshua Leung
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#include <math.h>
+#include <stdlib.h>
+#include <string.h>
+#include <float.h>
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "MEM_guardedalloc.h"
+
+#include "BLI_blenlib.h"
+#include "BLI_arithb.h"
+
+#include "DNA_anim_types.h"
+#include "DNA_action_types.h"
+#include "DNA_armature_types.h"
+#include "DNA_camera_types.h"
+#include "DNA_curve_types.h"
+#include "DNA_object_types.h"
+#include "DNA_screen_types.h"
+#include "DNA_scene_types.h"
+#include "DNA_space_types.h"
+#include "DNA_constraint_types.h"
+#include "DNA_key_types.h"
+#include "DNA_lamp_types.h"
+#include "DNA_material_types.h"
+#include "DNA_userdef_types.h"
+#include "DNA_gpencil_types.h"
+#include "DNA_windowmanager_types.h"
+
+#include "RNA_access.h"
+#include "RNA_define.h"
+
+#include "BKE_action.h"
+#include "BKE_depsgraph.h"
+#include "BKE_fcurve.h"
+#include "BKE_key.h"
+#include "BKE_material.h"
+#include "BKE_object.h"
+#include "BKE_context.h"
+#include "BKE_utildefines.h"
+
+#include "UI_view2d.h"
+
+#include "ED_anim_api.h"
+#include "ED_keyframing.h"
+#include "ED_keyframes_draw.h"
+#include "ED_keyframes_edit.h"
+#include "ED_screen.h"
+#include "ED_space_api.h"
+
+#include "WM_api.h"
+#include "WM_types.h"
+
+#include "ipo_intern.h"
+
+#if 0 // XXX code to be sanitied for new system
+
+/* ************************************************************************** 
*/
+/* KEYFRAME-RANGE STUFF */
+
+/* *************************** Calculate Range ************************** */
+
+/* Get the min/max keyframes*/
+static void get_keyframe_extents (bAnimContext *ac, float *xmin, float *xmax, 
float *ymin, float *ymax)
+{
+       ListBase anim_data = {NULL, NULL};
+       bAnimListElem *ale;
+       int filter;
+       
+       /* get data to filter, from Dopesheet */
+       filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_SEL 
| ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY);
+       ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype);
+       
+       /* set large values to try to override */
+       if (xmin) *xmin= 999999999.0f;
+       if (xmax) *xmax= -999999999.0f;
+       //if (ymin) *ymin= 999999999.0f;
+       //if (ymax) *ymax= -999999999.0f;
+       
+               // XXX
+       if (ymin) *ymin= -10;
+       if (ymax) *ymax= 10;
+       
+       /* check if any channels to set range with */
+       if (anim_data.first) {
+               /* go through channels, finding max extents */
+               for (ale= anim_data.first; ale; ale= ale->next) {
+                       Object *nob= ANIM_nla_mapping_get(ac, ale);
+                       FCurve *fcu= (FCurve *)ale->key_data;
+                       float tmin, tmax;
+                       
+                       /* get range and apply necessary scaling before */
+                       calc_fcurve_range(fcu, &tmin, &tmax);
+                       tmin= tmax= 0.0f; // xxx
+                       
+                       if (nob) {

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to