FreestyleLineStyle *BKE_copy_linestyle(FreestyleLineStyle *linestyle) { FreestyleLineStyle *new_linestyle; LineStyleModifier *m; new_linestyle = BKE_new_linestyle(linestyle->id.name + 2, NULL); BKE_free_linestyle(new_linestyle); new_linestyle->r = linestyle->r; new_linestyle->g = linestyle->g; new_linestyle->b = linestyle->b; new_linestyle->alpha = linestyle->alpha; new_linestyle->thickness = linestyle->thickness; new_linestyle->thickness_position = linestyle->thickness_position; new_linestyle->thickness_ratio = linestyle->thickness_ratio; new_linestyle->flag = linestyle->flag; new_linestyle->caps = linestyle->caps; new_linestyle->chaining = linestyle->chaining; new_linestyle->rounds = linestyle->rounds; new_linestyle->split_length = linestyle->split_length; new_linestyle->min_angle = linestyle->min_angle; new_linestyle->max_angle = linestyle->max_angle; new_linestyle->min_length = linestyle->min_length; new_linestyle->max_length = linestyle->max_length; new_linestyle->split_dash1 = linestyle->split_dash1; new_linestyle->split_gap1 = linestyle->split_gap1; new_linestyle->split_dash2 = linestyle->split_dash2; new_linestyle->split_gap2 = linestyle->split_gap2; new_linestyle->split_dash3 = linestyle->split_dash3; new_linestyle->split_gap3 = linestyle->split_gap3; new_linestyle->dash1 = linestyle->dash1; new_linestyle->gap1 = linestyle->gap1; new_linestyle->dash2 = linestyle->dash2; new_linestyle->gap2 = linestyle->gap2; new_linestyle->dash3 = linestyle->dash3; new_linestyle->gap3 = linestyle->gap3; new_linestyle->panel = linestyle->panel; for (m = (LineStyleModifier *)linestyle->color_modifiers.first; m; m = m->next) BKE_copy_linestyle_color_modifier(new_linestyle, m); for (m = (LineStyleModifier *)linestyle->alpha_modifiers.first; m; m = m->next) BKE_copy_linestyle_alpha_modifier(new_linestyle, m); for (m = (LineStyleModifier *)linestyle->thickness_modifiers.first; m; m = m->next) BKE_copy_linestyle_thickness_modifier(new_linestyle, m); for (m = (LineStyleModifier *)linestyle->geometry_modifiers.first; m; m = m->next) BKE_copy_linestyle_geometry_modifier(new_linestyle, m); return new_linestyle; }
FreestyleLineStyle *BKE_copy_linestyle(FreestyleLineStyle *linestyle) { FreestyleLineStyle *new_linestyle; LineStyleModifier *m; int a; new_linestyle = BKE_new_linestyle(linestyle->id.name + 2, NULL); BKE_free_linestyle(new_linestyle); for (a = 0; a < MAX_MTEX; a++) { if (linestyle->mtex[a]) { new_linestyle->mtex[a] = MEM_mallocN(sizeof(MTex), "BKE_copy_linestyle"); memcpy(new_linestyle->mtex[a], linestyle->mtex[a], sizeof(MTex)); id_us_plus((ID *)new_linestyle->mtex[a]->tex); } } if (linestyle->nodetree) { linestyle->nodetree = ntreeCopyTree(linestyle->nodetree); } new_linestyle->r = linestyle->r; new_linestyle->g = linestyle->g; new_linestyle->b = linestyle->b; new_linestyle->alpha = linestyle->alpha; new_linestyle->thickness = linestyle->thickness; new_linestyle->thickness_position = linestyle->thickness_position; new_linestyle->thickness_ratio = linestyle->thickness_ratio; new_linestyle->flag = linestyle->flag; new_linestyle->caps = linestyle->caps; new_linestyle->chaining = linestyle->chaining; new_linestyle->rounds = linestyle->rounds; new_linestyle->split_length = linestyle->split_length; new_linestyle->min_angle = linestyle->min_angle; new_linestyle->max_angle = linestyle->max_angle; new_linestyle->min_length = linestyle->min_length; new_linestyle->max_length = linestyle->max_length; new_linestyle->split_dash1 = linestyle->split_dash1; new_linestyle->split_gap1 = linestyle->split_gap1; new_linestyle->split_dash2 = linestyle->split_dash2; new_linestyle->split_gap2 = linestyle->split_gap2; new_linestyle->split_dash3 = linestyle->split_dash3; new_linestyle->split_gap3 = linestyle->split_gap3; new_linestyle->dash1 = linestyle->dash1; new_linestyle->gap1 = linestyle->gap1; new_linestyle->dash2 = linestyle->dash2; new_linestyle->gap2 = linestyle->gap2; new_linestyle->dash3 = linestyle->dash3; new_linestyle->gap3 = linestyle->gap3; new_linestyle->panel = linestyle->panel; new_linestyle->texstep = linestyle->texstep; new_linestyle->pr_texture = linestyle->pr_texture; for (m = (LineStyleModifier *)linestyle->color_modifiers.first; m; m = m->next) BKE_copy_linestyle_color_modifier(new_linestyle, m); for (m = (LineStyleModifier *)linestyle->alpha_modifiers.first; m; m = m->next) BKE_copy_linestyle_alpha_modifier(new_linestyle, m); for (m = (LineStyleModifier *)linestyle->thickness_modifiers.first; m; m = m->next) BKE_copy_linestyle_thickness_modifier(new_linestyle, m); for (m = (LineStyleModifier *)linestyle->geometry_modifiers.first; m; m = m->next) BKE_copy_linestyle_geometry_modifier(new_linestyle, m); return new_linestyle; }