[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27981] trunk/blender/source/blender: Histogram and line sample can now be resized vertically

Matt Ebb matt at mke3.net
Sun Apr 4 04:37:24 CEST 2010


Revision: 27981
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27981
Author:   broken
Date:     2010-04-04 04:37:22 +0200 (Sun, 04 Apr 2010)

Log Message:
-----------
Histogram and line sample can now be resized vertically

Modified Paths:
--------------
    trunk/blender/source/blender/editors/interface/interface_draw.c
    trunk/blender/source/blender/editors/interface/interface_handlers.c
    trunk/blender/source/blender/editors/interface/interface_intern.h
    trunk/blender/source/blender/editors/interface/interface_templates.c
    trunk/blender/source/blender/editors/space_image/image_draw.c
    trunk/blender/source/blender/makesdna/DNA_color_types.h

Modified: trunk/blender/source/blender/editors/interface/interface_draw.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_draw.c	2010-04-04 02:08:38 UTC (rev 27980)
+++ trunk/blender/source/blender/editors/interface/interface_draw.c	2010-04-04 02:37:22 UTC (rev 27981)
@@ -694,15 +694,16 @@
 	int i;
 	int rgb;
 	float w, h;
+	float scaler_x1, scaler_x2;
 	float alpha;
 	GLint scissor[4];
 	
 	if (hist==NULL) { printf("hist is null \n"); return; }
 	
-	rect.xmin = (float)recti->xmin;
-	rect.xmax = (float)recti->xmax;
-	rect.ymin = (float)recti->ymin;
-	rect.ymax = (float)recti->ymax;
+	rect.xmin = (float)recti->xmin+1;
+	rect.xmax = (float)recti->xmax-1;
+	rect.ymin = (float)recti->ymin+SCOPE_RESIZE_PAD+2;
+	rect.ymax = (float)recti->ymax-1;
 	
 	w = rect.xmax - rect.xmin;
 	h = rect.ymax - rect.ymin;
@@ -763,14 +764,28 @@
 		glDisable(GL_LINE_SMOOTH);
 	}
 	
+
 	/* restore scissortest */
 	glScissor(scissor[0], scissor[1], scissor[2], scissor[3]);
 	
 	glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
+	
+	/* height scaling widget */
+	scaler_x1 = rect.xmin + w/2 - SCOPE_RESIZE_PAD;
+	scaler_x2 = rect.xmin + w/2 + SCOPE_RESIZE_PAD;
+	
+	glColor4f(0.f, 0.f, 0.f, 0.25f);
+	fdrawline(scaler_x1, rect.ymin-4, scaler_x2, rect.ymin-4);
+	fdrawline(scaler_x1, rect.ymin-7, scaler_x2, rect.ymin-7);
+	glColor4f(1.f, 1.f, 1.f, 0.25f);
+	fdrawline(scaler_x1, rect.ymin-5, scaler_x2, rect.ymin-5);
+	fdrawline(scaler_x1, rect.ymin-8, scaler_x2, rect.ymin-8);
+
+	
 	glColor4f(0.f, 0.f, 0.f, 0.5f);
 	uiSetRoundBox(15);
-	gl_round_box(GL_LINE_LOOP, rect.xmin-1, rect.ymin-1, rect.xmax+1, rect.ymax+1, 3.0f);
-	
+	gl_round_box(GL_LINE_LOOP, rect.xmin-1, rect.ymin, rect.xmax+1, rect.ymax+1, 3.0f);
+		
 	glDisable(GL_BLEND);
 }
 

Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_handlers.c	2010-04-04 02:08:38 UTC (rev 27980)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c	2010-04-04 02:37:22 UTC (rev 27981)
@@ -3460,6 +3460,12 @@
 	return WM_UI_HANDLER_CONTINUE;
 }
 
