[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19602] branches/blender2.5/blender/source /blender/editors/interface: 2.5

Ton Roosendaal ton at blender.org
Wed Apr 8 18:51:35 CEST 2009


Revision: 19602
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19602
Author:   ton
Date:     2009-04-08 18:51:35 +0200 (Wed, 08 Apr 2009)

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

- Updated panel tabbing code to at least make it work again
- And some more minor UI tweaks

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/interface/interface_panel.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_widgets.c

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_panel.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_panel.c	2009-04-08 16:40:46 UTC (rev 19601)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_panel.c	2009-04-08 16:51:35 UTC (rev 19602)
@@ -653,6 +653,33 @@
 	glDisable(GL_BLEND);
 }
 
+static void ui_draw_panel_dragwidget(uiBlock *block)
+{
+	float xmin, xmax, dx;
+	float ymin, ymax, dy;
+	
+	xmin= block->maxx-10-PNL_HEADER+8;
+	xmax= block->maxx-10;
+	ymin= block->maxy+4;
+	ymax= block->maxy+PNL_HEADER-4;
+	
+	dx= 0.333f*(xmax-xmin);
+	dy= 0.333f*(ymax-ymin);
+	
+	glEnable(GL_BLEND);
+	glColor4ub(255, 255, 255, 50);
+	fdrawline(xmin, ymax, xmax, ymin);
+	fdrawline(xmin+dx, ymax, xmax, ymin+dy);
+	fdrawline(xmin+2*dx, ymax, xmax, ymin+2*dy);
+	
+	glColor4ub(0, 0, 0, 50);
+	fdrawline(xmin, ymax+block->aspect, xmax, ymin+block->aspect);
+	fdrawline(xmin+dx, ymax+block->aspect, xmax, ymin+dy+block->aspect);
+	fdrawline(xmin+2*dx, ymax+block->aspect, xmax, ymin+2*dy+block->aspect);
+	glDisable(GL_BLEND);
+}
+
+
 static void ui_draw_panel_old(ARegion *ar, uiBlock *block)
 {
 	Panel *panel= block->panel;
@@ -834,17 +861,89 @@
 		ui_draw_tria_icon(block->minx+6+ofsx, block->maxy+5, block->aspect, 'v');
 }
 
