diff options
author | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2014-05-13 04:15:12 +0400 |
---|---|---|
committer | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2014-05-13 11:18:28 +0400 |
commit | a31962287a543c0c41eb5289fa1c7dad0d5cca41 (patch) | |
tree | e4642b9ab79d982b21a837b00f6375cf15fe6a62 /source/blender/blenkernel/intern/linestyle.c | |
parent | 35833662660caf2949bb69de764934d7c03dc901 (diff) |
Freestyle: Added .new() and .remove() methods to collection types of line style modifiers.
Diffstat (limited to 'source/blender/blenkernel/intern/linestyle.c')
-rw-r--r-- | source/blender/blenkernel/intern/linestyle.c | 69 |
1 files changed, 42 insertions, 27 deletions
diff --git a/source/blender/blenkernel/intern/linestyle.c b/source/blender/blenkernel/intern/linestyle.c index 8028bdbc327..8ef966a7288 100644 --- a/source/blender/blenkernel/intern/linestyle.c +++ b/source/blender/blenkernel/intern/linestyle.c @@ -99,7 +99,7 @@ static void default_linestyle_settings(FreestyleLineStyle *linestyle) BLI_listbase_clear(&linestyle->thickness_modifiers); BLI_listbase_clear(&linestyle->geometry_modifiers); - BKE_add_linestyle_geometry_modifier(linestyle, LS_MODIFIER_SAMPLING); + BKE_add_linestyle_geometry_modifier(linestyle, NULL, LS_MODIFIER_SAMPLING); linestyle->caps = LS_CAPS_BUTT; } @@ -209,13 +209,16 @@ FreestyleLineStyle *BKE_copy_linestyle(FreestyleLineStyle *linestyle) return new_linestyle; } -static LineStyleModifier *new_modifier(int type, size_t size) +static LineStyleModifier *new_modifier(const char *name, int type, size_t size) { LineStyleModifier *m; + if (!name) { + name = modifier_name[type]; + } m = (LineStyleModifier *)MEM_callocN(size, "line style modifier"); m->type = type; - BLI_strncpy(m->name, modifier_name[type], sizeof(m->name)); + BLI_strncpy(m->name, name, sizeof(m->name)); m->influence = 1.0f; m->flags = LS_MODIFIER_ENABLED | LS_MODIFIER_EXPANDED; @@ -228,7 +231,7 @@ static void add_to_modifier_list(ListBase *lb, LineStyleModifier *m) BLI_uniquename(lb, m, modifier_name[m->type], '.', offsetof(LineStyleModifier, name), sizeof(m->name)); } -static LineStyleModifier *alloc_color_modifier(int type) +static LineStyleModifier *alloc_color_modifier(const char *name, int type) { size_t size; @@ -249,14 +252,14 @@ static LineStyleModifier *alloc_color_modifier(int type) return NULL; /* unknown modifier type */ } - return new_modifier(type, size); + return new_modifier(name, type, size); } -LineStyleModifier *BKE_add_linestyle_color_modifier(FreestyleLineStyle *linestyle, int type) +LineStyleModifier *BKE_add_linestyle_color_modifier(FreestyleLineStyle *linestyle, const char *name, int type) { LineStyleModifier *m; - m = alloc_color_modifier(type); + m = alloc_color_modifier(name, type); m->blend = MA_RAMP_BLEND; switch (type) { @@ -290,7 +293,7 @@ LineStyleModifier *BKE_copy_linestyle_color_modifier(FreestyleLineStyle *linesty { LineStyleModifier *new_m; - new_m = alloc_color_modifier(m->type); + new_m = alloc_color_modifier(m->name, m->type); new_m->influence = m->influence; new_m->flags = m->flags; new_m->blend = m->blend; @@ -341,8 +344,10 @@ LineStyleModifier *BKE_copy_linestyle_color_modifier(FreestyleLineStyle *linesty return new_m; } -void BKE_remove_linestyle_color_modifier(FreestyleLineStyle *linestyle, LineStyleModifier *m) +int BKE_remove_linestyle_color_modifier(FreestyleLineStyle *linestyle, LineStyleModifier *m) { + if (BLI_findindex(&linestyle->color_modifiers, m) == -1) + return -1; switch (m->type) { case LS_MODIFIER_ALONG_STROKE: MEM_freeN(((LineStyleColorModifier_AlongStroke *)m)->color_ramp); @@ -358,9 +363,10 @@ void BKE_remove_linestyle_color_modifier(FreestyleLineStyle *linestyle, LineStyl break; } BLI_freelinkN(&linestyle->color_modifiers, m); + return 0; } -static LineStyleModifier *alloc_alpha_modifier(int type) +static LineStyleModifier *alloc_alpha_modifier(const char *name, int type) { size_t size; @@ -380,14 +386,14 @@ static LineStyleModifier *alloc_alpha_modifier(int type) default: return NULL; /* unknown modifier type */ } - return new_modifier(type, size); + return new_modifier(name, type, size); } -LineStyleModifier *BKE_add_linestyle_alpha_modifier(FreestyleLineStyle *linestyle, int type) +LineStyleModifier *BKE_add_linestyle_alpha_modifier(FreestyleLineStyle *linestyle, const char *name, int type) { LineStyleModifier *m; - m = alloc_alpha_modifier(type); + m = alloc_alpha_modifier(name, type); m->blend = LS_VALUE_BLEND; switch (type) { @@ -433,7 +439,7 @@ LineStyleModifier *BKE_copy_linestyle_alpha_modifier(FreestyleLineStyle *linesty { LineStyleModifier *new_m; - new_m = alloc_alpha_modifier(m->type); + new_m = alloc_alpha_modifier(m->name, m->type); new_m->influence = m->influence; new_m->flags = m->flags; new_m->blend = m->blend; @@ -487,8 +493,10 @@ LineStyleModifier *BKE_copy_linestyle_alpha_modifier(FreestyleLineStyle *linesty return new_m; } -void BKE_remove_linestyle_alpha_modifier(FreestyleLineStyle *linestyle, LineStyleModifier *m) +int BKE_remove_linestyle_alpha_modifier(FreestyleLineStyle *linestyle, LineStyleModifier *m) { + if (BLI_findindex(&linestyle->alpha_modifiers, m) == -1) + return -1; switch (m->type) { case LS_MODIFIER_ALONG_STROKE: curvemapping_free(((LineStyleAlphaModifier_AlongStroke *)m)->curve); @@ -504,9 +512,10 @@ void BKE_remove_linestyle_alpha_modifier(FreestyleLineStyle *linestyle, LineStyl break; } BLI_freelinkN(&linestyle->alpha_modifiers, m); + return 0; } -static LineStyleModifier *alloc_thickness_modifier(int type) +static LineStyleModifier *alloc_thickness_modifier(const char *name, int type) { size_t size; @@ -530,14 +539,14 @@ static LineStyleModifier *alloc_thickness_modifier(int type) return NULL; /* unknown modifier type */ } - return new_modifier(type, size); + return new_modifier(name, type, size); } -LineStyleModifier *BKE_add_linestyle_thickness_modifier(FreestyleLineStyle *linestyle, int type) +LineStyleModifier *BKE_add_linestyle_thickness_modifier(FreestyleLineStyle *linestyle, const char *name, int type) { LineStyleModifier *m; - m = alloc_thickness_modifier(type); + m = alloc_thickness_modifier(name, type); m->blend = LS_VALUE_BLEND; switch (type) { @@ -599,7 +608,7 @@ LineStyleModifier *BKE_copy_linestyle_thickness_modifier(FreestyleLineStyle *lin { LineStyleModifier *new_m; - new_m = alloc_thickness_modifier(m->type); + new_m = alloc_thickness_modifier(m->name, m->type); if (!new_m) return NULL; new_m->influence = m->influence; @@ -672,8 +681,10 @@ LineStyleModifier *BKE_copy_linestyle_thickness_modifier(FreestyleLineStyle *lin return new_m; } -void BKE_remove_linestyle_thickness_modifier(FreestyleLineStyle *linestyle, LineStyleModifier *m) +int BKE_remove_linestyle_thickness_modifier(FreestyleLineStyle *linestyle, LineStyleModifier *m) { + if (BLI_findindex(&linestyle->thickness_modifiers, m) == -1) + return -1; switch (m->type) { case LS_MODIFIER_ALONG_STROKE: curvemapping_free(((LineStyleThicknessModifier_AlongStroke *)m)->curve); @@ -691,9 +702,10 @@ void BKE_remove_linestyle_thickness_modifier(FreestyleLineStyle *linestyle, Line break; } BLI_freelinkN(&linestyle->thickness_modifiers, m); + return 0; } -static LineStyleModifier *alloc_geometry_modifier(int type) +static LineStyleModifier *alloc_geometry_modifier(const char *name, int type) { size_t size; @@ -741,14 +753,14 @@ static LineStyleModifier *alloc_geometry_modifier(int type) return NULL; /* unknown modifier type */ } - return new_modifier(type, size); + return new_modifier(name, type, size); } -LineStyleModifier *BKE_add_linestyle_geometry_modifier(FreestyleLineStyle *linestyle, int type) +LineStyleModifier *BKE_add_linestyle_geometry_modifier(FreestyleLineStyle *linestyle, const char *name, int type) { LineStyleModifier *m; - m = alloc_geometry_modifier(type); + m = alloc_geometry_modifier(name, type); switch (type) { case LS_MODIFIER_SAMPLING: @@ -866,7 +878,7 @@ LineStyleModifier *BKE_copy_linestyle_geometry_modifier(FreestyleLineStyle *line { LineStyleModifier *new_m; - new_m = alloc_geometry_modifier(m->type); + new_m = alloc_geometry_modifier(m->name, m->type); new_m->flags = m->flags; switch (m->type) { @@ -996,9 +1008,12 @@ LineStyleModifier *BKE_copy_linestyle_geometry_modifier(FreestyleLineStyle *line return new_m; } -void BKE_remove_linestyle_geometry_modifier(FreestyleLineStyle *linestyle, LineStyleModifier *m) +int BKE_remove_linestyle_geometry_modifier(FreestyleLineStyle *linestyle, LineStyleModifier *m) { + if (BLI_findindex(&linestyle->geometry_modifiers, m) == -1) + return -1; BLI_freelinkN(&linestyle->geometry_modifiers, m); + return 0; } static void move_modifier(ListBase *lb, LineStyleModifier *modifier, int direction) |