From a3b317daf7fbaa2359afbfdf0524b590d3622f2e Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Mon, 17 Aug 2009 04:40:59 +0000 Subject: 2.5 Texture paint: * Converted to use Paint struct. Now all the brush modes are done. TODO: * Make the UI better --- source/blender/blenkernel/BKE_paint.h | 6 +++--- source/blender/blenkernel/intern/brush.c | 7 ++++--- source/blender/blenkernel/intern/paint.c | 6 +++++- source/blender/blenkernel/intern/scene.c | 5 +++-- 4 files changed, 15 insertions(+), 9 deletions(-) (limited to 'source/blender/blenkernel') diff --git a/source/blender/blenkernel/BKE_paint.h b/source/blender/blenkernel/BKE_paint.h index ae18d0e9561..67b260b2348 100644 --- a/source/blender/blenkernel/BKE_paint.h +++ b/source/blender/blenkernel/BKE_paint.h @@ -33,9 +33,9 @@ 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); +void paint_init(struct Paint *p, const char *brush_name); +void free_paint(struct Paint *p); +void copy_paint(struct Paint *orig, struct Paint *new); struct Paint *paint_get_active(struct Scene *sce); struct Brush *paint_brush(struct Paint *paint); diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index 3524550925e..612f6d2051d 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -51,6 +51,7 @@ #include "BKE_image.h" #include "BKE_library.h" #include "BKE_main.h" +#include "BKE_paint.h" #include "BKE_texture.h" #include "BKE_utildefines.h" @@ -153,7 +154,7 @@ void make_local_brush(Brush *brush) } for(scene= G.main->scene.first; scene; scene=scene->id.next) - if(scene->toolsettings->imapaint.brush==brush) { + if(paint_brush(&scene->toolsettings->imapaint.paint)==brush) { if(scene->id.lib) lib= 1; else local= 1; } @@ -175,9 +176,9 @@ void make_local_brush(Brush *brush) brushn->id.flag |= LIB_FAKEUSER; for(scene= G.main->scene.first; scene; scene=scene->id.next) - if(scene->toolsettings->imapaint.brush==brush) + if(paint_brush(&scene->toolsettings->imapaint.paint)==brush) if(scene->id.lib==0) { - scene->toolsettings->imapaint.brush= brushn; + paint_brush_set(&scene->toolsettings->imapaint.paint, brushn); brushn->id.us++; brush->id.us--; } diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c index 8e774e4c85a..5ae84118356 100644 --- a/source/blender/blenkernel/intern/paint.c +++ b/source/blender/blenkernel/intern/paint.c @@ -158,6 +158,10 @@ void free_paint(Paint *paint) void copy_paint(Paint *orig, Paint *new) { - if(orig->brushes) + if(orig->brushes) { + int i; new->brushes = MEM_dupallocN(orig->brushes); + for(i = 0; i < orig->brush_count; ++i) + id_us_plus((ID *)new->brushes[i]); + } } diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index dc1a55ed0eb..8488d7ab247 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -177,7 +177,7 @@ Scene *copy_scene(Main *bmain, Scene *sce, int type) copy_paint(&ts->sculpt->paint, &ts->sculpt->paint); } - id_us_plus((ID *)ts->imapaint.brush); + copy_paint(&ts->imapaint.paint, &ts->imapaint.paint); ts->imapaint.paintcursor= NULL; ts->particle.paintcursor= NULL; @@ -284,7 +284,8 @@ void free_scene(Scene *sce) free_paint(&sce->toolsettings->sculpt->paint); MEM_freeN(sce->toolsettings->sculpt); } - + free_paint(&sce->toolsettings->imapaint.paint); + MEM_freeN(sce->toolsettings); sce->toolsettings = NULL; } -- cgit v1.2.3