+static void ui_draw_panel_header_style(ARegion *ar, uiBlock *block)
+{
+	Panel *pa, *panel= block->panel;
+	float width;
+	int a, nr= 1, pnl_icons;
+	char *activename= panel->drawname[0]?panel->drawname:panel->panelname;
+	char *panelname, *str;
+	
+	ui_draw_panel_dragwidget(block);
+
+	/* count */
+	for(pa= ar->panels.first; pa; pa=pa->next)
+		if(pa->active)
+			if(pa->paneltab==panel)
+				nr++;
+	
+	pnl_icons= PNL_ICON+8;
+	if(panel->control & UI_PNL_CLOSE) pnl_icons+= PNL_ICON;
+	
+	if(nr==1) {
+		/* active tab */
+		/* draw text label */
+		UI_ThemeColor(TH_TEXT);
+		ui_rasterpos_safe(4.0f+block->minx+pnl_icons, block->maxy+5.0f, block->aspect);
+		UI_DrawString(block->curfont, activename, ui_translate_buttons());
+		return;
+	}
+	
+	a= 0;
+	width= (panel->sizex - 3 - pnl_icons - PNL_ICON)/nr;
+	for(pa= ar->panels.first; pa; pa=pa->next) {
+		panelname= pa->drawname[0]?pa->drawname:pa->panelname;
+		if(a == 0)
+			activename= panelname;
+		
+		if(pa->active==0);
+		else if(pa==panel) {
+			/* active tab */
+			
+			/* draw the active text label */
+			UI_ThemeColor(TH_TEXT);
+			ui_rasterpos_safe(16+pnl_icons+a*width, panel->sizey+4, block->aspect);
+			if(panelname != activename && strstr(panelname, activename) == panelname)
+				str= ui_block_cut_str(block, panelname+strlen(activename), (short)(width-10));
+			else
+				str= ui_block_cut_str(block, panelname, (short)(width-10));
+			UI_DrawString(block->curfont, str, ui_translate_buttons());
+			
+			a++;
+		}
+		else if(pa->paneltab==panel) {
+			
+			/* draw an inactive tab label */
+			UI_ThemeColorBlend(TH_TEXT, TH_BACK, 0.5f);
+			ui_rasterpos_safe(16+pnl_icons+a*width, panel->sizey+4, block->aspect);
+			if(panelname != activename && strstr(panelname, activename) == panelname)
+				str= ui_block_cut_str(block, panelname+strlen(activename), (short)(width-10));
+			else
+				str= ui_block_cut_str(block, panelname, (short)(width-10));
+			UI_DrawString(block->curfont, str, ui_translate_buttons());
+			
+			a++;
+		}
+	}
+}
+
+
 /* XXX has follow style definitions still */
 static void ui_draw_panel_style(ARegion *ar, uiBlock *block)
 {
-	Panel *panel= block->panel;
+	Panel *panel= block->panel, *prev;
 	int ofsx;
-	char *panelname= panel->drawname[0]?panel->drawname:panel->panelname;
 	
 	if(panel->paneltab) return;
 	
-	/* divider */
-	if(panel->prev) {
+	/* divider only when there's a previous panel */
+	prev= panel->prev;
+	while(prev) {
+		if(prev->active) break;
+		prev= prev->prev;
+	}
+	
+	if(prev) {
 		float minx= block->minx+10;
 		float maxx= block->maxx-10;
 		float y= block->maxy + PNL_HEADER;
@@ -859,11 +958,7 @@
 	
 	/* title */
 	if(!(panel->flag & PNL_CLOSEDX)) {
-		ofsx= PNL_ICON+8;
-		if(panel->control & UI_PNL_CLOSE) ofsx+= PNL_ICON;
-		UI_ThemeColor(TH_TEXT);
-		ui_rasterpos_safe(4+block->minx+ofsx, block->maxy+2, block->aspect);
-		UI_DrawString(block->curfont, panelname, ui_translate_buttons());
+		ui_draw_panel_header_style(ar, block);
 	}
 	
 	/* if the panel is minimized vertically:
@@ -944,6 +1039,7 @@
 {
 	if(pa->flag & PNL_CLOSEDY) return pa->ofsy+pa->sizey;
 	else if(pa->paneltab && (pa->paneltab->flag & PNL_CLOSEDY)) return pa->ofsy+pa->sizey;
+	else if(pa->paneltab) return pa->paneltab->ofsy;
 	else return pa->ofsy;
 }
 
@@ -1471,9 +1567,16 @@
 				pa= pa->next;
 			}
 			
+			/* copy locations to tabs */
+			for(pa= ar->panels.first; pa; pa= pa->next) {
+				if(pa->paneltab && pa->active) {
+					copy_panel_offset(pa, pa->paneltab);
+				}
+			}
+			
 			/* panels now differ size.. */
 			if(panel_aligned(sa, ar))
-				uiAlignPanelStep(sa, ar, 1.0);
+				panel_activate_state(C, tabsel, PANEL_STATE_ANIMATION);
 
 			ED_region_tag_redraw(ar);
 		}
@@ -1690,7 +1793,7 @@
 	uiHandlePanelData *data= pa->activedata;
 	wmWindow *win= CTX_wm_window(C);
 	ARegion *ar= CTX_wm_region(C);
-
+	
 	if(data && data->state == state)
 		return;
 

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_widgets.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_widgets.c	2009-04-08 16:40:46 UTC (rev 19601)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_widgets.c	2009-04-08 16:51:35 UTC (rev 19602)
@@ -516,16 +516,15 @@
 /* prepares shade colors */
 static void shadecolors4(float *coltop, float *coldown, float *color, float shadetop, float shadedown)
 {
-	float hue, sat, val, valshade;
 	
-	rgb_to_hsv(color[0], color[1], color[2], &hue, &sat, &val);
-	
-	valshade= CLAMPIS(val+shadetop, 0.0f, 1.0f);
-	hsv_to_rgb(hue, sat, valshade, coltop, coltop+1, coltop+2);
+	coltop[0]= CLAMPIS(color[0]+shadetop, 0.0f, 1.0f);
+	coltop[1]= CLAMPIS(color[1]+shadetop, 0.0f, 1.0f);
+	coltop[2]= CLAMPIS(color[2]+shadetop, 0.0f, 1.0f);
 	coltop[3]= color[3];
 
-	valshade= CLAMPIS(val+shadedown, 0.0f, 1.0f);
-	hsv_to_rgb(hue, sat, valshade, coldown, coldown+1, coldown+2);
+	coldown[0]= CLAMPIS(color[0]+shadedown, 0.0f, 1.0f);
+	coldown[1]= CLAMPIS(color[1]+shadedown, 0.0f, 1.0f);
+	coldown[2]= CLAMPIS(color[2]+shadedown, 0.0f, 1.0f);
 	coldown[3]= color[3];
 }
 
@@ -969,7 +968,7 @@
 static struct uiWidgetColors wcol_menu_item= {
 	{0.0f, 0.0f, 0.0f},
 	{0.0f, 0.0f, 0.0f, 0.3},
-	{0.23f, 0.53f, 0.9f, 0.9f},
+	{0.23f, 0.53f, 0.9f, 1.0f},
 	{0.45, 0.75, 0.3f, 1.0f},
 	{0.35, 0.65, 0.2f, 1.0f},
 	{0.95, 0.9, 0.4f, 1.0f},





More information about the Bf-blender-cvs mailing list