[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26153] trunk/blender/source/blender: New Compositor node: Hue Control

Matt Ebb matt at mke3.net
Thu Jan 21 01:00:45 CET 2010


Revision: 26153
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26153
Author:   broken
Date:     2010-01-21 01:00:45 +0100 (Thu, 21 Jan 2010)

Log Message:
-----------
New Compositor node: Hue Control

Was very quick to do, now re-aquainted with node editor.

http://mke3.net/blender/devel/2.5/hue_correct_node.jpg

Todo: modes for affecting hue and value on the vertical axis as well as just saturation - or if an enterprising coder wants to give it a go, let me know and 
I can help :)

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_node.h
    trunk/blender/source/blender/blenkernel/intern/node.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/blenloader/intern/writefile.c
    trunk/blender/source/blender/editors/include/UI_interface.h
    trunk/blender/source/blender/editors/interface/interface_draw.c
    trunk/blender/source/blender/editors/interface/interface_intern.h
    trunk/blender/source/blender/editors/interface/interface_regions.c
    trunk/blender/source/blender/editors/interface/interface_templates.c
    trunk/blender/source/blender/editors/interface/interface_widgets.c
    trunk/blender/source/blender/editors/space_node/drawnode.c
    trunk/blender/source/blender/makesrna/intern/rna_nodetree.c
    trunk/blender/source/blender/makesrna/intern/rna_nodetree_types.h
    trunk/blender/source/blender/nodes/CMP_node.h

Added Paths:
-----------
    trunk/blender/source/blender/nodes/intern/CMP_nodes/CMP_huecorrect.c

Modified: trunk/blender/source/blender/blenkernel/BKE_node.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_node.h	2010-01-20 22:21:10 UTC (rev 26152)
+++ trunk/blender/source/blender/blenkernel/BKE_node.h	2010-01-21 00:00:45 UTC (rev 26153)
@@ -355,6 +355,7 @@
 #define CMP_NODE_VIEW_LEVELS    258
 #define CMP_NODE_COLOR_MATTE 259
 #define CMP_NODE_COLORBALANCE 260
+#define CMP_NODE_HUECORRECT 261
 
 #define CMP_NODE_GLARE		301
 #define CMP_NODE_TONEMAP	302

Modified: trunk/blender/source/blender/blenkernel/intern/node.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/node.c	2010-01-20 22:21:10 UTC (rev 26152)
+++ trunk/blender/source/blender/blenkernel/intern/node.c	2010-01-21 00:00:45 UTC (rev 26153)
@@ -1947,7 +1947,7 @@
 			}
 		}
 		/* cannot initialize them while using in threads */
