[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [10765] trunk/blender/source/blender/src: == Action Editor ==

Joshua Leung aligorith at gmail.com
Wed May 23 11:21:33 CEST 2007


Revision: 10765
          https://svn.blender.org//revision/?rev=10765&view=rev
Author:   aligorith
Date:     2007-05-23 11:21:32 +0200 (Wed, 23 May 2007)

Log Message:
-----------
== Action Editor ==

Now Action/IPO-Curve/Constraint Channels draw so that they open downwards. The only noticeable differences are that when expanding/collapsing channels, all the channels above won't get shunted out of the way again. Also, on loading some older files, all the channels may be out of view (TODO: make version patch for this...)

Modified Paths:
--------------
    trunk/blender/source/blender/src/drawaction.c
    trunk/blender/source/blender/src/editaction.c
    trunk/blender/source/blender/src/header_action.c

Modified: trunk/blender/source/blender/src/drawaction.c
===================================================================
--- trunk/blender/source/blender/src/drawaction.c	2007-05-23 04:42:18 UTC (rev 10764)
+++ trunk/blender/source/blender/src/drawaction.c	2007-05-23 09:21:32 UTC (rev 10765)
@@ -280,7 +280,7 @@
                        UI_EMBOSS, UI_HELV, curarea->win);
 
 	x = NAMEWIDTH + 1;
-    y = count_action_levels(act)*(CHANNELHEIGHT+CHANNELSKIP);
+    y = 0.0;
 	
 	uiBlockSetEmboss(block, UI_EMBOSSN);
 
@@ -379,7 +379,7 @@
     float	x, y;
 
     x = 0.0;
