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. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to