Revision: 17711
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17711
Author:   aligorith
Date:     2008-12-04 06:37:55 +0100 (Thu, 04 Dec 2008)

Log Message:
-----------
View2D: Scrollbar tweaks

* Added back vertical scale markings for vertical scrollbars. Currently 
untested (until IPO Editor can be put back in). Also, there was a special 
exception for the Sequencer, which will need to be checked when the time comes 
too.

* Fixed the display of frame numbers in scrollbars. Was caused by error in 
using an int, where a float was required (this is one place MSVC gives better 
warnings than GCC). 

* Outliner horizontal scrollbar now displays a more useful range. The previous 
range was based on screen width, not width of content. 

* Outliner horizontal scrollbar now draws with bevel-highlight line again. Was 
missed out in a previous commit.

* Added simple toggle Frames/Seconds operator to TimeLine to test if the View2D 
code is working right for this. This uses the same hotkey (TKEY) as it's 
counterpart (with a menu for input) did in previous incarnations of Blender. 

Modified Paths:
--------------
    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_outliner/space_outliner.c
    branches/blender2.5/blender/source/blender/editors/space_time/space_time.c
    branches/blender2.5/blender/source/blender/editors/space_time/time_ops.c

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-04 02:01:42 UTC (rev 17710)
+++ branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h      
2008-12-04 05:37:55 UTC (rev 17711)
@@ -97,7 +97,7 @@
 
 /* scrollbar drawing */
 View2DScrollers *UI_view2d_calc_scrollers(const struct bContext *C, struct 
View2D *v2d, short xunits, short xclamp, short yunits, short yclamp);
-void UI_view2d_draw_scrollers(const struct bContext *C, struct View2D *v2d, 
View2DScrollers *scrollers, int flag);
+void UI_view2d_draw_scrollers(const struct bContext *C, struct View2D *v2d, 
View2DScrollers *scrollers);
 void UI_view2d_free_scrollers(View2DScrollers *scrollers);
 
 /* coordinate conversion */

Modified: branches/blender2.5/blender/source/blender/editors/interface/view2d.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/view2d.c       
2008-12-04 02:01:42 UTC (rev 17710)
+++ branches/blender2.5/blender/source/blender/editors/interface/view2d.c       
2008-12-04 05:37:55 UTC (rev 17711)
@@ -734,7 +734,7 @@
 
 
 /* Draw scrollbars in the given 2d-region */