+static int in_histogram_resize_zone(uiBut *but, int x, int y)
+{
+	// bottom corner return (x > but->x2 - SCOPE_RESIZE_PAD) && (y < but->y1 + SCOPE_RESIZE_PAD);
+	return (y < but->y1 + SCOPE_RESIZE_PAD);
+}
+
 static int ui_numedit_but_HISTOGRAM(uiBut *but, uiHandleButtonData *data, int mx, int my)
 {
 	Histogram *hist = (Histogram *)but->poin;
@@ -3473,11 +3479,18 @@
 	dx = mx - data->draglastx;
 	dy = my - data->draglasty;
 	
-	yfac = MIN2(powf(hist->ymax, 2.f), 1.f) * 0.5;
-	hist->ymax += dy * yfac;
 	
-	CLAMP(hist->ymax, 1.f, 100.f);
+	if (in_histogram_resize_zone(but, data->dragstartx, data->dragstarty)) {
+		 /* resize histogram widget itself */
+		hist->height = (but->y2 - but->y1) + (data->dragstarty - my);
+	} else {
+		/* scale histogram values */
+		yfac = MIN2(powf(hist->ymax, 2.f), 1.f) * 0.5;
+		hist->ymax += dy * yfac;
 	
+		CLAMP(hist->ymax, 1.f, 100.f);
+	}
+	
 	data->draglastx= mx;
 	data->draglasty= my;
 	
@@ -4432,7 +4445,7 @@
 		but->flag |= UI_SELECT;
 		button_timers_tooltip_remove(C, but);
 	}
-
+	
 	/* text editing */
 	if(state == BUTTON_STATE_TEXT_EDITING && data->state != BUTTON_STATE_TEXT_SELECTING)
 		ui_textedit_begin(C, but, data);

Modified: trunk/blender/source/blender/editors/interface/interface_intern.h
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_intern.h	2010-04-04 02:08:38 UTC (rev 27980)
+++ trunk/blender/source/blender/editors/interface/interface_intern.h	2010-04-04 02:37:22 UTC (rev 27981)
@@ -127,6 +127,9 @@
 #define EXTEND_LEFT		1
 #define EXTEND_RIGHT	2
 
+/* for scope resize zone */
+#define SCOPE_RESIZE_PAD	9
+
 typedef struct {
 	short xim, yim;
 	unsigned int *rect;

Modified: trunk/blender/source/blender/editors/interface/interface_templates.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_templates.c	2010-04-04 02:08:38 UTC (rev 27980)
+++ trunk/blender/source/blender/editors/interface/interface_templates.c	2010-04-04 02:37:22 UTC (rev 27981)
@@ -1589,7 +1589,9 @@
 	
 	hist = (Histogram *)cptr.data;
 	
-	bt= uiDefBut(block, HISTOGRAM, 0, "",		rect.xmin, rect.ymin, rect.xmax-rect.xmin, 100.0f, hist, 0, 0, 0, 0, "");
+	hist->height= (hist->height==0)?100:hist->height;
+	
+	bt= uiDefBut(block, HISTOGRAM, 0, "",		rect.xmin, rect.ymin, rect.xmax-rect.xmin, hist->height, hist, 0, 0, 0, 0, "");
 	uiButSetNFunc(bt, rna_update_cb, MEM_dupallocN(cb), NULL);
 	
 	MEM_freeN(cb);

Modified: trunk/blender/source/blender/editors/space_image/image_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_image/image_draw.c	2010-04-04 02:08:38 UTC (rev 27980)
+++ trunk/blender/source/blender/editors/space_image/image_draw.c	2010-04-04 02:37:22 UTC (rev 27981)
@@ -154,17 +154,6 @@
 	UI_DrawString(10, 10, str);
 }
 
-void draw_image_line(struct ARegion *ar, int x1, int y1, int x2, int y2)
-{
-	glColor3ub(0,0,0);
-	glBegin(GL_LINES);
-	
-	glVertex2i(x1, y1);
-	glVertex2i(x2, y2);
-	
-	glEnd();
-}
-
 /* image drawing */
 
 static void draw_image_grid(ARegion *ar, float zoomx, float zoomy)

Modified: trunk/blender/source/blender/makesdna/DNA_color_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_color_types.h	2010-04-04 02:08:38 UTC (rev 27980)
+++ trunk/blender/source/blender/makesdna/DNA_color_types.h	2010-04-04 02:37:22 UTC (rev 27981)
@@ -97,8 +97,10 @@
 	float data_g[256];
 	float data_b[256];
 	float xmax, ymax;
+	int height;
 	int ok;
 	int flag;
+	int pad;
 } Histogram;
 
 #endif





More information about the Bf-blender-cvs mailing list