Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenkernel/intern/freestyle.c
| Show All 38 Lines | |||||
| #include "BKE_linestyle.h" | #include "BKE_linestyle.h" | ||||
| #include "BLI_blenlib.h" | #include "BLI_blenlib.h" | ||||
| #include "BLI_math.h" | #include "BLI_math.h" | ||||
| #include "BLI_string_utils.h" | #include "BLI_string_utils.h" | ||||
| // function declarations | // function declarations | ||||
| static FreestyleLineSet *alloc_lineset(void); | static FreestyleLineSet *alloc_lineset(void); | ||||
| static void copy_lineset(FreestyleLineSet *new_lineset, FreestyleLineSet *lineset); | static void copy_lineset(FreestyleLineSet *new_lineset, FreestyleLineSet *lineset, const int flag); | ||||
| static FreestyleModuleConfig *alloc_module(void); | static FreestyleModuleConfig *alloc_module(void); | ||||
| static void copy_module(FreestyleModuleConfig *new_module, FreestyleModuleConfig *module); | static void copy_module(FreestyleModuleConfig *new_module, FreestyleModuleConfig *module); | ||||
| void BKE_freestyle_config_init(FreestyleConfig *config) | void BKE_freestyle_config_init(FreestyleConfig *config) | ||||
| { | { | ||||
| config->mode = FREESTYLE_CONTROL_EDITOR_MODE; | config->mode = FREESTYLE_CONTROL_EDITOR_MODE; | ||||
| BLI_listbase_clear(&config->modules); | BLI_listbase_clear(&config->modules); | ||||
| Show All 18 Lines | if (lineset->linestyle) { | ||||
| id_us_min(&lineset->linestyle->id); | id_us_min(&lineset->linestyle->id); | ||||
| lineset->linestyle = NULL; | lineset->linestyle = NULL; | ||||
| } | } | ||||
| } | } | ||||
| BLI_freelistN(&config->linesets); | BLI_freelistN(&config->linesets); | ||||
| BLI_freelistN(&config->modules); | BLI_freelistN(&config->modules); | ||||
| } | } | ||||
| void BKE_freestyle_config_copy(FreestyleConfig *new_config, FreestyleConfig *config) | void BKE_freestyle_config_copy(FreestyleConfig *new_config, FreestyleConfig *config, const int flag) | ||||
| { | { | ||||
| FreestyleLineSet *lineset, *new_lineset; | FreestyleLineSet *lineset, *new_lineset; | ||||
| FreestyleModuleConfig *module, *new_module; | FreestyleModuleConfig *module, *new_module; | ||||
| new_config->mode = config->mode; | new_config->mode = config->mode; | ||||
| new_config->flags = config->flags; | new_config->flags = config->flags; | ||||
| new_config->sphere_radius = config->sphere_radius; | new_config->sphere_radius = config->sphere_radius; | ||||
| new_config->dkr_epsilon = config->dkr_epsilon; | new_config->dkr_epsilon = config->dkr_epsilon; | ||||
| new_config->crease_angle = config->crease_angle; | new_config->crease_angle = config->crease_angle; | ||||
| BLI_listbase_clear(&new_config->linesets); | BLI_listbase_clear(&new_config->linesets); | ||||
| for (lineset = (FreestyleLineSet *)config->linesets.first; lineset; lineset = lineset->next) { | for (lineset = (FreestyleLineSet *)config->linesets.first; lineset; lineset = lineset->next) { | ||||
| new_lineset = alloc_lineset(); | new_lineset = alloc_lineset(); | ||||
| copy_lineset(new_lineset, lineset); | copy_lineset(new_lineset, lineset, flag); | ||||
| BLI_addtail(&new_config->linesets, (void *)new_lineset); | BLI_addtail(&new_config->linesets, (void *)new_lineset); | ||||
| } | } | ||||
| BLI_listbase_clear(&new_config->modules); | BLI_listbase_clear(&new_config->modules); | ||||
| for (module = (FreestyleModuleConfig *)config->modules.first; module; module = module->next) { | for (module = (FreestyleModuleConfig *)config->modules.first; module; module = module->next) { | ||||
| new_module = alloc_module(); | new_module = alloc_module(); | ||||
| copy_module(new_module, module); | copy_module(new_module, module); | ||||
| BLI_addtail(&new_config->modules, (void *)new_module); | BLI_addtail(&new_config->modules, (void *)new_module); | ||||
| } | } | ||||
| } | } | ||||
| static void copy_lineset(FreestyleLineSet *new_lineset, FreestyleLineSet *lineset) | static void copy_lineset(FreestyleLineSet *new_lineset, FreestyleLineSet *lineset, const int flag) | ||||
| { | { | ||||
| new_lineset->linestyle = lineset->linestyle; | new_lineset->linestyle = lineset->linestyle; | ||||
| if (new_lineset->linestyle) | |||||
| id_us_plus(&new_lineset->linestyle->id); | |||||
| new_lineset->flags = lineset->flags; | new_lineset->flags = lineset->flags; | ||||
| new_lineset->selection = lineset->selection; | new_lineset->selection = lineset->selection; | ||||
| new_lineset->qi = lineset->qi; | new_lineset->qi = lineset->qi; | ||||
| new_lineset->qi_start = lineset->qi_start; | new_lineset->qi_start = lineset->qi_start; | ||||
| new_lineset->qi_end = lineset->qi_end; | new_lineset->qi_end = lineset->qi_end; | ||||
| new_lineset->edge_types = lineset->edge_types; | new_lineset->edge_types = lineset->edge_types; | ||||
| new_lineset->exclude_edge_types = lineset->exclude_edge_types; | new_lineset->exclude_edge_types = lineset->exclude_edge_types; | ||||
| new_lineset->group = lineset->group; | new_lineset->group = lineset->group; | ||||
| if (new_lineset->group) { | |||||
| id_us_plus(&new_lineset->group->id); | |||||
| } | |||||
| strcpy(new_lineset->name, lineset->name); | strcpy(new_lineset->name, lineset->name); | ||||
| if ((flag & LIB_ID_COPY_NO_USER_REFCOUNT) == 0) { | |||||
| id_us_plus((ID *)new_lineset->linestyle); | |||||
| id_us_plus((ID *)new_lineset->group); | |||||
| } | |||||
| } | } | ||||
| static FreestyleModuleConfig *alloc_module(void) | static FreestyleModuleConfig *alloc_module(void) | ||||
| { | { | ||||
| return (FreestyleModuleConfig *)MEM_callocN(sizeof(FreestyleModuleConfig), "style module configuration"); | return (FreestyleModuleConfig *)MEM_callocN(sizeof(FreestyleModuleConfig), "style module configuration"); | ||||
| } | } | ||||
| FreestyleModuleConfig *BKE_freestyle_module_add(FreestyleConfig *config) | FreestyleModuleConfig *BKE_freestyle_module_add(FreestyleConfig *config) | ||||
| ▲ Show 20 Lines • Show All 125 Lines • Show Last 20 Lines | |||||