Freestyle: pass Main struct to new/copy
This commit is contained in:
@@ -41,6 +41,7 @@ extern "C" {
|
||||
struct FreestyleConfig;
|
||||
struct FreestyleLineSet;
|
||||
struct FreestyleModuleConfig;
|
||||
struct Main;
|
||||
|
||||
/* RNA aliases */
|
||||
typedef struct FreestyleSettings FreestyleSettings;
|
||||
@@ -58,7 +59,7 @@ bool BKE_freestyle_module_move_up(FreestyleConfig *config, FreestyleModuleConfig
|
||||
bool BKE_freestyle_module_move_down(FreestyleConfig *config, FreestyleModuleConfig *module_conf);
|
||||
|
||||
/* FreestyleConfig.linesets */
|
||||
FreestyleLineSet *BKE_freestyle_lineset_add(FreestyleConfig *config, const char *name);
|
||||
FreestyleLineSet *BKE_freestyle_lineset_add(struct Main *bmain, FreestyleConfig *config, const char *name);
|
||||
bool BKE_freestyle_lineset_delete(FreestyleConfig *config, FreestyleLineSet *lineset);
|
||||
FreestyleLineSet *BKE_freestyle_lineset_get_active(FreestyleConfig *config);
|
||||
short BKE_freestyle_lineset_get_active_index(FreestyleConfig *config);
|
||||
|
||||
@@ -49,9 +49,9 @@ struct Object;
|
||||
struct ColorBand;
|
||||
struct bContext;
|
||||
|
||||
FreestyleLineStyle *BKE_linestyle_new(const char *name, struct Main *main);
|
||||
FreestyleLineStyle *BKE_linestyle_new(struct Main *bmain, const char *name);
|
||||
void BKE_linestyle_free(FreestyleLineStyle *linestyle);
|
||||
FreestyleLineStyle *BKE_linestyle_copy(FreestyleLineStyle *linestyle);
|
||||
FreestyleLineStyle *BKE_linestyle_copy(struct Main *bmain, FreestyleLineStyle *linestyle);
|
||||
|
||||
FreestyleLineStyle *BKE_linestyle_active_from_scene(struct Scene *scene);
|
||||
|
||||
|
||||
@@ -179,7 +179,7 @@ static FreestyleLineSet *alloc_lineset(void)
|
||||
return (FreestyleLineSet *)MEM_callocN(sizeof(FreestyleLineSet), "Freestyle line set");
|
||||
}
|
||||
|
||||
FreestyleLineSet *BKE_freestyle_lineset_add(FreestyleConfig *config, const char *name)
|
||||
FreestyleLineSet *BKE_freestyle_lineset_add(struct Main *bmain, FreestyleConfig *config, const char *name)
|
||||
{
|
||||
int lineset_index = BLI_listbase_count(&config->linesets);
|
||||
|
||||
@@ -187,7 +187,7 @@ FreestyleLineSet *BKE_freestyle_lineset_add(FreestyleConfig *config, const char
|
||||
BLI_addtail(&config->linesets, (void *)lineset);
|
||||
BKE_freestyle_lineset_set_active_index(config, lineset_index);
|
||||
|
||||
lineset->linestyle = BKE_linestyle_new("LineStyle", NULL);
|
||||
lineset->linestyle = BKE_linestyle_new(bmain, "LineStyle");
|
||||
lineset->flags |= FREESTYLE_LINESET_ENABLED;
|
||||
lineset->selection = FREESTYLE_SEL_VISIBILITY | FREESTYLE_SEL_EDGE_TYPES | FREESTYLE_SEL_IMAGE_BORDER;
|
||||
lineset->qi = FREESTYLE_QI_VISIBLE;
|
||||
|
||||
@@ -384,7 +384,7 @@ bool id_copy(ID *id, ID **newid, bool test)
|
||||
if (!test) *newid = (ID *)BKE_mask_copy((Mask *)id);
|
||||
return true;
|
||||
case ID_LS:
|
||||
if (!test) *newid = (ID *)BKE_linestyle_copy((FreestyleLineStyle *)id);
|
||||
if (!test) *newid = (ID *)BKE_linestyle_copy(G.main, (FreestyleLineStyle *)id);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -107,14 +107,11 @@ static void default_linestyle_settings(FreestyleLineStyle *linestyle)
|
||||
linestyle->caps = LS_CAPS_BUTT;
|
||||
}
|
||||
|
||||
FreestyleLineStyle *BKE_linestyle_new(const char *name, struct Main *main)
|
||||
FreestyleLineStyle *BKE_linestyle_new(struct Main *bmain, const char *name)
|
||||
{
|
||||
FreestyleLineStyle *linestyle;
|
||||
|
||||
if (!main)
|
||||
main = G.main;
|
||||
|
||||
linestyle = (FreestyleLineStyle *)BKE_libblock_alloc(main, ID_LS, name);
|
||||
linestyle = (FreestyleLineStyle *)BKE_libblock_alloc(bmain, ID_LS, name);
|
||||
|
||||
default_linestyle_settings(linestyle);
|
||||
|
||||
@@ -149,13 +146,13 @@ void BKE_linestyle_free(FreestyleLineStyle *linestyle)
|
||||
BKE_linestyle_geometry_modifier_remove(linestyle, m);
|
||||
}
|
||||
|
||||
FreestyleLineStyle *BKE_linestyle_copy(FreestyleLineStyle *linestyle)
|
||||
FreestyleLineStyle *BKE_linestyle_copy(struct Main *bmain, FreestyleLineStyle *linestyle)
|
||||
{
|
||||
FreestyleLineStyle *new_linestyle;
|
||||
LineStyleModifier *m;
|
||||
int a;
|
||||
|
||||
new_linestyle = BKE_linestyle_new(linestyle->id.name + 2, NULL);
|
||||
new_linestyle = BKE_linestyle_new(bmain, linestyle->id.name + 2);
|
||||
BKE_linestyle_free(new_linestyle);
|
||||
|
||||
for (a = 0; a < MAX_MTEX; a++) {
|
||||
|
||||
@@ -731,10 +731,11 @@ void SCENE_OT_freestyle_module_move(wmOperatorType *ot)
|
||||
|
||||
static int freestyle_lineset_add_exec(bContext *C, wmOperator *UNUSED(op))
|
||||
{
|
||||
Main *bmain = CTX_data_main(C);
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
SceneRenderLayer *srl = BLI_findlink(&scene->r.layers, scene->r.actlay);
|
||||
|
||||
BKE_freestyle_lineset_add(&srl->freestyleConfig, NULL);
|
||||
BKE_freestyle_lineset_add(bmain, &srl->freestyleConfig, NULL);
|
||||
|
||||
DAG_id_tag_update(&scene->id, 0);
|
||||
WM_event_add_notifier(C, NC_SCENE | ND_RENDER_OPTIONS, scene);
|
||||
@@ -893,6 +894,7 @@ void SCENE_OT_freestyle_lineset_move(wmOperatorType *ot)
|
||||
|
||||
static int freestyle_linestyle_new_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Main *bmain = CTX_data_main(C);
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
SceneRenderLayer *srl = BLI_findlink(&scene->r.layers, scene->r.actlay);
|
||||
FreestyleLineSet *lineset = BKE_freestyle_lineset_get_active(&srl->freestyleConfig);
|
||||
@@ -903,10 +905,10 @@ static int freestyle_linestyle_new_exec(bContext *C, wmOperator *op)
|
||||
}
|
||||
if (lineset->linestyle) {
|
||||
lineset->linestyle->id.us--;
|
||||
lineset->linestyle = BKE_linestyle_copy(lineset->linestyle);
|
||||
lineset->linestyle = BKE_linestyle_copy(bmain, lineset->linestyle);
|
||||
}
|
||||
else {
|
||||
lineset->linestyle = BKE_linestyle_new("LineStyle", NULL);
|
||||
lineset->linestyle = BKE_linestyle_new(bmain, "LineStyle");
|
||||
}
|
||||
DAG_id_tag_update(&lineset->linestyle->id, 0);
|
||||
WM_event_add_notifier(C, NC_LINESTYLE, lineset->linestyle);
|
||||
|
||||
@@ -705,7 +705,7 @@ static void rna_Main_grease_pencil_remove(Main *bmain, ReportList *reports, Poin
|
||||
|
||||
static FreestyleLineStyle *rna_Main_linestyles_new(Main *bmain, const char *name)
|
||||
{
|
||||
FreestyleLineStyle *linestyle = BKE_linestyle_new(name, bmain);
|
||||
FreestyleLineStyle *linestyle = BKE_linestyle_new(bmain, name);
|
||||
id_us_min(&linestyle->id);
|
||||
return linestyle;
|
||||
}
|
||||
|
||||
@@ -1636,10 +1636,10 @@ static void rna_FreestyleLineSet_linestyle_set(PointerRNA *ptr, PointerRNA value
|
||||
lineset->linestyle->id.us++;
|
||||
}
|
||||
|
||||
static FreestyleLineSet *rna_FreestyleSettings_lineset_add(ID *id, FreestyleSettings *config, const char *name)
|
||||
static FreestyleLineSet *rna_FreestyleSettings_lineset_add(ID *id, FreestyleSettings *config, Main *bmain, const char *name)
|
||||
{
|
||||
Scene *scene = (Scene *)id;
|
||||
FreestyleLineSet *lineset = BKE_freestyle_lineset_add((FreestyleConfig *)config, name);
|
||||
FreestyleLineSet *lineset = BKE_freestyle_lineset_add(bmain, (FreestyleConfig *)config, name);
|
||||
|
||||
DAG_id_tag_update(&scene->id, 0);
|
||||
WM_main_add_notifier(NC_SCENE | ND_RENDER_OPTIONS, NULL);
|
||||
@@ -2841,7 +2841,7 @@ static void rna_def_freestyle_linesets(BlenderRNA *brna, PropertyRNA *cprop)
|
||||
|
||||
func = RNA_def_function(srna, "new", "rna_FreestyleSettings_lineset_add");
|
||||
RNA_def_function_ui_description(func, "Add a line set to scene render layer Freestyle settings");
|
||||
RNA_def_function_flag(func, FUNC_USE_SELF_ID);
|
||||
RNA_def_function_flag(func, FUNC_USE_MAIN | FUNC_USE_SELF_ID);
|
||||
parm = RNA_def_string(func, "name", "LineSet", 0, "", "New name for the line set (not unique)");
|
||||
RNA_def_property_flag(parm, PROP_REQUIRED);
|
||||
parm = RNA_def_pointer(func, "lineset", "FreestyleLineSet", "", "Newly created line set");
|
||||
|
||||
Reference in New Issue
Block a user