Revision: 21321
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21321
Author:   ton
Date:     2009-07-02 20:12:46 +0200 (Thu, 02 Jul 2009)

Log Message:
-----------
2.5

Cleanup of scroller drawing in 2D windows.

Before:
http://download.blender.org/institute/rt11.jpg
After:
http://download.blender.org/institute/rt12.jpg

Will add 'zoom' widget circles later, as mockupped here:
http://www.reynish.com/files/blender25/fcurve_scrollbar.png

Also note the scale values are inside scroller; drawing it
on top conflicts with current frame item and markers.

Currently scroller disappear entirely when view is total.

For Joshua:
To make sliders behave nicely, the boundbox (v2d->tot) has to
be refreshed on each change. I've added it in graph drawing
now, but it could be notifier based I guess... not sure what
the correct anim api call would be. Can discuss tomorrow!

On todo:
Layout config hints so people can make scroller positions swap.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenfont/BLF_api.h
    branches/blender2.5/blender/source/blender/blenfont/intern/blf.c
    branches/blender2.5/blender/source/blender/editors/animation/anim_draw.c
    branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h
    
branches/blender2.5/blender/source/blender/editors/interface/interface_intern.h
    
branches/blender2.5/blender/source/blender/editors/interface/interface_panel.c
    
branches/blender2.5/blender/source/blender/editors/interface/interface_widgets.c
    branches/blender2.5/blender/source/blender/editors/interface/view2d.c
    branches/blender2.5/blender/source/blender/editors/interface/view2d_ops.c
    branches/blender2.5/blender/source/blender/editors/space_graph/graph_edit.c
    
branches/blender2.5/blender/source/blender/editors/space_graph/graph_intern.h
    branches/blender2.5/blender/source/blender/editors/space_graph/space_graph.c
    branches/blender2.5/blender/source/blender/makesdna/DNA_view2d_types.h

Modified: branches/blender2.5/blender/source/blender/blenfont/BLF_api.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenfont/BLF_api.h       
2009-07-02 15:45:15 UTC (rev 21320)
+++ branches/blender2.5/blender/source/blender/blenfont/BLF_api.h       
2009-07-02 18:12:46 UTC (rev 21321)
@@ -79,6 +79,11 @@
 float BLF_height_default(char *str);
 
 /*
+ * set rotation for default font
+ */
+void BLF_default_rotation(float angle);
+
+/*
  * By default, rotation and clipping are disable and
  * have to be enable/disable using BLF_enable/disable.
  */

Modified: branches/blender2.5/blender/source/blender/blenfont/intern/blf.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenfont/intern/blf.c    
2009-07-02 15:45:15 UTC (rev 21320)
+++ branches/blender2.5/blender/source/blender/blenfont/intern/blf.c    
2009-07-02 18:12:46 UTC (rev 21321)
@@ -321,6 +321,19 @@
        }
 }
 
+void BLF_default_rotation(float angle)
+{
+       
+       if (global_font_default>=0) {
+               global_font[global_font_default]->angle= angle;
+               if(angle)
+                       global_font[global_font_default]->flags |= BLF_ROTATION;
+               else
+                       global_font[global_font_default]->flags &= 
~BLF_ROTATION;
+       }
+}
+
+
 void BLF_draw(char *str)
 {
        FontBLF *font;

Modified: 
branches/blender2.5/blender/source/blender/editors/animation/anim_draw.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/animation/anim_draw.c    
2009-07-02 15:45:15 UTC (rev 21320)
+++ branches/blender2.5/blender/source/blender/editors/animation/anim_draw.c    
2009-07-02 18:12:46 UTC (rev 21321)
@@ -165,7 +165,7 @@
        glLineWidth(2.0);
        
        glBegin(GL_LINE_STRIP);
-               vec[1]= v2d->cur.ymin;
+               vec[1]= v2d->cur.ymin-500.0f;   /* XXX arbitrary... want it go 
to bottom */
                glVertex2fv(vec);
                
                vec[1]= v2d->cur.ymax;

Modified: branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h      
2009-07-02 15:45:15 UTC (rev 21320)
+++ branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h      
2009-07-02 18:12:46 UTC (rev 21321)
@@ -97,9 +97,9 @@
 
 /* ------ Defines for Scrollers ----- */
 
-/* scroller thickness */
-#define V2D_SCROLL_HEIGHT      16
-#define V2D_SCROLL_WIDTH       16
+/* scroller area */
+#define V2D_SCROLL_HEIGHT      17
+#define V2D_SCROLL_WIDTH       17
 
 /* half the size (in pixels) of scroller 'handles' */
 #define V2D_SCROLLER_HANDLE_SIZE       5

Modified: 
branches/blender2.5/blender/source/blender/editors/interface/interface_intern.h
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/interface/interface_intern.h 
    2009-07-02 15:45:15 UTC (rev 21320)
+++ 
branches/blender2.5/blender/source/blender/editors/interface/interface_intern.h 
    2009-07-02 18:12:46 UTC (rev 21321)
@@ -420,6 +420,7 @@
 void ui_draw_menu_back(struct uiStyle *style, uiBlock *block, rcti *rect);
 void ui_draw_search_back(struct uiStyle *style, uiBlock *block, rcti *rect);
 void ui_draw_link_bezier(rcti *rect);
+void widget_scroll_draw(struct uiWidgetColors *wcol, rcti *rect, rcti *slider, 
int state);
 
 extern void ui_draw_but(const struct bContext *C, ARegion *ar, struct uiStyle 
*style, uiBut *but, rcti *rect);
                /* theme color init */

Modified: 
branches/blender2.5/blender/source/blender/editors/interface/interface_panel.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/interface/interface_panel.c  
    2009-07-02 15:45:15 UTC (rev 21320)
+++ 
branches/blender2.5/blender/source/blender/editors/interface/interface_panel.c  
    2009-07-02 18:12:46 UTC (rev 21321)
@@ -106,7 +106,7 @@
        }
        else if(sa->spacetype==SPACE_FILE && ar->regiontype == 
RGN_TYPE_CHANNELS)
                return BUT_VERTICAL;
