diff options
author | Robert Holcomb <bob_holcomb@hotmail.com> | 2007-01-09 07:32:39 +0300 |
---|---|---|
committer | Robert Holcomb <bob_holcomb@hotmail.com> | 2007-01-09 07:32:39 +0300 |
commit | cc359a6fd5049a995b2b3145c3ed6580f4dc02a0 (patch) | |
tree | 372a13ab7079e6407dfa73f962944171fe796b02 | |
parent | 3b15461a4a0149ff29d4e4afeafbd1468335870d (diff) |
Format corrections.
-rw-r--r-- | source/blender/blenkernel/BKE_node.h | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/node_composite.c | 238 | ||||
-rw-r--r-- | source/blender/src/drawnode.c | 113 |
3 files changed, 173 insertions, 180 deletions
diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h index 6a6b9b8224b..267c3e47002 100644 --- a/source/blender/blenkernel/BKE_node.h +++ b/source/blender/blenkernel/BKE_node.h @@ -241,7 +241,7 @@ void set_node_shader_lamp_loop(void (*lamp_loop_func)(struct ShadeInput *, str #define CMP_NODE_DIFF_MATTE 235 #define CMP_NODE_COLOR_SPILL 236 #define CMP_NODE_CHROMA 237 -#define CMP_NODE_CHANNEL_MATTE 238 +#define CMP_NODE_CHANNEL_MATTE 238 #define CMP_NODE_FLIP 239 #define CMP_NODE_SPLITVIEWER 240 #define CMP_NODE_INDEX_MASK 241 diff --git a/source/blender/blenkernel/intern/node_composite.c b/source/blender/blenkernel/intern/node_composite.c index f7208985ac7..72971b1eade 100644 --- a/source/blender/blenkernel/intern/node_composite.c +++ b/source/blender/blenkernel/intern/node_composite.c @@ -4787,139 +4787,139 @@ static bNodeType cmp_node_chroma={ /* ******************* Channel Matte Node ********************************* */ static bNodeSocketType cmp_node_channel_matte_in[]={ - {SOCK_RGBA,1,"Image", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f}, - {-1,0,""} + {SOCK_RGBA,1,"Image", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f}, + {-1,0,""} }; static bNodeSocketType cmp_node_channel_matte_out[]={ - {SOCK_RGBA,0,"Image", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f}, - {SOCK_VALUE,0,"Matte",0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f}, - {-1,0,""} + {SOCK_RGBA,0,"Image", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f}, + {SOCK_VALUE,0,"Matte",0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f}, + {-1,0,""} }; static void do_channel_matte(bNode *node, float *out, float *in) { - NodeChroma *c=(NodeChroma *)node->storage; - float alpha=0.0; - - /* Alpha=G-MAX(R, B) */ - - switch(node->custom2) - { - case 1: - { - alpha=in[0]-MAX2(in[1],in[2]); - break; - } - case 2: - { - alpha=in[1]-MAX2(in[0],in[2]); - break; - } - case 3: - { - alpha=in[2]-MAX2(in[0],in[1]); - break; - } - default: - break; - } - - //flip because 0.0 is transparent, not 1.0 - alpha=1-alpha; - - //test range - if(alpha>c->t1) { - alpha=in[3]; /*whatever it was prior */ - } - else if(alpha<c->t2){ - alpha=0.0; - } - else {/*blend */ - alpha=(alpha-c->t2)/(c->t1-c->t2); - } - - /* don't make something that was more transparent less transparent */ - if (alpha<in[3]) { - out[3]=alpha; - } - else { - out[3]=in[3]; - } + NodeChroma *c=(NodeChroma *)node->storage; + float alpha=0.0; + + /* Alpha=G-MAX(R, B) */ + + switch(node->custom2) + { + case 1: + { + alpha=in[0]-MAX2(in[1],in[2]); + break; + } + case 2: + { + alpha=in[1]-MAX2(in[0],in[2]); + break; + } + case 3: + { + alpha=in[2]-MAX2(in[0],in[1]); + break; + } + default: + break; + } + + /*flip because 0.0 is transparent, not 1.0*/ + alpha=1-alpha; + + //test range + if(alpha>c->t1) { + alpha=in[3]; /*whatever it was prior */ + } + else if(alpha<c->t2){ + alpha=0.0; + } + else {/*blend */ + alpha=(alpha-c->t2)/(c->t1-c->t2); + } + + /* don't make something that was more transparent less transparent */ + if (alpha<in[3]) { + out[3]=alpha; + } + else { + out[3]=in[3]; + } } static void node_composit_exec_channel_matte(void *data, bNode *node, bNodeStack **in, bNodeStack **out) { - CompBuf *cbuf; - CompBuf *outbuf; - - if(in[0]->hasinput==0) return; - if(in[0]->data==NULL) return; - if(out[0]->hasoutput==0 && out[1]->hasoutput==0) return; - - cbuf=in[0]->data; - /*is it an RGBA image?*/ - if(cbuf->type==CB_RGBA) { - - outbuf=dupalloc_compbuf(cbuf); - - /*convert to colorspace*/ - switch(node->custom1) { - case 1: /*RGB */ - break; - case 2: /*HSV*/ - composit1_pixel_processor(node, outbuf, cbuf, in[1]->vec, do_rgba_to_hsva, CB_RGBA); - break; - case 3: /*YUV*/ - composit1_pixel_processor(node, outbuf, cbuf, in[1]->vec, do_rgba_to_yuva, CB_RGBA); - break; - case 4: /*YCC*/ - composit1_pixel_processor(node, outbuf, cbuf, in[1]->vec, do_rgba_to_ycca, CB_RGBA); - break; - default: - break; - } - - /*use the selected channel information to do the key */ - composit1_pixel_processor(node, outbuf, outbuf, in[1]->vec, do_channel_matte, CB_RGBA); - - /*convert back to RGB colorspace in place*/ - switch(node->custom1) { - case 1: /*RGB*/ - break; - case 2: /*HSV*/ - composit1_pixel_processor(node, outbuf, outbuf, in[1]->vec, do_hsva_to_rgba, CB_RGBA); - break; - case 3: /*YUV*/ - composit1_pixel_processor(node, outbuf, outbuf, in[1]->vec, do_yuva_to_rgba, CB_RGBA); - break; - case 4: /*YCC*/ - composit1_pixel_processor(node, outbuf, outbuf, in[1]->vec, do_ycca_to_rgba, CB_RGBA); - break; - default: - break; - } - - generate_preview(node, outbuf); - out[0]->data=outbuf; - out[1]->data=valbuf_from_rgbabuf(outbuf, CHAN_A); - - } - else { - return; - } + CompBuf *cbuf; + CompBuf *outbuf; + + if(in[0]->hasinput==0) return; + if(in[0]->data==NULL) return; + if(out[0]->hasoutput==0 && out[1]->hasoutput==0) return; + + cbuf=in[0]->data; + /*is it an RGBA image?*/ + if(cbuf->type==CB_RGBA) { + + outbuf=dupalloc_compbuf(cbuf); + + /*convert to colorspace*/ + switch(node->custom1) { + case 1: /*RGB */ + break; + case 2: /*HSV*/ + composit1_pixel_processor(node, outbuf, cbuf, in[1]->vec, do_rgba_to_hsva, CB_RGBA); + break; + case 3: /*YUV*/ + composit1_pixel_processor(node, outbuf, cbuf, in[1]->vec, do_rgba_to_yuva, CB_RGBA); + break; + case 4: /*YCC*/ + composit1_pixel_processor(node, outbuf, cbuf, in[1]->vec, do_rgba_to_ycca, CB_RGBA); + break; + default: + break; + } + + /*use the selected channel information to do the key */ + composit1_pixel_processor(node, outbuf, outbuf, in[1]->vec, do_channel_matte, CB_RGBA); + + /*convert back to RGB colorspace in place*/ + switch(node->custom1) { + case 1: /*RGB*/ + break; + case 2: /*HSV*/ + composit1_pixel_processor(node, outbuf, outbuf, in[1]->vec, do_hsva_to_rgba, CB_RGBA); + break; + case 3: /*YUV*/ + composit1_pixel_processor(node, outbuf, outbuf, in[1]->vec, do_yuva_to_rgba, CB_RGBA); + break; + case 4: /*YCC*/ + composit1_pixel_processor(node, outbuf, outbuf, in[1]->vec, do_ycca_to_rgba, CB_RGBA); + break; + default: + break; + } + + generate_preview(node, outbuf); + out[0]->data=outbuf; + out[1]->data=valbuf_from_rgbabuf(outbuf, CHAN_A); + + } + else { + return; + } } static bNodeType cmp_node_channel_matte={ - /* type code */ CMP_NODE_CHANNEL_MATTE, - /* name */ "Channel Key", - /* width+range */ 200, 80, 250, - /* class+opts */ NODE_CLASS_MATTE, NODE_PREVIEW|NODE_OPTIONS, - /* input sock */ cmp_node_channel_matte_in, - /* output sock */ cmp_node_channel_matte_out, - /* storage */ "NodeChroma", - /* execfunc */ node_composit_exec_channel_matte + /* type code */ CMP_NODE_CHANNEL_MATTE, + /* name */ "Channel Key", + /* width+range */ 200, 80, 250, + /* class+opts */ NODE_CLASS_MATTE, NODE_PREVIEW|NODE_OPTIONS, + /* input sock */ cmp_node_channel_matte_in, + /* output sock */ cmp_node_channel_matte_out, + /* storage */ "NodeChroma", + /* execfunc */ node_composit_exec_channel_matte }; @@ -5829,7 +5829,7 @@ bNodeType *node_all_composit[]= { &cmp_node_channel_matte, &cmp_node_color_spill, - &cmp_node_translate, + &cmp_node_translate, &cmp_node_rotate, &cmp_node_scale, &cmp_node_flip, diff --git a/source/blender/src/drawnode.c b/source/blender/src/drawnode.c index 010d442557b..fecdaea3866 100644 --- a/source/blender/src/drawnode.c +++ b/source/blender/src/drawnode.c @@ -1336,66 +1336,59 @@ static int node_composit_buts_chroma_matte(uiBlock *block, bNodeTree *ntree, bNo static int node_composit_buts_channel_matte(uiBlock *block, bNodeTree *ntree, bNode *node, rctf *butr) { - if(block) { - short sx= (butr->xmax-butr->xmin)/4; - short cx= (butr->xmax-butr->xmin)/3; - NodeChroma *c=node->storage; - char *c1, *c2, *c3; - - /*color space selectors*/ - uiBlockBeginAlign(block); - uiDefButS(block, ROW,B_NODE_EXEC+node->nr,"RGB", - butr->xmin,butr->ymin+60,sx,20, - &node->custom1,1,1, 0, 0, "RGB Color Space"); - uiDefButS(block, ROW,B_NODE_EXEC+node->nr,"HSV", - butr->xmin+sx,butr->ymin+60,sx,20, - &node->custom1,1,2, 0, 0, "HSV Color Space"); - uiDefButS(block, ROW,B_NODE_EXEC+node->nr,"YUV", - butr->xmin+2*sx,butr->ymin+60,sx,20, - &node->custom1,1,3, 0, 0, "YUV Color Space"); - uiDefButS(block, ROW,B_NODE_EXEC+node->nr,"YCC", - butr->xmin+3*sx,butr->ymin+60,sx,20, - &node->custom1,1,4, 0, 0, "YCbCr Color Space"); - - if (node->custom1==1) { - c1="R"; c2="G"; c3="B"; - } - else if(node->custom1==2){ - c1="H"; c2="S"; c3="V"; - } - else if(node->custom1==3){ - c1="Y"; c2="U"; c3="V"; - } - else { // if(node->custom1==4){ - c1="Y"; c2="Cb"; c3="Cr"; - } - - /*channel selector */ - uiDefButS(block, ROW, B_NODE_EXEC+node->nr, c1, - butr->xmin,butr->ymin+40,cx,20, - &node->custom2,1, 1, 0, 0, "Channel 1"); - uiDefButS(block, ROW, B_NODE_EXEC+node->nr, c2, - butr->xmin+cx,butr->ymin+40,cx,20, - &node->custom2,1, 2, 0, 0, "Channel 2"); - uiDefButS(block, ROW, B_NODE_EXEC+node->nr, c3, - butr->xmin+cx+cx,butr->ymin+40,cx,20, - &node->custom2, 1, 3, 0, 0, "Channel 3"); - - /*tolerance sliders */ - uiDefButF(block, NUMSLI, B_NODE_EXEC+node->nr, "High ", - butr->xmin, butr->ymin+20.0, butr->xmax-butr->xmin, 20, - &c->t1, 0.0f, 1.0f, 100, 0, "Values higher than this setting are 100% opaque"); - uiDefButF(block, NUMSLI, B_NODE_EXEC+node->nr, "Low ", - butr->xmin, butr->ymin, butr->xmax-butr->xmin, 20, - &c->t2, 0.0f, 1.0f, 100, 0, "Values lower than this setting are 100% keyed"); - uiBlockEndAlign(block); - - /*keep t2 (low) less than t1 (high) */ - if(c->t2 > c->t1) { - c->t2=c->t1; - } - } - return 80; + if(block) { + short sx= (butr->xmax-butr->xmin)/4; + short cx= (butr->xmax-butr->xmin)/3; + NodeChroma *c=node->storage; + char *c1, *c2, *c3; + + /*color space selectors*/ + uiBlockBeginAlign(block); + uiDefButS(block, ROW,B_NODE_EXEC+node->nr,"RGB", + butr->xmin,butr->ymin+60,sx,20,&node->custom1,1,1, 0, 0, "RGB Color Space"); + uiDefButS(block, ROW,B_NODE_EXEC+node->nr,"HSV", + butr->xmin+sx,butr->ymin+60,sx,20,&node->custom1,1,2, 0, 0, "HSV Color Space"); + uiDefButS(block, ROW,B_NODE_EXEC+node->nr,"YUV", + butr->xmin+2*sx,butr->ymin+60,sx,20,&node->custom1,1,3, 0, 0, "YUV Color Space"); + uiDefButS(block, ROW,B_NODE_EXEC+node->nr,"YCC", + butr->xmin+3*sx,butr->ymin+60,sx,20,&node->custom1,1,4, 0, 0, "YCbCr Color Space"); + + if (node->custom1==1) { + c1="R"; c2="G"; c3="B"; + } + else if(node->custom1==2){ + c1="H"; c2="S"; c3="V"; + } + else if(node->custom1==3){ + c1="Y"; c2="U"; c3="V"; + } + else { // if(node->custom1==4){ + c1="Y"; c2="Cb"; c3="Cr"; + } + + /*channel selector */ + uiDefButS(block, ROW, B_NODE_EXEC+node->nr, c1, + butr->xmin,butr->ymin+40,cx,20,&node->custom2,1, 1, 0, 0, "Channel 1"); + uiDefButS(block, ROW, B_NODE_EXEC+node->nr, c2, + butr->xmin+cx,butr->ymin+40,cx,20,&node->custom2,1, 2, 0, 0, "Channel 2"); + uiDefButS(block, ROW, B_NODE_EXEC+node->nr, c3, + butr->xmin+cx+cx,butr->ymin+40,cx,20,&node->custom2, 1, 3, 0, 0, "Channel 3"); + + /*tolerance sliders */ + uiDefButF(block, NUMSLI, B_NODE_EXEC+node->nr, "High ", + butr->xmin, butr->ymin+20.0, butr->xmax-butr->xmin, 20, + &c->t1, 0.0f, 1.0f, 100, 0, "Values higher than this setting are 100% opaque"); + uiDefButF(block, NUMSLI, B_NODE_EXEC+node->nr, "Low ", + butr->xmin, butr->ymin, butr->xmax-butr->xmin, 20, + &c->t2, 0.0f, 1.0f, 100, 0, "Values lower than this setting are 100% keyed"); + uiBlockEndAlign(block); + + /*keep t2 (low) less than t1 (high) */ + if(c->t2 > c->t1) { + c->t2=c->t1; + } + } + return 80; } static int node_composit_buts_map_uv(uiBlock *block, bNodeTree *ntree, bNode *node, rctf *butr) |