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. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to