View2D - Some more tweaks...
authorJoshua Leung <aligorith@gmail.com>
Tue, 2 Dec 2008 09:43:23 +0000 (09:43 +0000)
committerJoshua Leung <aligorith@gmail.com>
Tue, 2 Dec 2008 09:43:23 +0000 (09:43 +0000)
* Improved scrollbar drawing a bit more - only cosmetic lines
* Added new view2d view-matrix api method to only use 'cur' coordinates on one axis, for use when drawing markers, etc. that need to be glued to a certain time but stay fixed in space in another dimension. This should improve the sitation for drawing markers
* To aid testing, adding markers now sets the marker to have frame number as it's "name". This will need to be removed later...

source/blender/editors/include/UI_view2d.h
source/blender/editors/interface/interface_draw.c
source/blender/editors/interface/view2d.c
source/blender/editors/interface/view2d_ops.c
source/blender/editors/space_time/ed_markers.c
source/blender/editors/space_time/space_time.c
source/blender/makesdna/DNA_view2d_types.h

index 558c6ca435fdcca1c8164fad8d3f79960c8122f8..3e80b77cd293a368fdf70b2f056824a6e4b41278 100644 (file)
@@ -80,6 +80,7 @@ typedef struct View2DScrollers View2DScrollers;
 
 /* setup */
 void UI_view2d_view_ortho(const struct bContext *C, struct View2D *v2d);
+void UI_view2d_view_orthospecial(const struct bContext *C, struct View2D *v2d, short xaxis);
 void UI_view2d_view_restore(const struct bContext *C);
 
 void UI_view2d_update_size(struct View2D *v2d, int winx, int winy);
