Revision: 19584
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19584
Author:   ton
Date:     2009-04-07 19:08:26 +0200 (Tue, 07 Apr 2009)

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

- Widgets now draw projected themselves, putting window/region matrix
  on 1:1 pixelspace. This allows zoomable buttons, but crispy.
- Note: text in smaller buttons dont get clipped correct now, WIP
- Fixed error with button types in some  menus.
- removed temp UI_2_50 define hack.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/include/UI_interface.h
    branches/blender2.5/blender/source/blender/editors/interface/interface.c
    
branches/blender2.5/blender/source/blender/editors/interface/interface_draw.c
    
branches/blender2.5/blender/source/blender/editors/interface/interface_intern.h
    
branches/blender2.5/blender/source/blender/editors/interface/interface_layout.c
    
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/screen/area.c

Modified: 
branches/blender2.5/blender/source/blender/editors/include/UI_interface.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/UI_interface.h   
2009-04-07 17:08:24 UTC (rev 19583)
+++ branches/blender2.5/blender/source/blender/editors/include/UI_interface.h   
2009-04-07 17:08:26 UTC (rev 19584)
@@ -87,7 +87,6 @@
 #define UI_BLOCK_MOVEMOUSE_QUIT        128
 #define UI_BLOCK_KEEP_OPEN             256
 #define UI_BLOCK_POPUP                 512
-#define UI_BLOCK_2_50                  1024    /* XXX 2.5 migration flag */
 
 /* uiPopupBlockHandle->menuretval */
 #define UI_RETURN_CANCEL       1       /* cancel all menus cascading */

Modified: 
branches/blender2.5/blender/source/blender/editors/interface/interface.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface.c    
2009-04-07 17:08:24 UTC (rev 19583)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface.c    
2009-04-07 17:08:26 UTC (rev 19584)
@@ -666,9 +666,24 @@
 
        if(block->drawextra) block->drawextra(C, block);
 
+       /* pixel space for AA widgets */
+       glMatrixMode(GL_PROJECTION);
+       glPushMatrix();
+       glMatrixMode(GL_MODELVIEW);
+       glPushMatrix();
+       glLoadIdentity();
+       
+       wmOrtho2(0.0f, ar->winx, 0.0f, ar->winy);
+       
        for(but= block->buttons.first; but; but= but->next)
                ui_draw_but(ar, but);
 
+       /* restore matrix */
+       glMatrixMode(GL_PROJECTION);
+       glPopMatrix();
+       glMatrixMode(GL_MODELVIEW);
+       glPopMatrix();
+       
        ui_draw_links(block);
 }
 
@@ -2311,12 +2326,8 @@
        short slen;
        
        if(type & BUTPOIN) {            /* a pointer is required */
-               if(poin==NULL) {
-                       /* if pointer is zero, button is removed and not drawn 
*/
-                       UI_ThemeColor(block->themecol);
-                       glRects(x1,  y1,  x1+x2,  y1+y2);
+               if(poin==NULL)
                        return NULL;
-               }
        }
 
        but= MEM_callocN(sizeof(uiBut), "uiBut");
@@ -2326,6 +2337,7 @@
        but->bit= type & BIT;
        but->bitnr= type & 31;
        but->icon = 0;
+       but->dt= block->dt;
 
        BLI_addtail(&block->buttons, but);
 
@@ -2360,7 +2372,7 @@
        but->lock= block->lock;
        but->lockstr= block->lockstr;
 
-       but->aspect= block->aspect;
+       but->aspect= 1.0f; //XXX block->aspect;
        but->win= block->win;
        but->block= block;              // pointer back, used for frontbuffer 
status, and picker
 

Modified: 
branches/blender2.5/blender/source/blender/editors/interface/interface_draw.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/interface/interface_draw.c   
    2009-04-07 17:08:24 UTC (rev 19583)
+++ 
branches/blender2.5/blender/source/blender/editors/interface/interface_draw.c   
    2009-04-07 17:08:26 UTC (rev 19584)
@@ -507,272 +507,9 @@
        
 }
 