-       else if(ELEM(ar->regiontype, RGN_TYPE_UI, RGN_TYPE_TOOLS))
+       else if(ELEM3(ar->regiontype, RGN_TYPE_UI, RGN_TYPE_TOOLS, 
RGN_TYPE_TOOL_PROPS))
                return BUT_VERTICAL;
        
        return 0;

Modified: 
branches/blender2.5/blender/source/blender/editors/interface/interface_widgets.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/interface/interface_widgets.c
    2009-07-02 15:45:15 UTC (rev 21320)
+++ 
branches/blender2.5/blender/source/blender/editors/interface/interface_widgets.c
    2009-07-02 18:12:46 UTC (rev 21321)
@@ -527,7 +527,7 @@
        coldown[0]= CLAMPIS(color[0]+shadedown, 0, 255);
        coldown[1]= CLAMPIS(color[1]+shadedown, 0, 255);
        coldown[2]= CLAMPIS(color[2]+shadedown, 0, 255);
-       coldown[3]= color[3];
+       coldown[3]= color[3];   
 }
 
 static void round_box_shade_col4(char *col1, char *col2, float fac)
@@ -1106,16 +1106,16 @@
 };
 
 static struct uiWidgetColors wcol_scroll= {
-       {25, 25, 25, 255},
+       {50, 50, 50, 180},
+       {80, 80, 80, 180},
+       {100, 100, 100, 180},
        {180, 180, 180, 255},
-       {153, 153, 153, 255},
-       {90, 90, 90, 255},
        
        {0, 0, 0, 255},
        {255, 255, 255, 255},
        
        1,
-       0, -20
+       10, -20
 };
 
 /* free wcol struct to play with */
@@ -1206,6 +1206,10 @@
        
 }
 
+static void widget_state_nothing(uiWidgetType *wt, int state)
+{
+       wt->wcol= *(wt->wcol_theme);
+}      
 
 /* special case, button that calls pulldown */
 static void widget_state_pulldown(uiWidgetType *wt, int state)
@@ -1634,44 +1638,64 @@
        }
 }
 