-		if(ELEM3(node->type, CMP_NODE_TIME, CMP_NODE_CURVE_VEC, CMP_NODE_CURVE_RGB)) {
+		if(ELEM4(node->type, CMP_NODE_TIME, CMP_NODE_CURVE_VEC, CMP_NODE_CURVE_RGB, CMP_NODE_HUECORRECT)) {
 			curvemapping_initialize(node->storage);
 			if(node->type==CMP_NODE_CURVE_RGB)
 				curvemapping_premultiply(node->storage, 0);
@@ -2984,6 +2984,7 @@
 	nodeRegisterType(ntypelist, &cmp_node_alphaover);
 	nodeRegisterType(ntypelist, &cmp_node_zcombine);
 	nodeRegisterType(ntypelist, &cmp_node_colorbalance);
+	nodeRegisterType(ntypelist, &cmp_node_huecorrect);
 	
 	nodeRegisterType(ntypelist, &cmp_node_normal);
 	nodeRegisterType(ntypelist, &cmp_node_curve_vec);

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2010-01-20 22:21:10 UTC (rev 26152)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2010-01-21 00:00:45 UTC (rev 26153)
@@ -2102,7 +2102,7 @@
 			if(ntree->type==NTREE_SHADER && (node->type==SH_NODE_CURVE_VEC || node->type==SH_NODE_CURVE_RGB))
 				direct_link_curvemapping(fd, node->storage);
 			else if(ntree->type==NTREE_COMPOSIT) {
-				if( ELEM3(node->type, CMP_NODE_TIME, CMP_NODE_CURVE_VEC, CMP_NODE_CURVE_RGB))
+				if( ELEM4(node->type, CMP_NODE_TIME, CMP_NODE_CURVE_VEC, CMP_NODE_CURVE_RGB, CMP_NODE_HUECORRECT))
 					direct_link_curvemapping(fd, node->storage);
 				else if(ELEM3(node->type, CMP_NODE_IMAGE, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER))
 					((ImageUser *)node->storage)->ok= 1;

Modified: trunk/blender/source/blender/blenloader/intern/writefile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/writefile.c	2010-01-20 22:21:10 UTC (rev 26152)
+++ trunk/blender/source/blender/blenloader/intern/writefile.c	2010-01-21 00:00:45 UTC (rev 26153)
@@ -486,7 +486,7 @@
 			/* could be handlerized at some point, now only 1 exception still */
 			if(ntree->type==NTREE_SHADER && (node->type==SH_NODE_CURVE_VEC || node->type==SH_NODE_CURVE_RGB))
 				write_curvemapping(wd, node->storage);
-			else if(ntree->type==NTREE_COMPOSIT && (node->type==CMP_NODE_TIME || node->type==CMP_NODE_CURVE_VEC || node->type==CMP_NODE_CURVE_RGB))
+			else if(ntree->type==NTREE_COMPOSIT && ELEM4(node->type, CMP_NODE_TIME, CMP_NODE_CURVE_VEC, CMP_NODE_CURVE_RGB, CMP_NODE_HUECORRECT))
 				write_curvemapping(wd, node->storage);
 			else if(ntree->type==NTREE_TEXTURE && (node->type==TEX_NODE_CURVE_RGB || node->type==TEX_NODE_CURVE_TIME) )
 				write_curvemapping(wd, node->storage);

Modified: trunk/blender/source/blender/editors/include/UI_interface.h
===================================================================
--- trunk/blender/source/blender/editors/include/UI_interface.h	2010-01-20 22:21:10 UTC (rev 26152)
+++ trunk/blender/source/blender/editors/include/UI_interface.h	2010-01-21 00:00:45 UTC (rev 26153)
@@ -220,6 +220,16 @@
 
 #define BUTTYPE		(63<<9)
 
+/* gradient types, for color picker HSVCUBE etc */
+#define UI_GRAD_SV		0
+#define UI_GRAD_HV		1
+#define UI_GRAD_HS		2
+#define UI_GRAD_H		3
+#define UI_GRAD_S		4
+#define UI_GRAD_V		5
+
+#define UI_GRAD_V_ALT	9
+
 /* Drawing
  *
  * Functions to draw various shapes, taking theme settings into account.

Modified: trunk/blender/source/blender/editors/interface/interface_draw.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_draw.c	2010-01-20 22:21:10 UTC (rev 26152)
+++ trunk/blender/source/blender/editors/interface/interface_draw.c	2010-01-21 00:00:45 UTC (rev 26153)
@@ -1061,7 +1061,7 @@
 		glColor3ubv((unsigned char*)wcol->inner);
 		glRectf(rect->xmin, rect->ymin, rect->xmax, rect->ymax);
 	}
-	
+		
 	/* grid, every .25 step */
 	glColor3ubvShade(wcol->inner, -16);
 	ui_draw_but_curve_grid(rect, zoomx, zoomy, offsx, offsy, 0.25f);
@@ -1077,6 +1077,24 @@
 	glVertex2f(rect->xmin + zoomx*(-offsx), rect->ymax);
 	glEnd();
 	
+	/* magic trigger for curve backgrounds */
+	if (but->a1 != -1) {
+		if (but->a1 == UI_GRAD_H) {
+			rcti grid;
+			float col[3];
+			
+			grid.xmin = rect->xmin + zoomx*(-offsx);
+			grid.xmax = rect->xmax + zoomx*(-offsx);
+			grid.ymin = rect->ymin + zoomy*(-offsy);
+			grid.ymax = rect->ymax + zoomy*(-offsy);
+			
+			glEnable(GL_BLEND);
+			ui_draw_gradient(&grid, col, UI_GRAD_H, 0.5f);
+			glDisable(GL_BLEND);
+		}
+	}
+	
+	
 	/* cfra option */
 	/* XXX 2.48
 	if(cumap->flag & CUMA_DRAW_CFRA) {

Modified: trunk/blender/source/blender/editors/interface/interface_intern.h
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_intern.h	2010-01-20 22:21:10 UTC (rev 26152)
+++ trunk/blender/source/blender/editors/interface/interface_intern.h	2010-01-21 00:00:45 UTC (rev 26153)
@@ -430,6 +430,8 @@
 extern void gl_round_box_shade(int mode, float minx, float miny, float maxx, float maxy, float rad, float shadetop, float shadedown);
 extern void gl_round_box_vertical_shade(int mode, float minx, float miny, float maxx, float maxy, float rad, float shadeLeft, float shadeRight);
 
+void ui_draw_gradient(rcti *rect, float *rgb, int type, float alpha);
+
 void ui_draw_but_HISTOGRAM(uiBut *but, struct uiWidgetColors *wcol, rcti *rect);
 void ui_draw_but_COLORBAND(uiBut *but, struct uiWidgetColors *wcol, rcti *rect);
 void ui_draw_but_NORMAL(uiBut *but, struct uiWidgetColors *wcol, rcti *rect);

Modified: trunk/blender/source/blender/editors/interface/interface_regions.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_regions.c	2010-01-20 22:21:10 UTC (rev 26152)
+++ trunk/blender/source/blender/editors/interface/interface_regions.c	2010-01-21 00:00:45 UTC (rev 26153)
@@ -1696,7 +1696,7 @@
 	uiButSetFunc(bt, do_picker_rna_cb, bt, NULL);
 	
 	/* value */
-	bt= uiDefButR(block, HSVCUBE, 0, "", PICKER_W+PICKER_SPACE,0,PICKER_BAR,PICKER_H, ptr, propname, -1, 0.0, 0.0, 9, 0, "");
+	bt= uiDefButR(block, HSVCUBE, 0, "", PICKER_W+PICKER_SPACE,0,PICKER_BAR,PICKER_H, ptr, propname, -1, 0.0, 0.0, UI_GRAD_V_ALT, 0, "");
 	uiButSetFunc(bt, do_picker_rna_cb, bt, NULL);
 }
 
@@ -1744,13 +1744,13 @@
 			circle_picker(block, ptr, propname);
 			break;
 		case USER_CP_SQUARE_SV:
-			square_picker(block, ptr, propname, 0);
+			square_picker(block, ptr, propname, UI_GRAD_SV);
 			break;
 		case USER_CP_SQUARE_HS:
-			square_picker(block, ptr, propname, 1);
+			square_picker(block, ptr, propname, UI_GRAD_HS);
 			break;
 		case USER_CP_SQUARE_HV:
-			square_picker(block, ptr, propname, 2);
+			square_picker(block, ptr, propname, UI_GRAD_HV);
 			break;
 	}
 	

Modified: trunk/blender/source/blender/editors/interface/interface_templates.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_templates.c	2010-01-20 22:21:10 UTC (rev 26152)
+++ trunk/blender/source/blender/editors/interface/interface_templates.c	2010-01-21 00:00:45 UTC (rev 26153)
@@ -1804,6 +1804,7 @@
 	uiBut *bt;
 	float dx= UI_UNIT_X;
 	int icon, size;
+	int bg=-1;
 
 	block= uiLayoutGetBlock(layout);
 
@@ -1852,6 +1853,9 @@
 	}
 	else
 		uiLayoutSetAlignment(row, UI_LAYOUT_ALIGN_RIGHT);