-/* ************** GENERIC ICON DRAW, NO THEME HERE ************* */
-
-/* icons have been standardized... and this call draws in untransformed 
coordinates */
-#define ICON_HEIGHT            16.0f
-
-void ui_draw_icon(uiBut *but, BIFIconID icon, int blend)
-{
-       float xs=0, ys=0, aspect, height;
-
-       /* this icon doesn't need draw... */
-       if(icon==ICON_BLANK1) return;
-       
-       /* we need aspect from block, for menus... these buttons are scaled in 
uiPositionBlock() */
-       aspect= but->block->aspect;
-       if(aspect != but->aspect) {
-               /* prevent scaling up icon in pupmenu */
-               if (aspect < 1.0f) {                    
-                       height= ICON_HEIGHT;
-                       aspect = 1.0f;
-                       
-               }
-               else 
-                       height= ICON_HEIGHT/aspect;
-       }
-       else
-               height= ICON_HEIGHT;
-       
-       if(but->flag & UI_ICON_LEFT) {
-               if (but->type==BUT_TOGDUAL) {
-                       if (but->drawstr[0]) {
-                               xs= but->x1-1.0;
-                       } else {
-                               xs= (but->x1+but->x2- height)/2.0;
-                       }
-               }
-               else if (but->block->flag & UI_BLOCK_LOOP) {
-                       xs= but->x1+1.0;
-               }
-               else if ((but->type==ICONROW) || (but->type==ICONTEXTROW)) {
-                       xs= but->x1+3.0;
-               }
-               else {
-                       xs= but->x1+4.0;
-               }
-               ys= (but->y1+but->y2- height)/2.0;
-       }
-       if(but->flag & UI_ICON_RIGHT) {
-               xs= but->x2-17.0;
-               ys= (but->y1+but->y2- height)/2.0;
-       }
-       if (!((but->flag & UI_ICON_RIGHT) || (but->flag & UI_ICON_LEFT))) {
-               xs= (but->x1+but->x2- height)/2.0;
-               ys= (but->y1+but->y2- height)/2.0;
-       }
-
-       glEnable(GL_BLEND);
-
-       /* calculate blend color */
-       if ELEM3(but->type, TOG, ROW, TOGN) {
-               if(but->flag & UI_SELECT);
-               else if(but->flag & UI_ACTIVE);
-               else blend= -60;
-       }
-       if (but->flag & UI_BUT_DISABLED) blend = -100;
-       
-       UI_icon_draw_aspect_blended(xs, ys, icon, aspect, blend);
-       
-       glDisable(GL_BLEND);
-}
-
-
-
-
 /* ************** TEXT AND ICON DRAWING FUNCTIONS ************* */
 
-#define BUT_TEXT_NORMAL        0
-#define BUT_TEXT_SUNKEN        1
 
