diff options
author | Nicholas Bishop <nicholasbishop@gmail.com> | 2009-08-17 08:40:59 +0400 |
---|---|---|
committer | Nicholas Bishop <nicholasbishop@gmail.com> | 2009-08-17 08:40:59 +0400 |
commit | a3b317daf7fbaa2359afbfdf0524b590d3622f2e (patch) | |
tree | af7876365655c372b4a7a3e16c41fde9b725d3ad /source/blender/blenkernel | |
parent | 3425925a7702c0a5527c60b2da044dad378d7f2c (diff) |
2.5 Texture paint:
* Converted to use Paint struct. Now all the brush modes are done.
TODO:
* Make the UI better
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_paint.h | 6 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/brush.c | 7 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/paint.c | 6 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/scene.c | 5 |
4 files changed, 15 insertions, 9 deletions
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; } |