@@ -101,6 +102,7 @@ void UI_view2d_view_to_region(struct View2D *v2d, float x, float y, short *regio
 void UI_view2d_to_region_no_clip(struct View2D *v2d, float x, float y, short *regionx, short *region_y);
 
 /* utilities */
+struct View2D *UI_view2d_fromcontext(const struct bContext *C);
 void UI_view2d_getscale(struct View2D *v2d, float *x, float *y);
 
 
index 405143cc4af6a051e074b665caafec46e92a4c00..6fe7a166b7ff0ba7a4e4a32a93e35b77a1bdfc3e 100644 (file)
@@ -2069,16 +2069,14 @@ static void ui_draw_text_icon(uiBut *but)
                        /* If there's an icon too (made with uiDefIconTextBut) then draw the icon
                        and offset the text label to accomodate it */
                        
-                       /* XXX 2.50 need interface_icons.c */
-#if 0
-                       if ( (but->flag & UI_HAS_ICON) && (but->flag & UI_ICON_LEFT) ) {
+                       if ( (but->flag & UI_HAS_ICON) && (but->flag & UI_ICON_LEFT) ) 
+                       {
                                ui_draw_icon(but, but->icon, 0);
-
+                               
                                if(but->editstr || (but->flag & UI_TEXT_LEFT)) x= but->x1 + but->aspect*UI_icon_get_width(but->icon)+5.0;
                                else x= (but->x1+but->x2-but->strwidth+1)/2.0;
                        }
                        else
-#endif
                        {
                                if(but->editstr || (but->flag & UI_TEXT_LEFT))
                                        x= but->x1+4.0;
index b8db6bf5bafa4a4dc4c3c9f088f45e1ac49ab03e..0d10f37e4007bceaa0f45d8a9b438dc75a6ac381 100644 (file)
 #include "UI_view2d.h"
 
 /* *********************************************************************** */
-/* Setup and Refresh Code */
-
-/* Set view matrices to ortho for View2D drawing */
-void UI_view2d_view_ortho(const bContext *C, View2D *v2d)
-{
-       ARegion *region= C->region;
-       int winx, winy;
-       float ofsx1, ofsy1, ofsx2, ofsy2;
-       
-       /* calculate extents of region */
-       winx= region->winrct.xmax - region->winrct.xmin;
-       winy= region->winrct.ymax - region->winrct.ymin;
-       ofsx1= ofsy1= ofsx2= ofsy2= 0.0f;
-       
-       /* these checks here make sure that the region is large-enough to show scrollers */
-       if ((winx > SCROLLB+10) && (winy > SCROLLH+10)) {
-               /* calculate offset factor required on each axis */
-               if (v2d->scroll & L_SCROLL)
-                       ofsy1= (float)SCROLLB;
-               if (v2d->scroll & R_SCROLL)
-                       ofsy2= (float)SCROLLB;
-               if (v2d->scroll & T_SCROLL)
-                       ofsx1= (float)SCROLLH;
-               if (v2d->scroll & B_SCROLL)
-                       ofsx2= (float)SCROLLH;
-       }
-       
-       /* note: 0.375 is constant factor to get 1:1 correspondance with pixels */
-       wmOrtho2(C->window, v2d->cur.xmin-ofsx1-0.375f, v2d->cur.xmax-ofsx2-0.375f, v2d->cur.ymin-ofsy1-0.375f, v2d->cur.ymax-ofsx2-0.375f);
-}
-
-/* Restore view matrices after drawing */
-void UI_view2d_view_restore(const bContext *C)
-{
-       ARegion *region= C->region;
-       int winx, winy;
-       
-       /* calculate extents of region */
-       winx= region->winrct.xmax - region->winrct.xmin;
-       winy= region->winrct.ymax - region->winrct.ymin;
-       
-       /* note: 0.375 is constant factor to get 1:1 correspondance with pixels */
-       wmOrtho2(C->window, -0.375f, winx-0.375f, -0.375f, winy-0.375f);
-}
-
-/* ---------------------- */
+/* Refresh and Validation */
 
 /* Adjust mask size in response to view size changes */
 // XXX pre2.5 -> this used to be called  calc_scrollrcts()
@@ -121,7 +76,7 @@ void UI_view2d_update_size(View2D *v2d, int winx, int winy)
                }
                
                /* horizontal scrollbar */
-               if ((v2d->scroll & B_SCROLL) || (v2d->scroll & B_SCROLLO)) {
+               if (v2d->scroll & (B_SCROLL|B_SCROLLO)) {
                        /* on bottom edge of region (B_SCROLLO is outliner, the ohter is for standard) */
                        v2d->hor= v2d->mask;
                        v2d->hor.ymax= SCROLLH;
@@ -367,6 +322,86 @@ void UI_view2d_enforce_status(View2D *v2d, int winx, int winy)
        }
 }
 
+/* *********************************************************************** */
+/* View Matrix Setup */
+
+/* Set view matrices to use 'cur' rect as viewing frame for View2D drawing 
+ *     - Scrollbars are taken into account when making this matrix, given that most regions have them
+ */
+void UI_view2d_view_ortho(const bContext *C, View2D *v2d)
+{
+       float ofsx1, ofsy1, ofsx2, ofsy2;
+       
+       ofsx1= ofsy1= ofsx2= ofsy2= 0.0f;
+       
+       /* calculate offset factor required on each axis */
+       if (v2d->scroll & L_SCROLL)
+               ofsy1= (float)SCROLLB;
+       if (v2d->scroll & R_SCROLL)
+               ofsy2= (float)SCROLLB;
+       if (v2d->scroll & T_SCROLL)
+               ofsx1= (float)SCROLLH;
+       if (v2d->scroll & B_SCROLL)
+               ofsx2= (float)SCROLLH;
+       
+       /* set the matrix - pixel offsets (-0.375) for 1:1 correspondance are not applied, 
+        * as they were causing some unwanted offsets when drawing 
+        */
+       wmOrtho2(C->window, v2d->cur.xmin-ofsx1, v2d->cur.xmax-ofsx2, v2d->cur.ymin-ofsy1, v2d->cur.ymax-ofsx2);
+}
+
+/* Set view matices to only use one axis of 'cur' only
+ *     - Scrollbars on appropriate axis will be taken into account
+ *
+ *     - xaxis         = if non-zero, only use cur x-axis, otherwise use cur-yaxis (mostly this will be used for x)
+ */
+void UI_view2d_view_orthospecial(const bContext *C, View2D *v2d, short xaxis)
+{
+       ARegion *region= C->region;
+       int winx, winy;
+       float ofsx1, ofsy1, ofsx2, ofsy2;
+       
+       /* calculate extents of region */
+       winx= region->winrct.xmax - region->winrct.xmin;
+       winy= region->winrct.ymax - region->winrct.ymin;
+       ofsx1= ofsy1= ofsx2= ofsy2= 0.0f;
+       
+       /* calculate offset factor required on each axis */
+       if (v2d->scroll & L_SCROLL)
+               ofsy1= (float)SCROLLB;
+       if (v2d->scroll & R_SCROLL)
+               ofsy2= (float)SCROLLB;
+       if (v2d->scroll & T_SCROLL)
+               ofsx1= (float)SCROLLH;
+       if (v2d->scroll & B_SCROLL)
+               ofsx2= (float)SCROLLH;
+       
+       /* set the matrix - pixel offsets (-0.375) for 1:1 correspondance are not applied, 
+        * as they were causing some unwanted offsets when drawing 
+        */
+       if (xaxis)
+               wmOrtho2(C->window, v2d->cur.xmin-ofsx1, v2d->cur.xmax-ofsx2, 0, winy);
+       else
+               wmOrtho2(C->window, 0, winx, v2d->cur.ymin-ofsy1, v2d->cur.ymax-ofsx2);
+} 
+
+
+/* Restore view matrices after drawing */
+void UI_view2d_view_restore(const bContext *C)
+{
+       ARegion *region= C->region;
+       int winx, winy;
+       
+       /* calculate extents of region */
+       winx= region->winrct.xmax - region->winrct.xmin;
+       winy= region->winrct.ymax - region->winrct.ymin;
+       
+       /* set default region matrix - pixel offsets (0.375) for 1:1 correspondance are not applied, 
+        * as they were causing some unwanted offsets when drawing 
+        */
+       wmOrtho2(C->window, 0, winx, 0, winy);
+}
+
 /* *********************************************************************** */
 /* Gridlines */
 
@@ -498,7 +533,6 @@ void UI_view2d_draw_grid(const bContext *C, View2D *v2d, View2DGrid *grid, int f
                
                /* minor gridlines */
                step= (v2d->mask.xmax - v2d->mask.xmin + 1) / MINGRIDSTEP;
-               
                UI_ThemeColor(TH_GRID);
                
                for (a=0; a<step; a++) {
@@ -512,7 +546,6 @@ void UI_view2d_draw_grid(const bContext *C, View2D *v2d, View2DGrid *grid, int f
                
                /* major gridlines */
                vec2[0]= vec1[0]-= 0.5f*grid->dx;
-               
                UI_ThemeColorShade(TH_GRID, 16);
                
                step++;
@@ -591,7 +624,7 @@ struct View2DScrollers {
        View2DGrid *grid;               /* grid for coordinate drawing */
        
        int vert_min, vert_max; /* vertical scrollbar - current 'focus' button */
-       int hor_min, hor_max;           /* horizontal scrollbar - current 'focus' button */
+       int hor_min, hor_max;   /* horizontal scrollbar - current 'focus' button */
 };
 
 /* Calculate relevant scroller properties */
@@ -666,19 +699,30 @@ void UI_view2d_draw_scrollers(const bContext *C, View2D *v2d, View2DScrollers *s
                
                /* slider 'button' */
                        // FIXME: implement fancy one... but only when we get this working first!
-               UI_ThemeColorShade(TH_SHADE1, dark);
-               glRecti(scrollers->hor_min,  hor.ymin,  scrollers->hor_max,  hor.ymax);
+               {
+                       UI_ThemeColorShade(TH_SHADE1, dark);
+                       glRecti(scrollers->hor_min,  hor.ymin,  scrollers->hor_max,  hor.ymax);
+                       
+                               /* draw lines on either end of 'box' */
+                       glLineWidth(2.0);
+                               UI_ThemeColorShade(TH_SHADE1, darker);
+                               sdrawline(scrollers->hor_min, hor.ymin, scrollers->hor_min, hor.ymax);
+                               sdrawline(scrollers->hor_max, hor.ymin, scrollers->hor_max, hor.ymax);
+                       glLineWidth(1.0);
+               }
                
-                       /* draw lines on either end of 'box' */
-               glLineWidth(2.0);
-                       UI_ThemeColorShade(TH_SHADE1, darker);
-                       sdrawline(scrollers->hor_min, hor.ymin, scrollers->hor_min, hor.ymax);
-                       sdrawline(scrollers->hor_max, hor.ymin, scrollers->hor_max, hor.ymax);
-               glLineWidth(1.0);
+               /* scale indicators */
+               // XXX will need to update the font drawing when the new stuff comes in
+               if (v2d->scroll & HOR_SCROLLGRID) {
+                       
+               }
                
-               /* decoration bright line */
+               /* decoration outer bevel line */
                UI_ThemeColorShade(TH_SHADE1, lighter);
-               sdrawline(hor.xmin, hor.ymax, hor.xmax, hor.ymax);
+               if (v2d->scroll & B_SCROLL)
+                       sdrawline(hor.xmin, hor.ymax, hor.xmax, hor.ymax);
+               else if (v2d->scroll & T_SCROLL)
+                       sdrawline(hor.xmin, hor.ymin, hor.xmax, hor.ymin);
        }
        
        /* vertical scrollbar */
@@ -689,20 +733,28 @@ void UI_view2d_draw_scrollers(const bContext *C, View2D *v2d, View2DScrollers *s
                
                /* slider 'button' */
                        // FIXME: implement fancy one... but only when we get this working first!
-               UI_ThemeColorShade(TH_SHADE1, dark);
-               glRecti(vert.xmin,  scrollers->vert_min,  vert.xmax,  scrollers->vert_max);
-               
-                       /* draw lines on either end of 'box' */
-               glLineWidth(2.0);
-                       UI_ThemeColorShade(TH_SHADE1, darker);
-                       sdrawline(vert.xmin, scrollers->vert_min, vert.xmax, scrollers->vert_min);
-                       sdrawline(vert.xmin, scrollers->vert_max, vert.xmax, scrollers->vert_max);
-               glLineWidth(1.0);
-               
-               /* decoration black line */
-               UI_ThemeColorShade(TH_SHADE1, darker);
-               if (v2d->scroll & HOR_SCROLL) 
-                       sdrawline(vert.xmax, vert.ymin+SCROLLH, vert.xmax, vert.ymax);
+               {
+                       UI_ThemeColorShade(TH_SHADE1, dark);
+                       glRecti(vert.xmin,  scrollers->vert_min,  vert.xmax,  scrollers->vert_max);
+                       
+                               /* draw lines on either end of 'box' */
+                       glLineWidth(2.0);
+                               UI_ThemeColorShade(TH_SHADE1, darker);
+                               sdrawline(vert.xmin, scrollers->vert_min, vert.xmax, scrollers->vert_min);
+                               sdrawline(vert.xmin, scrollers->vert_max, vert.xmax, scrollers->vert_max);
+                       glLineWidth(1.0);
+               }
+               
+               /* scale indiators */
+               // XXX will need to update the font drawing when the new stuff comes in
+               if (v2d->scroll & VERT_SCROLLGRID) {
+                       
+               }       
+               
+               /* decoration outer bevel line */
+               UI_ThemeColorShade(TH_SHADE1, lighter);
+               if (v2d->scroll & R_SCROLL)
+                       sdrawline(vert.xmin, vert.ymin, vert.xmin, vert.ymax);
                else 
                        sdrawline(vert.xmax, vert.ymin, vert.xmax, vert.ymax);
        }
@@ -800,6 +852,14 @@ void UI_view2d_to_region_no_clip(View2D *v2d, float x, float y, short *regionx,
 /* *********************************************************************** */
 /* Utilities */
 
+/* View2D data by default resides in region, so get from region stored in context */
+View2D *UI_view2d_fromcontext(const bContext *C)
+{
+       if (C->area == NULL) return NULL;
+       if (C->region == NULL) return NULL;
+       return &(C->region->v2d);
+}
+
 /* Calculate the scale per-axis of the drawing-area
  *     - Is used to inverse correct drawing of icons, etc. that need to follow view 
  *       but not be affected by scale
index 185980e045a2c077232bfe7c424bc28c281669d7..2ddbaeeb79bff1c42ce1fa58728064a1aade5ad6 100644 (file)
 #include "UI_resources.h"
 #include "UI_view2d.h"
 
+/* ********************************************************* */
+/* General Polling Funcs */
+
+
+
 /* ********************************************************* */
 /* VIEW PANNING OPERATOR                                                                */
 
@@ -241,7 +246,6 @@ void ED_View2D_OT_view_pan(wmOperatorType *ot)
 
 /* ------------------ Scrollwheel Versions (2) ---------------------- */
 
-// XXX scroll down operator not working yet! (doesn't get called on wheeldownmouse for some reason)
 /* this operator only needs this single callback, where it callsthe view_pan_*() methods */
 static int view_scrollright_exec(bContext *C, wmOperator *op)
 {
@@ -312,7 +316,6 @@ void ED_View2D_OT_view_scrollleft(wmOperatorType *ot)
        prop= RNA_def_property(ot->srna, "deltay", PROP_INT, PROP_NONE);
 }
 
-// XXX scroll down operator not working yet! (doesn't get called on wheeldownmouse for some reason)
 /* this operator only needs this single callback, where it callsthe view_pan_*() methods */
 static int view_scrolldown_exec(bContext *C, wmOperator *op)
 {
@@ -537,6 +540,9 @@ void ED_View2D_OT_view_zoomout(wmOperatorType *ot)
        prop= RNA_def_property(ot->srna, "zoomfacy", PROP_FLOAT, PROP_NONE);
 }
 
+/* ********************************************************* */
+/* Scrollers */
+
  
 /* ********************************************************* */
 /* Registration */
@@ -561,15 +567,15 @@ void UI_view2d_keymap(wmWindowManager *wm)
        /* pan/scroll operators */
        WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_pan", MIDDLEMOUSE, KM_PRESS, 0, 0);
        
-       WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_rightscroll", WHEELDOWNMOUSE, KM_PRESS, KM_CTRL, 0);
-       WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_leftscroll", WHEELUPMOUSE, KM_PRESS, KM_CTRL, 0);
+       WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_rightscroll", WHEELDOWNMOUSE, KM_ANY, KM_CTRL, 0);
+       WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_leftscroll", WHEELUPMOUSE, KM_ANY, KM_CTRL, 0);
        
-       WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_downscroll", WHEELDOWNMOUSE, KM_PRESS, KM_SHIFT, 0);
-       WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_upscroll", WHEELUPMOUSE, KM_PRESS, KM_SHIFT, 0);
+       WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_downscroll", WHEELDOWNMOUSE, KM_ANY, KM_SHIFT, 0);
+       WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_upscroll", WHEELUPMOUSE, KM_ANY, KM_SHIFT, 0);
        
        /* zoom */
-       WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_zoomout", WHEELUPMOUSE, KM_PRESS, 0, 0);
-       WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_zoomin", WHEELDOWNMOUSE, KM_PRESS, 0, 0);
+       WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_zoomout", WHEELUPMOUSE, KM_ANY, 0, 0);
+       WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_zoomin", WHEELDOWNMOUSE, KM_ANY, 0, 0);
        WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_zoomout", PADMINUS, KM_PRESS, 0, 0);
        WM_keymap_add_item(&wm->view2dkeymap, "ED_View2D_OT_view_zoomin", PADPLUSKEY, KM_PRESS, 0, 0);
        
index 590b09b886b92feeaef947199ffbcc40fef64407..83ede8693604ea4138c4e5f8bb7d3df57aa1e646 100644 (file)
@@ -81,14 +81,6 @@ static ListBase *context_get_markers(const bContext *C)
        return &C->scene->markers;
 }
 
-static View2D *context_get_view2d(const bContext *C)
-{
-       /* XXX solve, get from view2d api? */
-       SpaceTime *stime= C->area->spacedata.first;
-       
-       return &stime->v2d;
-}
-
 /* ************* Marker Drawing ************ */
 
 /* XXX */
@@ -106,7 +98,7 @@ static void draw_marker(View2D *v2d, TimeMarker *marker, int cfra, int flag)
        ypixels= v2d->mask.ymax-v2d->mask.ymin;
        UI_view2d_getscale(v2d, &xscale, &yscale);
        
-       glScalef( 1.0/xscale, 1.0/yscale, 1.0);
+       glScalef(1.0/xscale, 1.0, 1.0);
        
        glEnable(GL_BLEND);
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);                      
@@ -137,7 +129,7 @@ static void draw_marker(View2D *v2d, TimeMarker *marker, int cfra, int flag)
                ICON_MARKER;
        }
        
-       UI_icon_draw(xpos*xscale-5.0, 8.0, icon_id);
+       UI_icon_draw(xpos*xscale-5.0, 16.0, icon_id);
        
        glBlendFunc(GL_ONE, GL_ZERO);
        glDisable(GL_BLEND);
@@ -145,26 +137,26 @@ static void draw_marker(View2D *v2d, TimeMarker *marker, int cfra, int flag)
        /* and the marker name too, shifted slightly to the top-right */
        if(marker->name && marker->name[0]) {
                if(marker->flag & SELECT) {
-                       //BIF_ThemeColor(TH_TEXT_HI);
+                       UI_ThemeColor(TH_TEXT_HI);
                        ui_rasterpos_safe(xpos*xscale+4.0, (ypixels<=39.0)?(ypixels-10.0):29.0, 1.0);
                }
                else {
-                       // BIF_ThemeColor(TH_TEXT);
+                       UI_ThemeColor(TH_TEXT);
                        if((marker->frame <= cfra) && (marker->frame+5 > cfra))
                                ui_rasterpos_safe(xpos*xscale+4.0, (ypixels<=39.0)?(ypixels-10.0):29.0, 1.0);
                        else
                                ui_rasterpos_safe(xpos*xscale+4.0, 17.0, 1.0);
                }
-//             BIF_DrawString(G.font, marker->name, 0);
+               UI_DrawString(G.font, marker->name, 0);
        }
-       glScalef(xscale, yscale, 1.0);
+       glScalef(xscale, 1.0, 1.0);
 }
 
 /* Draw Scene-Markers in time window */
 void draw_markers_time(const bContext *C, int flag)
 {
        ListBase *markers= context_get_markers(C);
-       View2D *v2d= context_get_view2d(C);
+       View2D *v2d= UI_view2d_fromcontext(C);
        TimeMarker *marker;
        
        /* unselected markers are drawn at the first time */
@@ -201,6 +193,7 @@ static int ed_marker_add(bContext *C, wmOperator *op)
        marker = MEM_callocN(sizeof(TimeMarker), "TimeMarker");
        marker->flag= SELECT;
        marker->frame= frame;
+       sprintf(marker->name, "Frame %d", frame); // XXX - temp code only
        BLI_addtail(markers, marker);
        
        //BIF_undo_push("Add Marker");
@@ -368,7 +361,7 @@ int WM_modal_tweak_check(wmEvent *evt, int tweak_event)
 static int ed_marker_move_modal(bContext *C, wmOperator *op, wmEvent *evt)
 {
        MarkerMove *mm= op->customdata;
-       View2D *v2d= context_get_view2d(C);
+       View2D *v2d= UI_view2d_fromcontext(C);
        TimeMarker *marker, *selmarker=NULL;
        float dx, fac;
        char str[256];
@@ -612,7 +605,7 @@ static int find_nearest_marker_time(ListBase *markers, float dx)
 static int ed_marker_select(bContext *C, wmEvent *evt, int extend)
 {
        ListBase *markers= context_get_markers(C);
-       View2D *v2d= context_get_view2d(C);
+       View2D *v2d= UI_view2d_fromcontext(C);
        float viewx;
        int x, y, cfra;
        
@@ -689,7 +682,7 @@ callbacks:
 
 static int ed_marker_border_select_exec(bContext *C, wmOperator *op)
 {
-       View2D *v2d= context_get_view2d(C);
+       View2D *v2d= UI_view2d_fromcontext(C);
        ListBase *markers= context_get_markers(C);
        wmGesture *gesture= op->customdata;
        TimeMarker *marker;
index d29af67950bfb8ab3b41c3bf0fce3d03987225bd..e391ac82c823fd955210b7543596c292f8bed196 100644 (file)
@@ -80,22 +80,24 @@ static void time_draw_cfra_time(const bContext *C, SpaceTime *stime, ARegion *ar
 
 static void time_draw_sfra_efra(const bContext *C, SpaceTime *stime, ARegion *ar)
 {
-    /* draw darkened area outside of active timeline 
+    View2D *v2d= UI_view2d_fromcontext(C);
+       
+       /* draw darkened area outside of active timeline 
         * frame range used is preview range or scene range */
        UI_ThemeColorShade(TH_BACK, -25);
 
        if (PSFRA < PEFRA) {
-               glRectf(ar->v2d.cur.xmin, ar->v2d.cur.ymin, PSFRA, ar->v2d.cur.ymax);
-               glRectf(PEFRA, ar->v2d.cur.ymin, ar->v2d.cur.xmax, ar->v2d.cur.ymax);
+               glRectf(v2d->cur.xmin, v2d->cur.ymin, PSFRA, v2d->cur.ymax);
+               glRectf(PEFRA, v2d->cur.ymin, v2d->cur.xmax, v2d->cur.ymax);
        }
        else {
-               glRectf(ar->v2d.cur.xmin, ar->v2d.cur.ymin, ar->v2d.cur.xmax, ar->v2d.cur.ymax);
+               glRectf(v2d->cur.xmin, v2d->cur.ymin, v2d->cur.xmax, v2d->cur.ymax);
        }
 
        UI_ThemeColorShade(TH_BACK, -60);
        /* thin lines where the actual frames are */
-       fdrawline(PSFRA, ar->v2d.cur.ymin, PSFRA, ar->v2d.cur.ymax);
-       fdrawline(PEFRA, ar->v2d.cur.ymin, PEFRA, ar->v2d.cur.ymax);
+       fdrawline(PSFRA, v2d->cur.ymin, PSFRA, v2d->cur.ymax);
+       fdrawline(PEFRA, v2d->cur.ymin, PEFRA, v2d->cur.ymax);
 }
 
 static void time_main_area_init(const bContext *C, ARegion *ar)
@@ -143,6 +145,7 @@ static void time_main_area_draw(const bContext *C, ARegion *ar)
        time_draw_cfra_time(C, stime, ar);
        
        /* markers */
+       UI_view2d_view_orthospecial(C, v2d, 1);
        draw_markers_time(C, 0);
        
        /* reset view matrix */
index 683a40a36820aae5ddf786c3d545d9dcdcea05c0..263b271813658bf05f12de062e9463b476549890 100644 (file)
@@ -94,11 +94,14 @@ typedef struct View2D {
        /* special hacks for outliner hscroll - prevent hanging older versions of Blender */
 #define B_SCROLLO      (1<<4)
 #define HOR_SCROLLO    (T_SCROLL|B_SCROLLO)
-       /* scale markings */
+       /* scale markings - vertical */
 #define LGRID_SCROLL   (1<<5)
 #define RGRID_SCROLL   (1<<6)
+#define VERT_SCROLLGRID        (LGRID_SCROLL|RGRID_SCROLL)
+       /* scale markings - horizontal */
 #define BGRID_SCROLL   (1<<7)
 #define TGRID_SCROLL   (1<<8)  
+#define HOR_SCROLLGRID (BGRID_SCROLL|TGRID_SCROLL)
 
 #endif