-void UI_view2d_draw_scrollers(const bContext *C, View2D *v2d, View2DScrollers 
*scrollers, int flag)
+void UI_view2d_draw_scrollers(const bContext *C, View2D *v2d, View2DScrollers 
*scrollers)
 {
        const int darker= -40, dark= 0, light= 20, lighter= 50;
        rcti vert, hor;
@@ -766,8 +766,7 @@
                // XXX will need to update the font drawing when the new stuff 
comes in
                if (v2d->scroll & HOR_SCROLLGRID) {
                        View2DGrid *grid= scrollers->grid;
-                       float fac, dfac, fac2;
-                       int val;
+                       float fac, dfac, fac2, val;
                        
                        /* the numbers: convert grid->startx and -dx to scroll 
coordinates 
                         *      - fac is x-coordinate to draw to
@@ -777,8 +776,9 @@
                        fac= hor.xmin + fac*(hor.xmax - hor.xmin);
                        
                        dfac= (grid->dx) / (v2d->cur.xmax - v2d->cur.xmin);
-                       dfac= dfac*(hor.xmax-hor.xmin);
+                       dfac= dfac * (hor.xmax - hor.xmin);
                        
+                       /* set starting value, and text color */
                        UI_ThemeColor(TH_TEXT);
                        val= grid->startx;
                        
@@ -828,7 +828,7 @@
                
                /* decoration outer bevel line */
                UI_ThemeColorShade(TH_SHADE1, lighter);
-               if (v2d->scroll & B_SCROLL)
+               if (v2d->scroll & (B_SCROLL|B_SCROLLO))
                        sdrawline(hor.xmin, hor.ymax, hor.xmax, hor.ymax);
                else if (v2d->scroll & T_SCROLL)
                        sdrawline(hor.xmin, hor.ymin, hor.xmax, hor.ymin);
@@ -857,14 +857,41 @@
                /* scale indiators */
                // XXX will need to update the font drawing when the new stuff 
comes in
                if (v2d->scroll & VERT_SCROLLGRID) {
+                       View2DGrid *grid= scrollers->grid;
+                       float fac, dfac, val;
                        
+                       /* the numbers: convert grid->starty and dy to scroll 
coordinates 
+                        *      - fac is y-coordinate to draw to
+                        *      - dfac is gap between scale markings
+                        *      - these involve a correction for horizontal 
scrollbar
+                        *        NOTE: it's assumed that that scrollbar is 
there if this is involved!
+                        */
+                       fac= (grid->starty- v2d->cur.ymin) / (v2d->cur.ymax - 
v2d->cur.ymin);
+                       fac= (vert.ymin + SCROLLH) + fac*(vert.ymax - vert.ymin 
- SCROLLH);
+                       
+                       dfac= (grid->dy) / (v2d->cur.ymax - v2d->cur.ymin);
+                       dfac= dfac * (vert.ymax - vert.ymin - SCROLLH);
+                       
+                       /* set starting value, and text color */
+                       UI_ThemeColor(TH_TEXT);
+                       val= grid->starty;
+                       
+                       /* if vertical clamping (to whole numbers) is used 
(i.e. in Sequencer), apply correction */
+                       // XXX only relevant to Sequencer, so need to review 
this when we port that code
+                       if (scrollers->yclamp == V2D_GRID_CLAMP)
+                               fac += 0.5f * dfac;
+                               
+                       /* draw vertical steps */
+                       for (; fac < vert.ymax; fac+= dfac, val += grid->dy) {
+                               scroll_printstr(scrollers, 
(float)(vert.xmax)-14.0, fac, val, grid->powery, scrollers->yunits, 'v');
+                       }                       
                }       
                
                /* decoration outer bevel line */
                UI_ThemeColorShade(TH_SHADE1, lighter);
                if (v2d->scroll & R_SCROLL)
                        sdrawline(vert.xmin, vert.ymin, vert.xmin, vert.ymax);
-               else 
+               else if (v2d->scroll & L_SCROLL)
                        sdrawline(vert.xmax, vert.ymin, vert.xmax, vert.ymax);
        }
 }

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-04 02:01:42 UTC (rev 17710)
+++ 
branches/blender2.5/blender/source/blender/editors/space_outliner/space_outliner.c
  2008-12-04 05:37:55 UTC (rev 17711)
@@ -348,8 +348,8 @@
        glClear(GL_COLOR_BUFFER_BIT);
 
        // XXX width should be depend on max length of items (like height)...
-       awidth= width= ar->winrct.xmax - ar->winrct.xmin;
-       aheight= height= ar->winrct.ymax - ar->winrct.ymin;
+       awidth= width= ar->winrct.xmax - ar->winrct.xmin + 1;
+       aheight= height= ar->winrct.ymax - ar->winrct.ymin + 1;
        
        UI_view2d_update_size(v2d, awidth, aheight);
        
@@ -394,6 +394,7 @@
 
        if ((rows*ROW_HEIGHT) > height)
                height= rows * ROW_HEIGHT;
+       width= (cols + 1) * COLUMN_WIDTH;
        
        /* need to validate view2d after updating size of tot */
        v2d->tot.xmin= 0;
@@ -423,8 +424,8 @@
        UI_view2d_view_restore(C);
        
        /* scrollers */
-       scrollers= UI_view2d_calc_scrollers(C, v2d, 0, 0, 0, 0); // XXX last 
two vars here are useless
-       UI_view2d_draw_scrollers(C, v2d, scrollers, (0));
+       scrollers= UI_view2d_calc_scrollers(C, v2d, 0, 0, 0, 0);
+       UI_view2d_draw_scrollers(C, v2d, scrollers);
        UI_view2d_free_scrollers(scrollers);
 }
 

