Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2006-11-15 17:41:04 +0300
committerTon Roosendaal <ton@blender.org>2006-11-15 17:41:04 +0300
commit5d8efc975699ae5ca60aa2892d96dd3e361b9c1d (patch)
treef809fd11332107b9e204ad5a855884505a615abd /source/blender/src
parentd6e96bd6059d264957a67f24fcce98b8de9c8d40 (diff)
Patch #2307, by Bob Holcomb
Loadsa new compo nodes, most added in new menu "Mattes". - Seperate into YCC - Combine YCC - Seperate into YUV - Combine YUV - (Chroma) Difference Matte - Chroma Key - Luminance Key - Color Spill correction Main problem is missing docs still... Bob is working on it, he'll also make tooltips for all buttons. Some UI things might change too, like more clear names.
Diffstat (limited to 'source/blender/src')
-rw-r--r--source/blender/src/drawnode.c145
-rw-r--r--source/blender/src/toolbox.c6
2 files changed, 149 insertions, 2 deletions
diff --git a/source/blender/src/drawnode.c b/source/blender/src/drawnode.c
index f7df77c3640..196086799c8 100644
--- a/source/blender/src/drawnode.c
+++ b/source/blender/src/drawnode.c
@@ -1027,6 +1027,136 @@ static int node_composit_buts_dilateerode(uiBlock *block, bNodeTree *ntree, bNod
return 20;
}
+static int node_composit_buts_diff_matte(uiBlock *block, bNodeTree *ntree, bNode *node, rctf *butr)
+{
+ if(block) {
+ short sx= (butr->xmax-butr->xmin)/4;
+ short dx= (butr->xmax-butr->xmin)/3;
+ NodeChroma *c= node->storage;
+
+ uiBlockBeginAlign(block);
+ /*color space selectors*/
+ 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");
+ /*channel tolorences*/
+ uiDefButF(block, NUM, B_NODE_EXEC+node->nr, " ",
+ butr->xmin, butr->ymin+40, dx, 20,
+ &c->t1, 0.0f, 1.0f, 100, 0, "Channel 1 Tolerance");
+ uiDefButF(block, NUM, B_NODE_EXEC+node->nr, " ",
+ butr->xmin+dx, butr->ymin+40, dx, 20,
+ &c->t2, 0.0f, 1.0f, 100, 0, "Channel 2 Tolorence");
+ uiDefButF(block, NUM, B_NODE_EXEC+node->nr, " ",
+ butr->xmin+2*dx, butr->ymin+40, dx, 20,
+ &c->t3, 0.0f, 1.0f, 100, 0, "Channel 3 Tolorence");
+ /*falloff parameters*/
+ /*
+ uiDefButF(block, NUMSLI, B_NODE_EXEC+node->nr, "Falloff Size ",
+ butr->xmin, butr->ymin+20, butr->xmax-butr->xmin, 20,
+ &c->fsize, 0.0f, 1.0f, 100, 0, "");
+ */
+ uiDefButF(block, NUMSLI, B_NODE_EXEC+node->nr, "Falloff: ",
+ butr->xmin, butr->ymin+20, butr->xmax-butr->xmin, 20,
+ &c->fstrength, 0.0f, 1.0f, 100, 0, "");
+ }
+ return 80;
+}
+
+static int node_composit_buts_color_spill(uiBlock *block, bNodeTree *ntree, bNode *node, rctf *butr)
+{
+ if(block) {
+ short dx= (butr->xmax-butr->xmin)/3;
+
+ NodeChroma *c=node->storage;
+ uiBlockBeginAlign(block);
+ uiDefButF(block, NUM, B_NODE_EXEC+node->nr, "Enhance: ",
+ butr->xmin, butr->ymin+20.0, butr->xmax-butr->xmin, 20,
+ &c->t1, 0.0f, 0.5f, 100, 2, "");
+ uiDefButS(block, ROW, B_NODE_EXEC+node->nr, "R",
+ butr->xmin,butr->ymin,dx,20,
+ &node->custom1,1,1, 0, 0, "Red Spill Suppression");
+ uiDefButS(block, ROW, B_NODE_EXEC+node->nr, "G",
+ butr->xmin+dx,butr->ymin,dx,20,
+ &node->custom1,1,2, 0, 0, "Green Spill Suppression");
+ uiDefButS(block, ROW, B_NODE_EXEC+node->nr, "B",
+ butr->xmin+2*dx,butr->ymin,dx,20,
+ &node->custom1, 1, 3, 0, 0, "Blue Spill Suppression");
+ uiBlockEndAlign(block);
+ }
+ return 60;
+ }
+
+static int node_composit_buts_chroma_matte(uiBlock *block, bNodeTree *ntree, bNode *node, rctf *butr)
+{
+ if(block) {
+ short dx= (butr->xmax-butr->xmin)/2;
+
+ NodeChroma *c= node->storage;
+ uiBlockBeginAlign(block);
+
+ uiDefButS(block, ROW, B_NODE_EXEC+node->nr,"Green",
+ butr->xmin,butr->ymin+80,dx,20,
+ &node->custom1,1,1, 0, 0, "Green Background");
+ uiDefButS(block, ROW, B_NODE_EXEC+node->nr,"Blue",
+ butr->xmin+dx,butr->ymin+80,dx,20,
+ &node->custom1,1,2, 0, 0, "Blue Background");
+
+ uiDefButF(block, NUM, B_NODE_EXEC+node->nr, "Cb Slope ",
+ butr->xmin, butr->ymin+60, dx, 20,
+ &c->t1, 0.0f, 20.0f, 100, 0, " ");
+
+ uiDefButF(block, NUM, B_NODE_EXEC+node->nr, "Cr slope ",
+ butr->xmin+dx, butr->ymin+60, dx, 20,
+ &c->t3, 0.0f, 20.0f, 100, 0, " ");
+
+ uiDefButF(block, NUM, B_NODE_EXEC+node->nr, "Cb Pos ",
+ butr->xmin, butr->ymin+40, dx, 20,
+ &c->t2, 0.0f, 1.0f, 100, 0, " ");
+
+ uiDefButF(block, NUM, B_NODE_EXEC+node->nr, "Cr pos ",
+ butr->xmin+dx, butr->ymin+40, dx, 20,
+ &c->fsize, 0.0f, 1.0f, 100, 0, " ");
+
+ uiDefButF(block, NUMSLI, B_NODE_EXEC+node->nr, "Threshold ",
+ butr->xmin, butr->ymin+20, butr->xmax-butr->xmin, 20,
+ &c->fstrength, 0.0f, 0.25f, 100, 0, " ");
+ uiDefButF(block, NUMSLI, B_NODE_EXEC+node->nr, "Alpha Threshold ",
+ butr->xmin, butr->ymin, butr->xmax-butr->xmin, 20,
+ &c->falpha, 0.0f, 1.0f, 100, 0, " ");
+ }
+ return 100;
+}
+
+static int node_composit_buts_luma_matte(uiBlock *block, bNodeTree *ntree, bNode *node, rctf *butr)
+{
+ if(block) {
+ NodeChroma *c=node->storage;
+ uiBlockBeginAlign(block);
+ 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, "");
+ 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, "");
+ uiBlockEndAlign(block);
+
+ /*keep t2 (low) less than t1 (high) */
+ if(c->t2 > c->t1) {
+ c->t2=c->t1;
+ }
+ }
+ return 60;
+ }
+
/* allocate sufficient! */
static void node_imagetype_string(char *str)
{
@@ -1184,9 +1314,22 @@ static void node_composit_set_butfunc(bNodeType *ntype)
case CMP_NODE_OUTPUT_FILE:
ntype->butfunc= node_composit_buts_file_output;
break;
+
+ case CMP_NODE_DIFF_MATTE:
+ ntype->butfunc=node_composit_buts_diff_matte;
+ break;
+ case CMP_NODE_COLOR_SPILL:
+ ntype->butfunc=node_composit_buts_color_spill;
+ break;
+ case CMP_NODE_CHROMA:
+ ntype->butfunc=node_composit_buts_chroma_matte;
+ break;
case CMP_NODE_SCALE:
ntype->butfunc= node_composit_buts_scale;
break;
+ case CMP_NODE_LUMA:
+ ntype->butfunc= node_composit_buts_luma_matte;
+ break;
default:
ntype->butfunc= NULL;
}
@@ -1494,7 +1637,7 @@ static void node_update(bNode *node)
else {
float oldh= node->prvr.ymax - node->prvr.ymin;
if(oldh==0.0f)
- oldh= node->width-NODE_DY;
+ oldh= 0.6f*node->width-NODE_DY;
dy-= NODE_DYS/2;
node->prvr.ymax= dy;
node->prvr.ymin= dy - oldh;
diff --git a/source/blender/src/toolbox.c b/source/blender/src/toolbox.c
index 4ce4045a170..eefba19b718 100644
--- a/source/blender/src/toolbox.c
+++ b/source/blender/src/toolbox.c
@@ -1548,6 +1548,7 @@ static TBitem tb_node_addsh[]= {
#define TB_CMP_OP_FILTER 4
#define TB_CMP_CONVERTORS 5
#define TB_CMP_GROUPS 6
+#define TB_CMP_MATTE 7
static TBitem tb_node_addcomp[]= {
{ 0, "Input", 1, NULL},
@@ -1557,6 +1558,7 @@ static TBitem tb_node_addcomp[]= {
{ 0, "Filters", 5, NULL},
{ 0, "Convertors", 6, NULL},
{ 0, "Groups", 7, NULL},
+ { 0, "Mattes", 8, NULL},
{ -1, "", 0, NULL}};
/* do_node_addmenu() in header_node.c, prototype in BSE_headerbuttons.h */
@@ -1758,7 +1760,7 @@ void toolbox_n(void)
TBitem *menu1=NULL, *menu2=NULL, *menu3=NULL;
TBitem *menu4=NULL, *menu5=NULL, *menu6=NULL;
TBitem *menu7=NULL, *groupmenu= NULL;
- TBitem *node_add_gen= NULL, *node_add_group= NULL, *node_add_out= NULL, *node_add_in= NULL;
+ TBitem *node_add_gen= NULL, *node_add_group= NULL,*node_add_matte=NULL, *node_add_out= NULL, *node_add_in= NULL;
TBitem *node_add_op_col= NULL, *node_add_op_filt= NULL, *node_add_op_vec= NULL, *node_add_con= NULL;
int dx=0;
short event, mval[2], tot=0;
@@ -1940,6 +1942,7 @@ void toolbox_n(void)
node_add_op_vec= node_add_sublevel(&menu1[TB_CMP_OP_VECTOR].poin, snode->nodetree, NODE_CLASS_OP_VECTOR);
node_add_con= node_add_sublevel(&menu1[TB_CMP_CONVERTORS].poin, snode->nodetree, NODE_CLASS_CONVERTOR);
node_add_group= node_add_sublevel(&menu1[TB_CMP_GROUPS].poin, snode->nodetree, NODE_CLASS_GROUP);
+ node_add_matte= node_add_sublevel(&menu1[TB_CMP_MATTE].poin,snode->nodetree, NODE_CLASS_MATTE);
}
dx= 96;
@@ -2040,6 +2043,7 @@ void toolbox_n(void)
if(node_add_con) MEM_freeN(node_add_con);
if(node_add_gen) MEM_freeN(node_add_gen);
if(node_add_group) MEM_freeN(node_add_group);
+ if(node_add_matte) MEM_freeN(node_add_matte);
mywinset(curarea->win);
}