-static void widget_scroll(uiBut *but, uiWidgetColors *wcol, rcti *rect, int 
state, int roundboxalign)
+/* function in use for buttons and for view2d sliders */
+void widget_scroll_draw(uiWidgetColors *wcol, rcti *rect, rcti *slider, int 
state)
 {
        uiWidgetBase wtb;
-       rcti rect1;
-       double value;
-       char inner[3];
-       float fac, size, rad;
+       float rad;
        int horizontal;
 
+       widget_init(&wtb);
+
        /* determine horizontal/vertical */
        horizontal= (rect->xmax - rect->xmin > rect->ymax - rect->ymin);
-
+       
        if(horizontal)
                rad= 0.5f*(rect->ymax - rect->ymin);
        else
                rad= 0.5f*(rect->xmax - rect->xmin);
-
-       widget_init(&wtb);
+       
        wtb.shadedir= (horizontal)? 1: 0;
-
+       
        /* draw back part, colors swapped and shading inverted */
-       VECCOPY(inner, wcol->inner);
-       VECCOPY(wcol->inner, wcol->item);
        if(horizontal)
                SWAP(short, wcol->shadetop, wcol->shadedown);
-       if(state & UI_SELECT)
-               SWAP(short, wcol->shadetop, wcol->shadedown);
        
-       round_box_edges(&wtb, roundboxalign, rect, rad); /* XXX vertical 
gradient is wrong */
+       round_box_edges(&wtb, 15, rect, rad); 
        widgetbase_draw(&wtb, wcol);
+       
+       /* slider */
+       if(slider->xmax-slider->xmin<2 || slider->ymax-slider->ymin<2);
+       else {
+               
+               SWAP(short, wcol->shadetop, wcol->shadedown);
+               
+               QUATCOPY(wcol->inner, wcol->item);
+               
+               if(wcol->shadetop>wcol->shadedown)
+                       wcol->shadetop+= 20;    /* XXX violates themes... */
+               else wcol->shadedown+= 20;
+               
+               if(state & UI_SELECT)
+                       SWAP(short, wcol->shadetop, wcol->shadedown);
 
-       VECCOPY(wcol->inner, inner);
-       if(horizontal)
-               SWAP(short, wcol->shadetop, wcol->shadedown);
-       if(state & UI_SELECT)
-               SWAP(short, wcol->shadetop, wcol->shadedown);
-       
-       /* front part */
+               /* draw */
+               wtb.emboss= 0; /* only emboss once */
+               
+               round_box_edges(&wtb, 15, slider, rad); 
+               widgetbase_draw(&wtb, wcol);
+               
+       }       
+}
+
+static void widget_scroll(uiBut *but, uiWidgetColors *wcol, rcti *rect, int 
state, int roundboxalign)
+{
+       rcti rect1;
+       double value;
+       float fac, size;
+       int horizontal;
+
+       /* calculate slider part */
        value= ui_get_but_val(but);
 
        size= (but->softmax + but->a1 - but->softmin);
@@ -1680,6 +1704,9 @@
        /* position */
        rect1= *rect;
 
+       /* determine horizontal/vertical */
+       horizontal= (rect->xmax - rect->xmin > rect->ymax - rect->ymin);
+       
        if(horizontal) {
                fac= (rect->xmax - rect->xmin)/(size);
                rect1.xmin= rect1.xmin + ceil(fac*(value - but->softmin));
@@ -1691,17 +1718,8 @@
                rect1.ymin= rect1.ymax - ceil(fac*(but->a1 - but->softmin));
        }
 
-       /* draw */
-       wtb.emboss= 0; /* only emboss once */
+       widget_scroll_draw(wcol, rect, &rect1, state);
 
-       if(!horizontal)
-               SWAP(short, wcol->shadetop, wcol->shadedown);
-
-       round_box_edges(&wtb, roundboxalign, &rect1, rad); /* XXX vertical 
gradient is wrong */
-       widgetbase_draw(&wtb, wcol);
-
-       if(!horizontal)
-               SWAP(short, wcol->shadetop, wcol->shadedown);
 }
 
 static void widget_link(uiBut *but, uiWidgetColors *wcol, rcti *rect, int 
state, int roundboxalign)
@@ -2103,6 +2121,7 @@
 
                case UI_WTYPE_SCROLL:
                        wt.wcol_theme= &btheme->tui.wcol_scroll;
+                       wt.state= widget_state_nothing;
                        wt.custom= widget_scroll;
                        break;
        }

Modified: branches/blender2.5/blender/source/blender/editors/interface/view2d.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/view2d.c       
2009-07-02 15:45:15 UTC (rev 21320)
+++ branches/blender2.5/blender/source/blender/editors/interface/view2d.c       
2009-07-02 18:12:46 UTC (rev 21321)
@@ -34,6 +34,7 @@
 #include "DNA_scene_types.h"
 #include "DNA_screen_types.h"
 #include "DNA_space_types.h"
+#include "DNA_userdef_types.h"
 #include "DNA_view2d_types.h"
 
 #include "BLI_blenlib.h"
@@ -901,7 +902,14 @@
 /* Restore view matrices after drawing */
 void UI_view2d_view_restore(const bContext *C)
 {
-       ED_region_pixelspace(CTX_wm_region(C));
+       ARegion *ar= CTX_wm_region(C);
+       int width= ar->winrct.xmax-ar->winrct.xmin+1;
+       int height= ar->winrct.ymax-ar->winrct.ymin+1;
+       
+       wmOrtho2(0.0f, (float)width, 0.0f, (float)height);
+       wmLoadIdentity();
+       
+       //      ED_region_pixelspace(CTX_wm_region(C));
 }
 
 /* *********************************************************************** */
@@ -1198,7 +1206,10 @@
  * WARNING: the start of this struct must not change, as view2d_ops.c uses 
this too. 
  *                For now, we don't need to have a separate (internal) header 
for structs like this...
  */
-struct View2DScrollers {       
+struct View2DScrollers {
+       rcti hor, vert;                 /* exact size of slider backdrop */
+       int horfull, vertfull;  /* set if sliders are full, we don't draw them 
*/
+       
                /* focus bubbles */
        int vert_min, vert_max; /* vertical scrollbar */
        int hor_min, hor_max;   /* horizontal scrollbar */
@@ -1214,15 +1225,34 @@
 {
        View2DScrollers *scrollers;
        rcti vert, hor;
-       float fac, totsize, scrollsize;
+       float fac1, fac2, totsize, scrollsize;
        int scroll= view2d_scroll_mapped(v2d->scroll);
        
+       /* scrollers is allocated here... */
+       scrollers= MEM_callocN(sizeof(View2DScrollers), "View2DScrollers");
+       
        vert= v2d->vert;

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