-	y= count_action_levels(act)*(CHANNELHEIGHT+CHANNELSKIP);
+	y = 0.0f;
 
 	for (achan=act->chanbase.first; achan; achan= achan->next) {
 		if(VISIBLE_ACHAN(achan)) {
@@ -706,7 +706,7 @@
 		map_active_strip(di, OBACT, 1);
 	
 	/* first backdrop strips */
-	y= count_action_levels(act)*(CHANNELHEIGHT+CHANNELSKIP);
+	y = 0.0;
 	glEnable(GL_BLEND);
 	for (achan=act->chanbase.first; achan; achan= achan->next) {
 		if(VISIBLE_ACHAN(achan)) {
@@ -776,8 +776,8 @@
 	if (G.saction->pin==0 && OBACT)
 		map_active_strip(di, OBACT, 0);
 	
-	/* dot thingies */
-	y= count_action_levels(act)*(CHANNELHEIGHT+CHANNELSKIP);
+	/* keyframes  */
+	y = 0.0;
 	for (achan= act->chanbase.first; achan; achan= achan->next) {
 		if(VISIBLE_ACHAN(achan)) {
 			
@@ -828,8 +828,7 @@
 
 static void draw_mesh_strips(SpaceAction *saction, Key *key)
 {
-	/* draw the RVK keyframes as those little square button things
-	 */
+	/* draw the RVK keyframes */
 	rcti scr_rct;
 	gla2DDrawInfo *di;
 	float	y, ybase;

Modified: trunk/blender/source/blender/src/editaction.c
===================================================================
--- trunk/blender/source/blender/src/editaction.c	2007-05-23 04:42:18 UTC (rev 10764)
+++ trunk/blender/source/blender/src/editaction.c	2007-05-23 09:21:32 UTC (rev 10765)
@@ -305,7 +305,6 @@
 	float xmin, xmax, x, y;
 	float xrange[2];
 	int clickmin, clickmax;
-	int	wsize;
 	short mval[2];
 		
 	getmouseco_areawin (mval);
@@ -317,16 +316,9 @@
 		*ret_type= ACTTYPE_NONE;
 		return NULL;
 	}
-	
-	/* wsize is the greatest possible height (in pixels) that would be
-	 * needed to draw all of the action channels, ipo-curve channels and constraint
-	 * channels.
-	 */
-	wsize =  count_action_levels(act)*(CHANNELHEIGHT+CHANNELSKIP);
-	wsize += CHANNELHEIGHT/2;
 
     areamouseco_to_ipoco(G.v2d, mval, &x, &y);
-    clickmin = (int) ((wsize - y) / (CHANNELHEIGHT+CHANNELSKIP));
+    clickmin = (int) (((CHANNELHEIGHT/2) - y) / (CHANNELHEIGHT+CHANNELSKIP));
 	clickmax = clickmin;
 	
 	mval[0]-=7;
@@ -908,8 +900,7 @@
 			rectf.xmax= get_action_frame(OBACT, rectf.xmax);
 		}
 		
-		ymax = count_action_levels(act) * (CHANNELHEIGHT+CHANNELSKIP);
-		ymax += CHANNELHEIGHT/2;
+		ymax = CHANNELHEIGHT/2;
 		
 		for (achan=act->chanbase.first; achan; achan= achan->next) {
 			if(VISIBLE_ACHAN(achan)) {
@@ -1865,7 +1856,6 @@
 	IpoCurve *icu;
 	float click, x,y;
 	int   clickmin, clickmax;
-	int	  wsize;
 
 	if (!act)
 		return;
@@ -1875,15 +1865,8 @@
 		selectmode = SELECT_ADD;
 	}
 
-	/* wsize is the greatest possible height (in pixels) that would be
-	 * needed to draw all of the action channels and constraint
-	 * channels.
-	 */
-	wsize =  count_action_levels(act)*(CHANNELHEIGHT+CHANNELSKIP);
-	wsize += CHANNELHEIGHT/2;
-
     areamouseco_to_ipoco(G.v2d, mval, &x, &y);
-    clickmin = (int) ((wsize - y) / (CHANNELHEIGHT+CHANNELSKIP));
+    clickmin = (int) (((CHANNELHEIGHT/2) - y) / (CHANNELHEIGHT+CHANNELSKIP));
 	
 	/* Only one click */
 	if (mvalo == NULL) {
@@ -1892,7 +1875,7 @@
 	/* Two click values (i.e., border select */
 	else {
 		areamouseco_to_ipoco(G.v2d, mvalo, &x, &y);
-		click = ((wsize - y) / (CHANNELHEIGHT+CHANNELSKIP));
+		click = (((CHANNELHEIGHT/2) - y) / (CHANNELHEIGHT+CHANNELSKIP));
 
 		if ( ((int) click) < clickmin) {
 			clickmax = clickmin;
@@ -2781,7 +2764,6 @@
 	bConstraintChannel *conchan;
 	float              click, x,y;
 	int                clickmin, clickmax;
-	int                wsize;
 	
 	/* This function selects all the action keys that
 	 * are in the mouse selection range defined by
@@ -2800,17 +2782,9 @@
 		deselect_actionchannel_keys(act, 0, 0);
 		selectmode = SELECT_ADD;
 	}
-
-	/* wsize is the greatest possible height (in pixels) that would be
-	 * needed to draw all of the action channels and constraint
-	 * channels.
-	 */
-
-	wsize =  count_action_levels(act)*(CHANNELHEIGHT+CHANNELSKIP);
-	wsize += CHANNELHEIGHT/2;
 	
     areamouseco_to_ipoco(G.v2d, mval, &x, &y);
-    clickmin = (int) ((wsize - y) / (CHANNELHEIGHT+CHANNELSKIP));
+    clickmin = (int) (((CHANNELHEIGHT/2) - y) / (CHANNELHEIGHT+CHANNELSKIP));
 	
 	/* Only one click */
 	if (mvalo == NULL) {
@@ -2819,7 +2793,7 @@
 	/* Two click values (i.e., border select) */
 	else {
 		areamouseco_to_ipoco(G.v2d, mvalo, &x, &y);
-		click = ((wsize - y) / (CHANNELHEIGHT+CHANNELSKIP));
+		click = (((CHANNELHEIGHT/2) - y) / (CHANNELHEIGHT+CHANNELSKIP));
 		
 		if ( ((int) click) < clickmin) {
 			clickmax = clickmin;
@@ -3611,22 +3585,14 @@
 	
 	float	x,y;
 	int   clickmin, clickmax;
-	int		wsize;
 	
 	if (act == NULL) {
 		*ret_type= ACTTYPE_NONE;
 		return NULL;
 	}
 	
-	/* wsize is the greatest possible height (in pixels) that would be
-	 * needed to draw all of the groups, action channels and constraint
-	 * channels.
-	 */
-	wsize =  count_action_levels(act)*(CHANNELHEIGHT+CHANNELSKIP);
-	wsize += CHANNELHEIGHT/2;
-
     areamouseco_to_ipoco(G.v2d, mval, &x, &y);
-    clickmin = (int) ((wsize - y) / (CHANNELHEIGHT+CHANNELSKIP));
+	clickmin = (int) (((CHANNELHEIGHT/2) - y) / (CHANNELHEIGHT+CHANNELSKIP));
 	clickmax = clickmin;
 	
 	if (clickmax < 0) {

Modified: trunk/blender/source/blender/src/header_action.c
===================================================================
--- trunk/blender/source/blender/src/header_action.c	2007-05-23 04:42:18 UTC (rev 10764)
+++ trunk/blender/source/blender/src/header_action.c	2007-05-23 09:21:32 UTC (rev 10765)
@@ -69,6 +69,7 @@
 #include "BKE_main.h"
 #include "BKE_utildefines.h"
 
+#include "BDR_drawaction.h"
 #include "BSE_drawipo.h"
 #include "BSE_headerbuttons.h"
 #include "BSE_time.h"
@@ -173,13 +174,16 @@
 					G.v2d->cur.xmax= -5;
 					G.v2d->cur.xmax= 100;
 				}
+				
+				G.v2d->cur.ymin= -(count_action_levels(G.saction->action)*(CHANNELHEIGHT+CHANNELSKIP));
+				G.v2d->cur.ymax= 0;
 			}
 			else { /* shapekeys and/or no action */
 				G.v2d->cur.xmax= -5;
 				G.v2d->cur.xmax= 100;
+				G.v2d->cur.ymax= 1000;
+				G.v2d->cur.ymin= 0;
 			}
-			G.v2d->cur.ymin= 0.0f;
-			G.v2d->cur.ymax= 1000.0f;
 			
 			G.v2d->tot= G.v2d->cur;
 			test_view2d(G.v2d, curarea->winx, curarea->winy);





More information about the Bf-blender-cvs mailing list