[Bf-blender-cvs] [667718b] UI-graphical-redesign: Some cleanup to make code a bit easier to read ; )

Julian Eisel noreply at git.blender.org
Sun May 31 16:32:52 CEST 2015


Commit: 667718bc7f15d00338801c1f422f86ef5b9c4e60
Author: Julian Eisel
Date:   Sun May 31 16:22:58 2015 +0200
Branches: UI-graphical-redesign
https://developer.blender.org/rB667718bc7f15d00338801c1f422f86ef5b9c4e60

Some cleanup to make code a bit easier to read ;)

===================================================================

M	source/blender/editors/interface/interface_panel.c

===================================================================

diff --git a/source/blender/editors/interface/interface_panel.c b/source/blender/editors/interface/interface_panel.c
index 7ad768a..0fac5b3 100644
--- a/source/blender/editors/interface/interface_panel.c
+++ b/source/blender/editors/interface/interface_panel.c
@@ -560,12 +560,52 @@ static void ui_draw_aligned_panel_header(uiStyle *style, uiBlock *block, const r
 	}
 }
 
+static void ui_draw_panel_shadow(const rctf shadowrect, const float alpha_fac, const bool is_selected)
+{
+	float alpha_fac_tmp = 0.2f * alpha_fac;
+	short shadow_ofs = is_selected ? 2.0f * U.pixelsize : 1.0f * U.pixelsize;
+
+	glEnable(GL_BLEND);
+
+	if (is_selected) {
+		/* draw a big soft shadow while dragging */
+		UI_draw_box_shadow(alpha_fac * 255, shadowrect.xmin, shadowrect.ymin, shadowrect.xmax, shadowrect.ymax);
+	}
+	else {
+		short i;
+
+		/* draw a soft 2px shadow */
+		for (i = 0; i < 2; i++) {
+			glColor4f(0.0f, 0.0f, 0.0f, alpha_fac_tmp);
+
+			glRectf(shadowrect.xmin + shadow_ofs, shadowrect.ymin - shadow_ofs,
+			        shadowrect.xmax + shadow_ofs, shadowrect.ymax - shadow_ofs);
+
+			shadow_ofs += 1 * U.pixelsize;
+			alpha_fac_tmp *= 0.5f;
+		}
+	}
+
+	glDisable(GL_BLEND);
+}
+
+static void panel_boundbox_get(
+        const uiBlock *block, const Panel *pa,
+        const rcti *blockrect, const rcti *headrect,
+        rctf *r_bounds)
+{
+	const int xmax = (pa->flag & PNL_CLOSEDX) ? (blockrect->xmin + PNL_HEADER / block->aspect) : blockrect->xmax;
+	const int ymin = (pa->flag & PNL_CLOSED)  ? headrect->ymin : blockrect->ymin;
+
+	BLI_rctf_init(r_bounds, blockrect->xmin, xmax, ymin, headrect->ymax);
+}
+
 /* panel integrated in buttonswindow, tool/property lists etc */
 void ui_draw_aligned_panel(uiStyle *style, uiBlock *block, const rcti *rect, const bool show_pin)
 {
 	Panel *panel = block->panel;
+	rctf fullrect, itemrect;
 	rcti headrect;
-	rctf itemrect;
 	const bool is_selected = (panel->flag & PNL_SELECT) ? true : false;
 	const float alpha_fac = is_selected ? 0.7f : 1.0f;
 	int ofsx;
@@ -584,44 +624,22 @@ void ui_draw_aligned_panel(uiStyle *style, uiBlock *block, const rcti *rect, con
 	headrect.ymin = headrect.ymax;
 	headrect.ymax = headrect.ymin + floor(PNL_HEADER / block->aspect + 0.001f);
 
+	/* set fullrect */
+	panel_boundbox_get(block, panel, rect, &headrect, &fullrect);
+
 	if (draw_header == false && panel->flag & PNL_CLOSED) {
 		/* skip */
 	}
 	/* draw panel shadow */
-	else if ((draw_header || draw_back)) {
-		rcti shadowrect = headrect;
-		float alpha_fac_tmp = 0.2f * alpha_fac;
-		int shadow_ofs = is_selected ? 2.0f * U.pixelsize : 1.0f * U.pixelsize;
+	else if (draw_header || draw_back) {
+		rctf shadowrect = fullrect;
 
-		if (!(panel->flag & PNL_CLOSED) && draw_back) {
-			shadowrect.ymin = rect->ymin;
-		}
+		/* adjust shadowrect for special case: draw background but not header */
 		if (draw_back && !draw_header) {
 			shadowrect.ymax = rect->ymax;
 		}
-		if (is_closed_x) {
-			shadowrect.xmax = (shadowrect.xmin + PNL_HEADER / block->aspect);
-		}
-
-		glEnable(GL_BLEND);
-
-		if (is_selected) {
-			UI_draw_box_shadow(alpha_fac * 255, shadowrect.xmin, shadowrect.ymin, shadowrect.xmax, shadowrect.ymax);
-		}
-		else {
-			int i;
-
-			for (i = 0; i < 2; i++) {
-				glColor4f(0.0f, 0.0f, 0.0f, alpha_fac_tmp);
 
-				glRectf(shadowrect.xmin + shadow_ofs, shadowrect.ymin - shadow_ofs,
-				        shadowrect.xmax + shadow_ofs, shadowrect.ymax - shadow_ofs);
-
-				shadow_ofs += 1 * U.pixelsize;
-				alpha_fac_tmp *= 0.5f;
-			}
-		}
-		glDisable(GL_BLEND);
+		ui_draw_panel_shadow(shadowrect, alpha_fac, is_selected);
 	}
 
 	{




More information about the Bf-blender-cvs mailing list