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
path: root/source
diff options
context:
space:
mode:
authorLukas Toenne <lukas.toenne@googlemail.com>2011-02-10 21:54:49 +0300
committerLukas Toenne <lukas.toenne@googlemail.com>2011-02-10 21:54:49 +0300
commitcbe53cc48d5e4460c2d04d1344bd30a882b2cadb (patch)
tree1756e0745264fa298165d003dc374e2635e5c2ed /source
parentf7595e98828c1e47db934f61cae6dfe65e1b950c (diff)
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.
Diffstat (limited to 'source')
-rw-r--r--source/blender/editors/space_node/drawnode.c20
-rw-r--r--source/blender/makesdna/DNA_node_types.h8
-rw-r--r--source/blender/makesrna/intern/rna_nodetree.c22
-rw-r--r--source/blender/nodes/intern/CMP_nodes/CMP_blur.c14
4 files changed, 47 insertions, 17 deletions
diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c
index 668a7f338f2..42b5835c6df 100644
--- a/source/blender/editors/space_node/drawnode.c
+++ b/source/blender/editors/space_node/drawnode.c
@@ -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_relative", 0, NULL, ICON_NULL);
+ uiItemR(col, ptr, "size_type", 0, NULL, ICON_NULL);
col= uiLayoutColumn(layout, 1);
- if (RNA_boolean_get(ptr, "use_relative")) {
- uiItemR(col, ptr, "factor_x", 0, "X", ICON_NULL);
- uiItemR(col, ptr, "factor_y", 0, "Y", ICON_NULL);
- }
- else {
+ switch (RNA_enum_get(ptr, "size_type")) {
+ case CMP_NODE_BLUR_SIZE_PIXEL:
uiItemR(col, ptr, "size_x", 0, "X", 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;
}
}
diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h
index 0d7edbbce97..85523c3369f 100644
--- a/source/blender/makesdna/DNA_node_types.h
+++ b/source/blender/makesdna/DNA_node_types.h
@@ -216,7 +216,7 @@ typedef struct NodeImageAnim {
typedef struct NodeBlurData {
short sizex, sizey;
- short samples, maxspeed, minspeed, relative;
+ short samples, maxspeed, minspeed, size_type;
float fac, percentx, percenty;
short filtertype;
char bokeh, gamma;
@@ -336,4 +336,10 @@ typedef struct TexNodeOutput {
#define CMP_NODE_CHANNEL_MATTE_CS_YUV 3
#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
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index 8ce2489f286..7c8d57b3191 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -1029,6 +1029,13 @@ static void def_cmp_blur(StructRNA *srna)
{R_FILTER_MITCH, "MITCH", 0, "Mitch", ""},
{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");
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_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
- prop = RNA_def_property(srna, "use_relative", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "relative", 1);
- RNA_def_property_ui_text(prop, "Relative", "Use relative (percent) values to define blur radius");
+ prop = RNA_def_property(srna, "size_type", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "size_type");
+ 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");
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_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_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_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_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_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
diff --git a/source/blender/nodes/intern/CMP_nodes/CMP_blur.c b/source/blender/nodes/intern/CMP_nodes/CMP_blur.c
index 78a27bc5b16..d92ee6924c9 100644
--- a/source/blender/nodes/intern/CMP_nodes/CMP_blur.c
+++ b/source/blender/nodes/intern/CMP_nodes/CMP_blur.c
@@ -577,9 +577,17 @@ static void node_composit_exec_blur(void *data, bNode *node, bNodeStack **in, bN
if(out[0]->hasoutput==0) return;
- if(nbd->relative) {
- nbd->sizex= (int)(nbd->percentx*nbd->image_in_width);
- nbd->sizey= (int)(nbd->percenty*nbd->image_in_height);
+ switch (nbd->size_type) {
+ case CMP_NODE_BLUR_SIZE_WIDTH:
+ 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) {