[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [17814] branches/blender2.5/blender/source /blender: 2.5 - Assorted View2D related fixes

Joshua Leung aligorith at gmail.com
Sat Dec 13 00:25:57 CET 2008


Revision: 17814
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17814
Author:   aligorith
Date:     2008-12-13 00:25:54 +0100 (Sat, 13 Dec 2008)

Log Message:
-----------
2.5 - Assorted View2D related fixes

IPO Editor Fixes:
* Grid now draws correct. Fixed typo in gridline calculations preventing drawing from occurring. Also, set the right arguments to the appropriate View2D calls.
* Limited Ton's cur<->mask mapping 'hack' to Outliner only, as it was causing problems with the drawing of the grid. Perhaps there's still some faulty code in curRect_validate that should be changed instead...
* Horizontal scroller draws frames now by default. However, the values are still offset a bit, so will need further investigation.

Outliner Fixes:
* Fixed overlapping text problem with RNA-path and menus. Now RNA path draws as a label beside the menus, so there shouldn't be any more problems there.
* do_versions code now sets all appropriate flags, as old OOPS views could cause errors with scroller drawing + view manipulation operators which depend on flags being set.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
    branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h
    branches/blender2.5/blender/source/blender/editors/interface/view2d.c
    branches/blender2.5/blender/source/blender/editors/space_ipo/space_ipo.c
    branches/blender2.5/blender/source/blender/editors/space_outliner/outliner_header.c
    branches/blender2.5/blender/source/blender/editors/space_outliner/space_outliner.c
    branches/blender2.5/blender/source/blender/makesdna/DNA_space_types.h

Modified: branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c	2008-12-12 20:59:59 UTC (rev 17813)
+++ branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c	2008-12-12 23:25:54 UTC (rev 17814)
@@ -5099,9 +5099,11 @@
 				memcpy(&ar->v2d, &soops->v2d, sizeof(View2D));
 				
 				ar->v2d.scroll &= ~V2D_SCROLL_LEFT;
-				ar->v2d.scroll |= V2D_SCROLL_RIGHT;
+				ar->v2d.scroll |= (V2D_SCROLL_RIGHT|V2D_SCROLL_HORIZONTAL_O);
 				ar->v2d.align = (V2D_ALIGN_NO_NEG_X|V2D_ALIGN_NO_POS_Y);
 				ar->v2d.keepzoom |= (V2D_LOCKZOOM_X|V2D_LOCKZOOM_Y);
+				ar->v2d.keeptot = 2;
+				ar->v2d.keepaspect= 1;
 			}
 				break;
 			case SPACE_TIME:

Modified: branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h	2008-12-12 20:59:59 UTC (rev 17813)
+++ branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h	2008-12-12 23:25:54 UTC (rev 17814)
@@ -58,12 +58,16 @@
 
 
 /* flags for grid-lines to draw */
-#define V2D_HORIZONTAL_LINES	(1<<0)
-#define V2D_VERTICAL_LINES		(1<<1)
-#define V2D_HORIZONTAL_AXIS		(1<<2)
-#define V2D_VERTICAL_AXIS		(1<<3)
+#define V2D_HORIZONTAL_LINES		(1<<0)
+#define V2D_VERTICAL_LINES			(1<<1)
+#define V2D_HORIZONTAL_AXIS			(1<<2)
+#define V2D_VERTICAL_AXIS			(1<<3)
+#define V2D_HORIZONTAL_FINELINES	(1<<4)
 
+#define V2D_GRIDLINES_MAJOR			(V2D_VERTICAL_LINES|V2D_VERTICAL_AXIS|V2D_HORIZONTAL_LINES|V2D_HORIZONTAL_AXIS)
+#define V2D_GRIDLINES_ALL			(V2D_GRIDLINES_MAJOR|V2D_HORIZONTAL_FINELINES)
 
+
 /* ------------------------------------------ */
 /* Macros:								*/
 

