More options for the blur node filter size. This can now be pixel based or relative to both axes or just either width or height.
This commit is contained in:
@@ -548,15 +548,23 @@ static void node_composit_buts_blur(uiLayout *layout, bContext *UNUSED(C), Point
|
|||||||
uiItemR(col, ptr, "use_gamma_correction", 0, NULL, ICON_NULL);
|
uiItemR(col, ptr, "use_gamma_correction", 0, NULL, ICON_NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
uiItemR(col, ptr, "use_relative", 0, NULL, ICON_NULL);
|
uiItemR(col, ptr, "size_type", 0, NULL, ICON_NULL);
|
||||||
col= uiLayoutColumn(layout, 1);
|
col= uiLayoutColumn(layout, 1);
|
||||||
if (RNA_boolean_get(ptr, "use_relative")) {
|
switch (RNA_enum_get(ptr, "size_type")) {
|
||||||
uiItemR(col, ptr, "factor_x", 0, "X", ICON_NULL);
|
case CMP_NODE_BLUR_SIZE_PIXEL:
|
||||||
uiItemR(col, ptr, "factor_y", 0, "Y", ICON_NULL);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
uiItemR(col, ptr, "size_x", 0, "X", ICON_NULL);
|
uiItemR(col, ptr, "size_x", 0, "X", ICON_NULL);
|
||||||
uiItemR(col, ptr, "size_y", 0, "Y", ICON_NULL);
|
uiItemR(col, ptr, "size_y", 0, "Y", ICON_NULL);
|
||||||
|
break;
|
||||||
|
case CMP_NODE_BLUR_SIZE_WIDTH:
|
||||||
|
uiItemR(col, ptr, "factor_x", 0, "X", ICON_NULL);
|
||||||
|
break;
|
||||||
|
case CMP_NODE_BLUR_SIZE_HEIGHT:
|
||||||
|
uiItemR(col, ptr, "factor_y", 0, "Y", ICON_NULL);
|
||||||
|
break;
|
||||||
|
case CMP_NODE_BLUR_SIZE_BOTH:
|
||||||
|
uiItemR(col, ptr, "factor_x", 0, "X", ICON_NULL);
|
||||||
|
uiItemR(col, ptr, "factor_y", 0, "Y", ICON_NULL);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -216,7 +216,7 @@ typedef struct NodeImageAnim {
|
|||||||
|
|
||||||
typedef struct NodeBlurData {
|
typedef struct NodeBlurData {
|
||||||
short sizex, sizey;
|
short sizex, sizey;
|
||||||
short samples, maxspeed, minspeed, relative;
|
short samples, maxspeed, minspeed, size_type;
|
||||||
float fac, percentx, percenty;
|
float fac, percentx, percenty;
|
||||||
short filtertype;
|
short filtertype;
|
||||||
char bokeh, gamma;
|
char bokeh, gamma;
|
||||||
@@ -336,4 +336,10 @@ typedef struct TexNodeOutput {
|
|||||||
#define CMP_NODE_CHANNEL_MATTE_CS_YUV 3
|
#define CMP_NODE_CHANNEL_MATTE_CS_YUV 3
|
||||||
#define CMP_NODE_CHANNEL_MATTE_CS_YCC 4
|
#define CMP_NODE_CHANNEL_MATTE_CS_YCC 4
|
||||||
|
|
||||||
|
/* comp blur relative filter size */
|
||||||
|
#define CMP_NODE_BLUR_SIZE_PIXEL 0
|
||||||
|
#define CMP_NODE_BLUR_SIZE_WIDTH 1
|
||||||
|
#define CMP_NODE_BLUR_SIZE_HEIGHT 2
|
||||||
|
#define CMP_NODE_BLUR_SIZE_BOTH 3
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1029,6 +1029,13 @@ static void def_cmp_blur(StructRNA *srna)
|
|||||||
{R_FILTER_MITCH, "MITCH", 0, "Mitch", ""},
|
{R_FILTER_MITCH, "MITCH", 0, "Mitch", ""},
|
||||||
{0, NULL, 0, NULL, NULL}};
|
{0, NULL, 0, NULL, NULL}};
|
||||||
|
|
||||||
|
static EnumPropertyItem size_type_items[] = {
|
||||||
|
{CMP_NODE_BLUR_SIZE_PIXEL, "PIXEL", 0, "Pixel", ""},
|
||||||
|
{CMP_NODE_BLUR_SIZE_WIDTH, "WIDTH", 0, "Width", ""},
|
||||||
|
{CMP_NODE_BLUR_SIZE_HEIGHT, "HEIGHT", 0, "Height", ""},
|
||||||
|
{CMP_NODE_BLUR_SIZE_BOTH, "BOTH", 0, "Both", ""},
|
||||||
|
{0, NULL, 0, NULL, NULL}};
|
||||||
|
|
||||||
RNA_def_struct_sdna_from(srna, "NodeBlurData", "storage");
|
RNA_def_struct_sdna_from(srna, "NodeBlurData", "storage");
|
||||||
|
|
||||||
prop = RNA_def_property(srna, "size_x", PROP_INT, PROP_NONE);
|
prop = RNA_def_property(srna, "size_x", PROP_INT, PROP_NONE);
|
||||||
@@ -1043,9 +1050,10 @@ static void def_cmp_blur(StructRNA *srna)
|
|||||||
RNA_def_property_ui_text(prop, "Size Y", "");
|
RNA_def_property_ui_text(prop, "Size Y", "");
|
||||||
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
|
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
|
||||||
|
|
||||||
prop = RNA_def_property(srna, "use_relative", PROP_BOOLEAN, PROP_NONE);
|
prop = RNA_def_property(srna, "size_type", PROP_ENUM, PROP_NONE);
|
||||||
RNA_def_property_boolean_sdna(prop, NULL, "relative", 1);
|
RNA_def_property_enum_sdna(prop, NULL, "size_type");
|
||||||
RNA_def_property_ui_text(prop, "Relative", "Use relative (percent) values to define blur radius");
|
RNA_def_property_enum_items(prop, size_type_items);
|
||||||
|
RNA_def_property_ui_text(prop, "Size Type", "Mode of filter size calculation");
|
||||||
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
|
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
|
||||||
|
|
||||||
prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_NONE);
|
prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_NONE);
|
||||||
@@ -1054,15 +1062,15 @@ static void def_cmp_blur(StructRNA *srna)
|
|||||||
RNA_def_property_ui_text(prop, "Factor", "");
|
RNA_def_property_ui_text(prop, "Factor", "");
|
||||||
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
|
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
|
||||||
|
|
||||||
prop = RNA_def_property(srna, "factor_x", PROP_FLOAT, PROP_NONE);
|
prop = RNA_def_property(srna, "factor_x", PROP_FLOAT, PROP_PERCENTAGE);
|
||||||
RNA_def_property_float_sdna(prop, NULL, "percentx");
|
RNA_def_property_float_sdna(prop, NULL, "percentx");
|
||||||
RNA_def_property_range(prop, 0.0f, 1.0f);
|
RNA_def_property_range(prop, 0.0f, 100.0f);
|
||||||
RNA_def_property_ui_text(prop, "Relative Size X", "");
|
RNA_def_property_ui_text(prop, "Relative Size X", "");
|
||||||
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
|
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
|
||||||
|
|
||||||
prop = RNA_def_property(srna, "factor_y", PROP_FLOAT, PROP_NONE);
|
prop = RNA_def_property(srna, "factor_y", PROP_FLOAT, PROP_PERCENTAGE);
|
||||||
RNA_def_property_float_sdna(prop, NULL, "percenty");
|
RNA_def_property_float_sdna(prop, NULL, "percenty");
|
||||||
RNA_def_property_range(prop, 0.0f, 1.0f);
|
RNA_def_property_range(prop, 0.0f, 100.0f);
|
||||||
RNA_def_property_ui_text(prop, "Relative Size Y", "");
|
RNA_def_property_ui_text(prop, "Relative Size Y", "");
|
||||||
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
|
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
|
||||||
|
|
||||||
|
|||||||
@@ -577,9 +577,17 @@ static void node_composit_exec_blur(void *data, bNode *node, bNodeStack **in, bN
|
|||||||
|
|
||||||
if(out[0]->hasoutput==0) return;
|
if(out[0]->hasoutput==0) return;
|
||||||
|
|
||||||
if(nbd->relative) {
|
switch (nbd->size_type) {
|
||||||
nbd->sizex= (int)(nbd->percentx*nbd->image_in_width);
|
case CMP_NODE_BLUR_SIZE_WIDTH:
|
||||||
nbd->sizey= (int)(nbd->percenty*nbd->image_in_height);
|
nbd->sizex= nbd->sizey= (int)(nbd->percentx*0.01f*nbd->image_in_width);
|
||||||
|
break;
|
||||||
|
case CMP_NODE_BLUR_SIZE_HEIGHT:
|
||||||
|
nbd->sizex= nbd->sizey= (int)(nbd->percenty*0.01f*nbd->image_in_height);
|
||||||
|
break;
|
||||||
|
case CMP_NODE_BLUR_SIZE_BOTH:
|
||||||
|
nbd->sizex= (int)(nbd->percentx*0.01f*nbd->image_in_width);
|
||||||
|
nbd->sizey= (int)(nbd->percenty*0.01f*nbd->image_in_height);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nbd->sizex==0 && nbd->sizey==0) {
|
if (nbd->sizex==0 && nbd->sizey==0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user