-void ui_draw_text(uiBut *but, float x, float y, int sunken)
-{
-       int alpha_offs= (but->flag & UI_BUT_DISABLED)?UI_DISABLED_ALPHA_OFFS:0;
-       int transopts;
-       int len;
-       float ypos = (sunken==BUT_TEXT_SUNKEN) ? (y-1) : y;
-       char *cpoin;
-       
-       if(but->type==LABEL && but->hardmin!=0.0) {
-               UI_ThemeColor(TH_BUT_TEXT_HI);
-       }
-       else if(but->dt==UI_EMBOSSP) {
-               if((but->flag & UI_ACTIVE) && but->type!=LABEL) {       // 
LABEL = title in pulldowns
-                       UI_ThemeColorShadeAlpha(TH_MENU_TEXT_HI, 0, alpha_offs);
-               } else {
-                       UI_ThemeColorShadeAlpha(TH_MENU_TEXT, 0, alpha_offs);
-               }
-       }
-       else {
-               if(but->flag & UI_SELECT) {             
-                       UI_ThemeColorShadeAlpha(TH_BUT_TEXT_HI, 0, alpha_offs);
-               } else {
-                       UI_ThemeColorShadeAlpha(TH_BUT_TEXT, 0, alpha_offs);
-               }
-       }
-       
-       if (sunken == BUT_TEXT_SUNKEN) {
-               float curcol[4];
-
-               glGetFloatv(GL_CURRENT_COLOR, curcol); /* returns four 
components: r,g,b,a */           
-
-               /* only draw embossed text if the text color is darker than 0.5 
mid-grey */
-               if ((curcol[0] + curcol[1] + curcol[2]) * 0.3f < 0.5f)
-                       glColor4f(0.6f, 0.6f, 0.6f, 0.3f);
-               else
-                       return;
-       }
-       
-       ui_rasterpos_safe(x, ypos, but->aspect);
-       if(but->type==IDPOIN) transopts= 0;     // no translation, of course!
-       else transopts= ui_translate_buttons();
-       
-       /* cut string in 2 parts */
-       cpoin= strchr(but->drawstr, '|');
-       if(cpoin) *cpoin= 0;            
-       
-#ifdef INTERNATIONAL
-       if (but->type == FTPREVIEW)
-               FTF_DrawNewFontString (but->drawstr+but->ofs, FTF_INPUT_UTF8);
-       else
-               UI_DrawString(but->font, but->drawstr+but->ofs, transopts);
-#else
-       UI_DrawString(but->font, but->drawstr+but->ofs, transopts);
-#endif
-       
-       /* part text right aligned */
-       if(cpoin) {
-               len= UI_GetStringWidth(but->font, cpoin+1, 
ui_translate_buttons());
-               ui_rasterpos_safe( but->x2 - len*but->aspect-3, ypos, 
but->aspect);
-               UI_DrawString(but->font, cpoin+1, ui_translate_buttons());
-               *cpoin= '|';
-       }
-}
-
-/* draws text and icons for buttons */
-void ui_draw_text_icon(uiBut *but)
-{
-       float x, y;
-       short t, pos, ch;
-       short selsta_tmp, selend_tmp, selsta_draw, selwidth_draw;
-       
-       /* check for button text label */
-       if (but->type == ICONTEXTROW) {
-               ui_draw_icon(but, (BIFIconID) (but->icon+but->iconadd), 0);
-       }
-       else {
-
-               /* text button selection and cursor */
-               if(but->editstr && but->pos != -1) {
-               
-                       if ((but->selend - but->selsta) > 0) {
-                               /* text button selection */
-                               selsta_tmp = but->selsta + strlen(but->str);
-                               selend_tmp = but->selend + strlen(but->str);
-                                       
-                               if(but->drawstr[0]!=0) {
-                                       ch= but->drawstr[selsta_tmp];
-                                       but->drawstr[selsta_tmp]= 0;
-                                       
-                                       selsta_draw = 
but->aspect*UI_GetStringWidth(but->font, but->drawstr+but->ofs, 
ui_translate_buttons()) + 3;
-                                       
-                                       but->drawstr[selsta_tmp]= ch;
-                                       
-                                       
-                                       ch= but->drawstr[selend_tmp];
-                                       but->drawstr[selend_tmp]= 0;
-                                       
-                                       selwidth_draw = 
but->aspect*UI_GetStringWidth(but->font, but->drawstr+but->ofs, 
ui_translate_buttons()) + 3;
-                                       
-                                       but->drawstr[selend_tmp]= ch;
-                                       
-                                       UI_ThemeColor(TH_BUT_TEXTFIELD_HI);
-                                       glRects(but->x1+selsta_draw+1, 
but->y1+2, but->x1+selwidth_draw+1, but->y2-2);
-                               }
-                       } else {
-                               /* text cursor */
-                               pos= but->pos+strlen(but->str);
-                               if(pos >= but->ofs) {
-                                       if(but->drawstr[0]!=0) {
-                                               ch= but->drawstr[pos];
-                                               but->drawstr[pos]= 0;
-                       
-                                               t= 
but->aspect*UI_GetStringWidth(but->font, but->drawstr+but->ofs, 
ui_translate_buttons()) + 3;
-                                               
-                                               but->drawstr[pos]= ch;
-                                       }
-                                       else t= 3;
-                                       
-                                       glColor3ub(255,0,0);
-                                       glRects(but->x1+t, but->y1+2, 
but->x1+t+2, but->y2-2);
-                               }
-                       }
-               }
-               
-               if(but->type==BUT_TOGDUAL) {
-                       int dualset= 0;
-                       if(but->pointype==SHO)
-                               dualset= BTST( *(((short *)but->poin)+1), 
but->bitnr);
-                       else if(but->pointype==INT)
-                               dualset= BTST( *(((int *)but->poin)+1), 
but->bitnr);
-                       
-                       ui_draw_icon(but, ICON_DOT, dualset?0:-100);
-               }
-               
-               if(but->drawstr[0]!=0) {
-                       int tog3= 0;
-                       
-                       /* If there's an icon too (made with uiDefIconTextBut) 
then draw the icon
-                       and offset the text label to accomodate it */
-                       
-                       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
-                       {
-                               if(but->editstr || (but->flag & UI_TEXT_LEFT))
-                                       x= but->x1+4.0;
-                               else if ELEM3(but->type, TOG, TOGN, TOG3)
-                                       x= but->x1+18.0;        /* offset for 
checkmark */
-                               else
-                                       x= 
(but->x1+but->x2-but->strwidth+1)/2.0;
-                       }
-                       
-                       /* tog3 button exception; draws with glColor! */
-                       if(but->type==TOG3 && (but->flag & UI_SELECT)) {
-                               
-                               if( but->pointype==CHA ) {
-                                       if( BTST( *(but->poin+2), but->bitnr )) 
tog3= 1;
-                               }
-                               else if( but->pointype ==SHO ) {
-                                       short *sp= (short *)but->poin;
-                                       if( BTST( sp[1], but->bitnr )) tog3= 1;
-                               }
-                               
-//                             ui_tog3_invert(but->x1,but->y1,but->x2,but->y2, 
tog3);
-                               if (tog3) glColor3ub(255, 255, 0);
-                       }
-                       
-                       /* position and draw */
-                       y = (but->y1+but->y2- 9.0)/2.0;
-                       
-                       if (ELEM(but->type, LABEL, PULLDOWN) && !(but->flag & 
UI_ACTIVE))
-                               ui_draw_text(but, x, y, BUT_TEXT_SUNKEN);
-                       
-                       ui_draw_text(but, x, y, BUT_TEXT_NORMAL);
-                       
-               }
-               /* if there's no text label, then check to see if there's an 
icon only and draw it */
-               else if( but->flag & UI_HAS_ICON ) {
-                       ui_draw_icon(but, (BIFIconID) (but->icon+but->iconadd), 
0);
-               }
-       }
-}
-
 #if 0
 #ifdef INTERNATIONAL
 static void ui_draw_but_CHARTAB(uiBut *but)

Modified: 
branches/blender2.5/blender/source/blender/editors/interface/interface_intern.h
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/interface/interface_intern.h 
    2009-04-07 17:08:24 UTC (rev 19583)
+++ 
branches/blender2.5/blender/source/blender/editors/interface/interface_intern.h 
    2009-04-07 17:08:26 UTC (rev 19584)

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