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

Log Message:
-----------
Added Hue and Value modes to Hue Correct node, alongside existing 
Saturation. Works the same way, selectively hue shifting or darkening/
brightening pixels based on their original hue.

Example:
http://mke3.net/blender/devel/2.5/hue_correct_hue_val.jpg

Modified Paths:
--------------
    trunk/blender/source/blender/editors/interface/interface_templates.c
    trunk/blender/source/blender/nodes/intern/CMP_nodes/CMP_huecorrect.c

Modified: trunk/blender/source/blender/editors/interface/interface_templates.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_templates.c        
2010-01-21 22:20:49 UTC (rev 26174)
+++ trunk/blender/source/blender/editors/interface/interface_templates.c        
2010-01-21 22:23:57 UTC (rev 26175)
@@ -1851,6 +1851,24 @@
                        uiButSetFunc(bt, curvemap_buttons_redraw, NULL, NULL);
                }
        }
+       else if (labeltype == 'h') {
+               /* HSV */
+               sub= uiLayoutRow(row, 1);
+               uiLayoutSetAlignment(sub, UI_LAYOUT_ALIGN_LEFT);
+               
+               if(cumap->cm[0].curve) {
+                       bt= uiDefButI(block, ROW, 0, "H", 0, 0, dx, 16, 
&cumap->cur, 0.0, 0.0, 0.0, 0.0, "");
+                       uiButSetFunc(bt, curvemap_buttons_redraw, NULL, NULL);
+               }
+               if(cumap->cm[1].curve) {
+                       bt= uiDefButI(block, ROW, 0, "S", 0, 0, dx, 16, 
&cumap->cur, 0.0, 1.0, 0.0, 0.0, "");
+                       uiButSetFunc(bt, curvemap_buttons_redraw, NULL, NULL);
+               }
+               if(cumap->cm[2].curve) {
+                       bt= uiDefButI(block, ROW, 0, "V", 0, 0, dx, 16, 
&cumap->cur, 0.0, 2.0, 0.0, 0.0, "");
+                       uiButSetFunc(bt, curvemap_buttons_redraw, NULL, NULL);
+               }
+       }
        else
                uiLayoutSetAlignment(row, UI_LAYOUT_ALIGN_RIGHT);
        

Modified: trunk/blender/source/blender/nodes/intern/CMP_nodes/CMP_huecorrect.c
===================================================================
--- trunk/blender/source/blender/nodes/intern/CMP_nodes/CMP_huecorrect.c        
2010-01-21 22:20:49 UTC (rev 26174)
+++ trunk/blender/source/blender/nodes/intern/CMP_nodes/CMP_huecorrect.c        
2010-01-21 22:23:57 UTC (rev 26175)
@@ -46,13 +46,21 @@
        
        rgb_to_hsv(in[0], in[1], in[2], hsv, hsv+1, hsv+2);
        
-       /* returns default 0.5 */
+       /* adjust hue, scaling returned default 0.5 up to 1 */
        f = curvemapping_evaluateF(node->storage, 0, hsv[0]);
+       hsv[0] *= (f * 2.f);
        
-       /* adjust saturation, scaling up to 1 */
+       /* adjust saturation, scaling returned default 0.5 up to 1 */
+       f = curvemapping_evaluateF(node->storage, 1, hsv[0]);
        hsv[1] *= (f * 2.f);
        
+       /* adjust value, scaling returned default 0.5 up to 1 */
+       f = curvemapping_evaluateF(node->storage, 2, hsv[0]);
+       hsv[2] *= (f * 2.f);
+       
+       CLAMP(hsv[0], 0.f, 1.f);
        CLAMP(hsv[1], 0.f, 1.f);
+       CLAMP(hsv[2], 0.f, 1.f);
        
        /* convert back to rgb */
        hsv_to_rgb(hsv[0], hsv[1], hsv[2], out, out+1, out+2);
@@ -67,13 +75,21 @@
        
        rgb_to_hsv(in[0], in[1], in[2], hsv, hsv+1, hsv+2);
        
-       /* returns default 0.5 */
+       /* adjust hue, scaling returned default 0.5 up to 1 */
        f = curvemapping_evaluateF(node->storage, 0, hsv[0]);
+       hsv[0] *= (f * 2.f);
        
-       /* adjust saturation, scaling up to 1 */
+       /* adjust saturation, scaling returned default 0.5 up to 1 */
+       f = curvemapping_evaluateF(node->storage, 1, hsv[0]);
        hsv[1] *= (f * 2.f);
        
+       /* adjust value, scaling returned default 0.5 up to 1 */
+       f = curvemapping_evaluateF(node->storage, 2, hsv[0]);
+       hsv[2] *= (f * 2.f);
+       
+       CLAMP(hsv[0], 0.f, 1.f);
        CLAMP(hsv[1], 0.f, 1.f);
+       CLAMP(hsv[2], 0.f, 1.f);
        
        /* convert back to rgb */
        hsv_to_rgb(hsv[0], hsv[1], hsv[2], rgb, rgb+1, rgb+2);
@@ -121,26 +137,32 @@
 static void node_composit_init_huecorrect(bNode* node)
 {
        CurveMapping *cumapping = node->storage= curvemapping_add(1, 0.0f, 
0.0f, 1.0f, 1.0f);
-       CurveMap *cuma = &cumapping->cm[0];
-       int i;
+       int c, i;
        
-       /* set default horizontal curve */
-       if(cuma->curve)
-               MEM_freeN(cuma->curve);
-       
-       cuma->totpoint= 9;
-       cuma->curve= MEM_callocN(cuma->totpoint*sizeof(CurveMapPoint), "curve 
points");
-       
-       for (i=0; i < cuma->totpoint; i++)
-       {
-               cuma->curve[i].x= i / ((float)cuma->totpoint-1);
-               cuma->curve[i].y= 0.5;
+       for (c=0; c<3; c++) {
+               CurveMap *cuma = &cumapping->cm[c];
+               
+               /* set default horizontal curve */
+               if(cuma->curve)
+                       MEM_freeN(cuma->curve);
+               
+               cuma->totpoint= 9;
+               cuma->curve= MEM_callocN(cuma->totpoint*sizeof(CurveMapPoint), 
"curve points");
+               
+               for (i=0; i < cuma->totpoint; i++)
+               {
+                       cuma->curve[i].x= i / ((float)cuma->totpoint-1);
+                       cuma->curve[i].y= 0.5;
+               }
+               
+               if(cuma->table) {
+                       MEM_freeN(cuma->table);
+                       cuma->table= NULL;
+               }
        }
        
-       if(cuma->table) {
-               MEM_freeN(cuma->table);
-               cuma->table= NULL;
-       }
+       /* default to showing Saturation */
+       cumapping->cur = 1;
 }
 
 bNodeType cmp_node_huecorrect= {


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

Reply via email to