[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