+	
+	if (labeltype=='h')
+		bg = UI_GRAD_H;
 
 	/* operation buttons */
 	sub= uiLayoutRow(row, 1);
@@ -1885,7 +1889,7 @@
 	/* curve itself */
 	size= uiLayoutGetWidth(layout);
 	row= uiLayoutRow(layout, 0);
-	uiDefBut(block, BUT_CURVE, 0, "", 0, 0, size, MIN2(size, 200), cumap, 0.0f, 1.0f, 0, 0, "");
+	uiDefBut(block, BUT_CURVE, 0, "", 0, 0, size, MIN2(size, 200), cumap, 0.0f, 1.0f, bg, 0, "");
 
 	/* black/white levels */
 	if(levels) {

Modified: trunk/blender/source/blender/editors/interface/interface_widgets.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_widgets.c	2010-01-20 22:21:10 UTC (rev 26152)
+++ trunk/blender/source/blender/editors/interface/interface_widgets.c	2010-01-21 00:00:45 UTC (rev 26153)
@@ -1607,65 +1607,58 @@
 /* ************ custom buttons, old stuff ************** */
 
 /* draws in resolution of 20x4 colors */
-static void ui_draw_but_HSVCUBE(uiBut *but, rcti *rect)
+void ui_draw_gradient(rcti *rect, float *rgb, int type, float alpha)
 {
 	int a;
-	float rgb[3], h,s,v;
-	float dx, dy, sx1, sx2, sy, x=0.0f, y=0.0f;
+	float h, s, v;
+	float dx, dy, sx1, sx2, sy;
 	float col0[4][3];	// left half, rect bottom to top
 	float col1[4][3];	// right half, rect bottom to top
 	
-	ui_get_but_vectorf(but, rgb);
 	rgb_to_hsv(rgb[0], rgb[1], rgb[2], &h, &s, &v);
 	
 	/* draw series of gouraud rects */
 	glShadeModel(GL_SMOOTH);
 	
-	
-	if(but->a1==0) {	// S and V vary
-		hsv_to_rgb(h, 0.0, 0.0,   &col1[0][0], &col1[0][1], &col1[0][2]);
-		hsv_to_rgb(h, 0.333, 0.0, &col1[1][0], &col1[1][1], &col1[1][2]);
-		hsv_to_rgb(h, 0.666, 0.0, &col1[2][0], &col1[2][1], &col1[2][2]);
-		hsv_to_rgb(h, 1.0, 0.0,   &col1[3][0], &col1[3][1], &col1[3][2]);
-		x= v; y= s;
+	switch(type) {
+		case UI_GRAD_SV:
+			hsv_to_rgb(h, 0.0, 0.0,   &col1[0][0], &col1[0][1], &col1[0][2]);
+			hsv_to_rgb(h, 0.333, 0.0, &col1[1][0], &col1[1][1], &col1[1][2]);
+			hsv_to_rgb(h, 0.666, 0.0, &col1[2][0], &col1[2][1], &col1[2][2]);
+			hsv_to_rgb(h, 1.0, 0.0,   &col1[3][0], &col1[3][1], &col1[3][2]);
+			break;
+		case UI_GRAD_HV:

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list