From 9d2d3a8be7c3c0b101e7f0f33bb1a04c69deaf67 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Mon, 17 Aug 2009 02:49:31 +0000 Subject: 2.5 Paint: * Converted vertex paint and weight paint to use the new Paint type --- source/blender/blenkernel/BKE_brush.h | 4 ++-- source/blender/blenkernel/BKE_paint.h | 1 + source/blender/blenkernel/intern/brush.c | 8 ++++---- source/blender/blenkernel/intern/paint.c | 27 ++++++++++++++++++++------- source/blender/blenkernel/intern/scene.c | 12 ++++++++---- 5 files changed, 35 insertions(+), 17 deletions(-) (limited to 'source/blender/blenkernel') diff --git a/source/blender/blenkernel/BKE_brush.h b/source/blender/blenkernel/BKE_brush.h index dfbc6b284ff..6ec988e111e 100644 --- a/source/blender/blenkernel/BKE_brush.h +++ b/source/blender/blenkernel/BKE_brush.h @@ -44,9 +44,9 @@ void make_local_brush(struct Brush *brush); void free_brush(struct Brush *brush); /* brush library operations used by different paint panels */ -int brush_set_nr(struct Brush **current_brush, int nr); +int brush_set_nr(struct Brush **current_brush, int nr, const char *name); int brush_delete(struct Brush **current_brush); -void brush_check_exists(struct Brush **brush); +void brush_check_exists(struct Brush **brush, const char *name); void brush_toggled_fake_user(struct Brush *brush); int brush_texture_set_nr(struct Brush *brush, int nr); int brush_texture_delete(struct Brush *brush); diff --git a/source/blender/blenkernel/BKE_paint.h b/source/blender/blenkernel/BKE_paint.h index 4232ac104d4..ae18d0e9561 100644 --- a/source/blender/blenkernel/BKE_paint.h +++ b/source/blender/blenkernel/BKE_paint.h @@ -33,6 +33,7 @@ struct Object; struct Paint; struct Scene; +void paint_init(Paint *p, const char *brush_name); void free_paint(Paint *p); void copy_paint(Paint *orig, Paint *new); diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index ebde6e0077f..3524550925e 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -186,7 +186,7 @@ void make_local_brush(Brush *brush) /* Library Operations */ -int brush_set_nr(Brush **current_brush, int nr) +int brush_set_nr(Brush **current_brush, int nr, const char *name) { ID *idtest, *id; @@ -195,7 +195,7 @@ int brush_set_nr(Brush **current_brush, int nr) if(idtest==0) { /* new brush */ if(id) idtest= (ID *)copy_brush((Brush *)id); - else idtest= (ID *)add_brush("Brush"); + else idtest= (ID *)add_brush(name); idtest->us--; } if(idtest!=id) { @@ -369,10 +369,10 @@ int brush_clone_image_delete(Brush *brush) return 0; } -void brush_check_exists(Brush **brush) +void brush_check_exists(Brush **brush, const char *name) { if(*brush==NULL) - brush_set_nr(brush, 1); + brush_set_nr(brush, 1, name); } /* Brush Sampling */ diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c index 3f6eed8528a..8e774e4c85a 100644 --- a/source/blender/blenkernel/intern/paint.c +++ b/source/blender/blenkernel/intern/paint.c @@ -41,17 +41,20 @@ Paint *paint_get_active(Scene *sce) { if(sce && sce->basact && sce->basact->object) { + ToolSettings *ts = sce->toolsettings; + switch(sce->basact->object->mode) { case OB_MODE_SCULPT: - return &sce->toolsettings->sculpt->paint; + return &ts->sculpt->paint; + case OB_MODE_VERTEX_PAINT: + return &ts->vpaint->paint; + case OB_MODE_WEIGHT_PAINT: + return &ts->wpaint->paint; + case OB_MODE_TEXTURE_PAINT: + break; + //return &ts->imapaint->paint; } } - /*else if(G.f & G_VERTEXPAINT) - return &sce->toolsettings->vpaint->paint; - else if(G.f & G_WEIGHTPAINT) - return &sce->toolsettings->wpaint->paint; - else if(G.f & G_TEXTUREPAINT) - return &sce->toolsettings->imapaint.paint;*/ return NULL; } @@ -137,6 +140,16 @@ int paint_facesel_test(Object *ob) } +void paint_init(Paint *p, const char *name) +{ + Brush *brush; + + /* If there's no brush, create one */ + brush = paint_brush(p); + brush_check_exists(&brush, name); + paint_brush_set(p, brush); +} + void free_paint(Paint *paint) { if(paint->brushes) diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index f1727cc6b59..dc1a55ed0eb 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -163,14 +163,14 @@ Scene *copy_scene(Main *bmain, Scene *sce, int type) ts->vpaint->paintcursor= NULL; ts->vpaint->vpaint_prev= NULL; ts->vpaint->wpaint_prev= NULL; - id_us_plus((ID *)ts->vpaint->brush); + copy_paint(&ts->vpaint->paint, &ts->vpaint->paint); } if(ts->wpaint) { ts->wpaint= MEM_dupallocN(ts->wpaint); ts->wpaint->paintcursor= NULL; ts->wpaint->vpaint_prev= NULL; ts->wpaint->wpaint_prev= NULL; - id_us_plus((ID *)ts->wpaint->brush); + copy_paint(&ts->wpaint->paint, &ts->wpaint->paint); } if(ts->sculpt) { ts->sculpt= MEM_dupallocN(ts->sculpt); @@ -272,10 +272,14 @@ void free_scene(Scene *sce) BLI_freelistN(&sce->r.layers); if(sce->toolsettings) { - if(sce->toolsettings->vpaint) + if(sce->toolsettings->vpaint) { + free_paint(&sce->toolsettings->vpaint->paint); MEM_freeN(sce->toolsettings->vpaint); - if(sce->toolsettings->wpaint) + } + if(sce->toolsettings->wpaint) { + free_paint(&sce->toolsettings->wpaint->paint); MEM_freeN(sce->toolsettings->wpaint); + } if(sce->toolsettings->sculpt) { free_paint(&sce->toolsettings->sculpt->paint); MEM_freeN(sce->toolsettings->sculpt); -- cgit v1.2.3