[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