Modified: branches/blender2.5/blender/source/blender/editors/interface/view2d.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/view2d.c	2008-12-12 20:59:59 UTC (rev 17813)
+++ branches/blender2.5/blender/source/blender/editors/interface/view2d.c	2008-12-12 23:25:54 UTC (rev 17814)
@@ -443,6 +443,8 @@
 	}
 }
 
+/* ------------------ */
+
 /* Change the size of the maximum viewable area (i.e. 'tot' rect) */
 void UI_view2d_totRect_set (View2D *v2d, int width, int height)
 {
@@ -495,12 +497,15 @@
 /* *********************************************************************** */
 /* View Matrix Setup */
 
-/* mapping function to ensure 'cur' draws extended over the area were sliders are */
+/* mapping function to ensure 'cur' draws extended over the area where sliders are */
 static void view2d_map_cur_using_mask(View2D *v2d, rctf *curmasked)
 {
 	*curmasked= v2d->cur;
 	
-	if (v2d->scroll) {
+	/* currently, the following 'hack' is only necessary for Outliner, and will cause
+	 * errors in all other views...
+	 */
+	if ((v2d->scroll) && (v2d->keeptot==2)) {
 		float dx= ((float)(v2d->mask.xmax-v2d->mask.xmin+1))/(v2d->cur.xmax-v2d->cur.xmin);
 		float dy= ((float)(v2d->mask.ymax-v2d->mask.ymin+1))/(v2d->cur.ymax-v2d->cur.ymin);
 		
@@ -675,7 +680,7 @@
 	}
 	
 	/* calculate y-axis grid scale */
-	space= (v2d->cur.ymax - v2d->cur.ymin);
+	space= v2d->cur.ymax - v2d->cur.ymin;
 	pixels= winy;
 	
 	grid->dy= MINGRIDSTEP * space / pixels;
@@ -739,15 +744,17 @@
 	
 	/* horizontal lines */
 	if (flag & V2D_HORIZONTAL_LINES) {
+		puts("draw horizontal lines");
 		/* only major gridlines */
+		vec1[1]= vec2[1]= grid->starty;
 		vec1[0]= grid->startx;
-		vec1[1]= vec2[1]= grid->starty;
 		vec2[0]= v2d->cur.xmax;
 		
-		step= (v2d->mask.ymax - v2d->mask.ymax + 1) / MINGRIDSTEP;
+		step= (v2d->mask.ymax - v2d->mask.ymin + 1) / MINGRIDSTEP;
 		
 		UI_ThemeColor(TH_GRID);
 		for (a=0; a<=step; a++) {
+			printf("\t a = %d \n", a);
 			glBegin(GL_LINE_STRIP);
 				glVertex2fv(vec1); 
 				glVertex2fv(vec2);
@@ -757,12 +764,10 @@
 		}
 		
 		/* fine grid lines */
-		// er... only in IPO-Editor it seems (how to expose this in nice way)?
 		vec2[1]= vec1[1]-= 0.5f*grid->dy;
 		step++;
 		
-#if 0
-		if (curarea->spacetype==SPACE_IPO) { 
+		if (flag & V2D_HORIZONTAL_FINELINES) { 
 			UI_ThemeColorShade(TH_GRID, 16);
 			for (a=0; a<step; a++) {
 				glBegin(GL_LINE_STRIP);
@@ -773,7 +778,6 @@
 				vec2[1]= vec1[1]-= grid->dy;
 			}
 		}
-#endif
 	}
 	
 	/* Axes are drawn as darker lines */
@@ -890,9 +894,9 @@
 		if ( !((xclamp == V2D_ARG_DUMMY) && (xunits == V2D_ARG_DUMMY) && (yclamp == V2D_ARG_DUMMY) && (yunits == V2D_ARG_DUMMY)) ) { 
 			/* if both axes show scale, give priority to horizontal.. */
 			// FIXME: this doesn't do justice to the vertical scroller calculations...
-			if (v2d->scroll & V2D_SCROLL_SCALE_HORIZONTAL)
+			if ((v2d->scroll & V2D_SCROLL_SCALE_HORIZONTAL) && ELEM(V2D_ARG_DUMMY, xclamp, xunits)==0)
 				scrollers->grid= UI_view2d_grid_calc(C, v2d, xunits, xclamp, (hor.xmax - hor.xmin), (vert.ymax - vert.ymin));
-			else if (v2d->scroll & V2D_SCROLL_SCALE_VERTICAL)
+			else if (v2d->scroll & V2D_SCROLL_SCALE_VERTICAL && ELEM(V2D_ARG_DUMMY, yclamp, yunits)==0)
 				scrollers->grid= UI_view2d_grid_calc(C, v2d, yunits, yclamp, (hor.xmax - hor.xmin), (vert.ymax - vert.ymin));
 		}
 	}

Modified: branches/blender2.5/blender/source/blender/editors/space_ipo/space_ipo.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_ipo/space_ipo.c	2008-12-12 20:59:59 UTC (rev 17813)
+++ branches/blender2.5/blender/source/blender/editors/space_ipo/space_ipo.c	2008-12-12 23:25:54 UTC (rev 17814)
@@ -146,6 +146,51 @@
 	return (SpaceLink *)sipon;
 }
 
+
+// XXX this should be defined in some general lib for anim editors...
+static void draw_cfra(const bContext *C, SpaceIpo *sipo, View2D *v2d)
+{
+	Scene *scene= C->scene;
+	Object *ob;
+	float vec[2];
+	
+	//vec[0] = get_ipo_cfra_from_cfra(sipo, scene->r.cfra);
+	vec[0] = scene->r.cfra;
+	vec[0]*= scene->r.framelen;
+	
+	vec[1]= v2d->cur.ymin;
+	UI_ThemeColor(TH_CFRAME);
+	glLineWidth(2.0);
+	
+	glBegin(GL_LINE_STRIP);
+	glVertex2fv(vec);
+	vec[1]= v2d->cur.ymax;
+	glVertex2fv(vec);
+	glEnd();
+	
+#if 0
+	if(sipo->blocktype==ID_OB) {
+		ob= (G.scene->basact) ? (G.scene->basact->object) : 0;
+		if (ob && (ob->ipoflag & OB_OFFS_OB) && (give_timeoffset(ob)!=0.0)) { 
+			vec[0]-= give_timeoffset(ob);
+			
+			UI_ThemeColorShade(TH_HILITE, -30);
+			
+			glBegin(GL_LINE_STRIP);
+			glVertex2fv(vec);
+			vec[1]= G.v2d->cur.ymin;
+			glVertex2fv(vec);
+			glEnd();
+		}
+	}
+#endif
+	
+	glLineWidth(1.0);
+	
+	/* Draw current frame number in a little box */
+	//draw_cfra_number(vec[0]);
+}
+
 /* add handlers, stuff you only do once or on area/region changes */
 static void ipo_main_area_init(wmWindowManager *wm, ARegion *ar)
 {
@@ -176,11 +221,16 @@
 	UI_view2d_view_ortho(C, v2d);
 	
 	/* grid */
-	unit= (sipo->flag & TIME_DRAWFRAMES)? V2D_UNIT_FRAMES: V2D_UNIT_SECONDS;
-	grid= UI_view2d_grid_calc(C, v2d, unit, V2D_GRID_CLAMP, ar->winx, ar->winy);
-	UI_view2d_grid_draw(C, v2d, grid, (V2D_VERTICAL_LINES|V2D_VERTICAL_AXIS));
+	unit= (sipo->flag & SIPO_DRAWTIME)? V2D_UNIT_SECONDS : V2D_UNIT_FRAMES;
+	grid= UI_view2d_grid_calc(C, v2d, unit, V2D_GRID_NOCLAMP, ar->winx, ar->winy);
+	UI_view2d_grid_draw(C, v2d, grid, V2D_GRIDLINES_ALL);
 	UI_view2d_grid_free(grid);
-		
+	
+	/* data... */
+	
+	/* current frame */
+	draw_cfra(C, sipo, v2d);
+	
 	/* markers */
 	UI_view2d_view_orthoSpecial(C, v2d, 1);
 	draw_markers_time(C, 0);
@@ -189,7 +239,8 @@
 	UI_view2d_view_restore(C);
 	
 	/* scrollers */
-	scrollers= UI_view2d_scrollers_calc(C, v2d, unit, V2D_GRID_CLAMP, V2D_ARG_DUMMY, V2D_ARG_DUMMY);
+		// FIXME: args for scrollers depend on the type of data being shown...
+	scrollers= UI_view2d_scrollers_calc(C, v2d, unit, V2D_GRID_NOCLAMP, V2D_UNIT_VALUES/*unit-y*/, V2D_GRID_NOCLAMP);
 	UI_view2d_scrollers_draw(C, v2d, scrollers);
 	UI_view2d_scrollers_free(scrollers);
 }
@@ -256,6 +307,7 @@
 	art->init= ipo_main_area_init;
 	art->draw= ipo_main_area_draw;
 	art->listener= ipo_main_area_listener;
+	art->keymapflag= ED_KEYMAP_VIEW2D;
 
 	BLI_addhead(&st->regiontypes, art);
 	

Modified: branches/blender2.5/blender/source/blender/editors/space_outliner/outliner_header.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_outliner/outliner_header.c	2008-12-12 20:59:59 UTC (rev 17813)
+++ branches/blender2.5/blender/source/blender/editors/space_outliner/outliner_header.c	2008-12-12 23:25:54 UTC (rev 17814)
@@ -106,8 +106,10 @@
 void outliner_header_buttons(const bContext *C, ARegion *ar)
 {
 	ScrArea *sa= C->area;
+	SpaceOops *soutliner= sa->spacedata.first;
 	uiBlock *block;
 	int xco, yco= 3;
+	char *path;
 	
 	block= uiBeginBlock(C, ar, "header buttons", UI_EMBOSS, UI_HELV);
 	uiBlockSetHandleFunc(block, do_outliner_buttons, NULL);
@@ -151,11 +153,20 @@
 		
 		xmax= GetButStringLength("View");
 		uiDefPulldownBut(block, dummy_viewmenu, C->area, 
-						 "View", xco, yco-2, xmax-3, 24, "");
+						 "View", xco, yco-2, xmax-3, 24, ""); 
+		xco += xmax;
+		
+		/* header text */
+		xco += XIC*2;
+		
+		path= (soutliner->rnapath)? soutliner->rnapath: "Main";
+		xmax= GetButStringLength(path);
+		uiDefBut(block, LABEL, 0, path, xco, yco-2, xmax-3, 24, 0, 0, 0, 0, 0, "Current RNA Path");
+		xco += xmax;
+		
+		uiBlockSetEmboss(block, UI_EMBOSS);
 	}
 	
-	uiBlockSetEmboss(block, UI_EMBOSS);
-
 	/* always as last  */
 	sa->headbutlen= xco+XIC+80; // +80 because the last button is not an icon
 	

Modified: branches/blender2.5/blender/source/blender/editors/space_outliner/space_outliner.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_outliner/space_outliner.c	2008-12-12 20:59:59 UTC (rev 17813)
+++ branches/blender2.5/blender/source/blender/editors/space_outliner/space_outliner.c	2008-12-12 23:25:54 UTC (rev 17814)
@@ -444,14 +444,8 @@
 
 static void outliner_header_area_draw(const bContext *C, ARegion *ar)
 {
-	SpaceOops *soutliner= C->area->spacedata.first;
 	float col[3];
-	int width, height;
-	rctf bbox;
-	char *path;
-
-	path= (soutliner->rnapath)? soutliner->rnapath: "Main";
-
+	
 	if(ED_screen_area_active(C))
 		UI_GetThemeColor3fv(TH_HEADER, col);
 	else
@@ -461,17 +455,6 @@
 	glClear(GL_COLOR_BUFFER_BIT);
 
 	outliner_header_buttons(C, ar);
-	
-	width= ar->winrct.xmax - ar->winrct.xmin;

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list