Modified: 
branches/blender2.5/blender/source/blender/editors/space_time/space_time.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_time/space_time.c  
2008-12-04 02:01:42 UTC (rev 17710)
+++ branches/blender2.5/blender/source/blender/editors/space_time/space_time.c  
2008-12-04 05:37:55 UTC (rev 17711)
@@ -119,10 +119,11 @@
        View2DScrollers *scrollers;
        float col[3];
        int unit, winx, winy;
-
-       winx= ar->winrct.xmax-ar->winrct.xmin;
-       winy= ar->winrct.ymax-ar->winrct.ymin;
        
+       // XXX this should become stored in regions too...
+       winx= ar->winrct.xmax - ar->winrct.xmin + 1;
+       winy= ar->winrct.ymax - ar->winrct.ymin + 1;
+       
        UI_view2d_update_size(v2d, winx, winy);
 
        /* clear and setup matrix */
@@ -153,7 +154,7 @@
        
        /* scrollers */
        scrollers= UI_view2d_calc_scrollers(C, v2d, unit, V2D_GRID_CLAMP, 0, 0);
-       UI_view2d_draw_scrollers(C, v2d, scrollers, (0));
+       UI_view2d_draw_scrollers(C, v2d, scrollers);
        UI_view2d_free_scrollers(scrollers);
 }
 

Modified: 
branches/blender2.5/blender/source/blender/editors/space_time/time_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_time/time_ops.c    
2008-12-04 02:01:42 UTC (rev 17710)
+++ branches/blender2.5/blender/source/blender/editors/space_time/time_ops.c    
2008-12-04 05:37:55 UTC (rev 17711)
@@ -39,6 +39,7 @@
 #include "BLI_blenlib.h"
 
 #include "BKE_global.h"
+#include "BKE_utildefines.h"
 
 #include "UI_interface.h"
 #include "UI_view2d.h"
@@ -175,16 +176,46 @@
        prop= RNA_def_property(ot->srna, "frame", PROP_INT, PROP_NONE);
 }
 
+/* ****************** time display toggle operator 
****************************/
+
+static int toggle_time_exec(bContext *C, wmOperator *op)
+{
+       SpaceTime *stime;
+       
+       if (ELEM(NULL, C->area, C->area->spacedata.first))
+               return OPERATOR_CANCELLED;
+       
+       /* simply toggle draw frames flag for now */
+       // XXX in past, this displayed menu to choose... (for later!)
+       stime= C->area->spacedata.first;
+       stime->flag ^= TIME_DRAWFRAMES;
+       
+       return OPERATOR_FINISHED;
+}
+
+void ED_TIME_OT_toggle_time(wmOperatorType *ot)
+{
+       /* identifiers */
+       ot->name= "Toggle Frames/Seconds";
+       ot->idname= "ED_TIME_OT_toggle_time";
+       
+       /* api callbacks */
+       ot->exec= toggle_time_exec;
+}
+
 /* ************************** registration **********************************/
 
 void time_operatortypes(void)
 {
        WM_operatortype_append(ED_TIME_OT_change_frame);
+       WM_operatortype_append(ED_TIME_OT_toggle_time);
 }
 
 void time_keymap(wmWindowManager *wm)
 {
        WM_keymap_verify_item(&wm->timekeymap, "ED_TIME_OT_change_frame", 
LEFTMOUSE, KM_PRESS, 0, 0);
+       WM_keymap_verify_item(&wm->timekeymap, "ED_TIME_OT_toggle_time", TKEY, 
KM_PRESS, 0, 0);
+       
 
        /* markers (XXX move to function?) */
        WM_keymap_verify_item(&wm->timekeymap, "ED_MARKER_OT_add", MKEY, 
KM_PRESS, 0, 0);


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

Reply via email to