Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Bishop <nicholasbishop@gmail.com>2009-08-17 06:49:31 +0400
committerNicholas Bishop <nicholasbishop@gmail.com>2009-08-17 06:49:31 +0400
commit9d2d3a8be7c3c0b101e7f0f33bb1a04c69deaf67 (patch)
tree93345dd6c9c76d3c3052573d45e7230918a197a8 /source/blender/blenkernel
parent1e0fd0d4c14824e856424000e1122dcb1c8b44dd (diff)
2.5 Paint:
* Converted vertex paint and weight paint to use the new Paint type
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/BKE_brush.h4
-rw-r--r--source/blender/blenkernel/BKE_paint.h1
-rw-r--r--source/blender/blenkernel/intern/brush.c8
-rw-r--r--source/blender/blenkernel/intern/paint.c27
-rw-r--r--source/blender/blenkernel/intern/scene.c12
5 files changed, 35 insertions, 17 deletions
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);