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 19:05:18 +0400
committerNicholas Bishop <nicholasbishop@gmail.com>2009-08-17 19:05:18 +0400
commitb0fe88117b923da49486f765521ed4c3d1b58965 (patch)
treebe634f428bf61da291078d6a93cd0b687d6d1c84 /source/blender/blenkernel/intern/paint.c
parent9f973bca78877a10b6da5a11b3bafc946879050c (diff)
2.5 Paint:
* Updated the brush selection UI to make the slots less apparent; adding and removing brushes now directly adds and removes slots.
Diffstat (limited to 'source/blender/blenkernel/intern/paint.c')
-rw-r--r--source/blender/blenkernel/intern/paint.c59
1 files changed, 36 insertions, 23 deletions
diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c
index 5ae84118356..79d1df3d67f 100644
--- a/source/blender/blenkernel/intern/paint.c
+++ b/source/blender/blenkernel/intern/paint.c
@@ -33,6 +33,7 @@
#include "BKE_brush.h"
#include "BKE_global.h"
+#include "BKE_library.h"
#include "BKE_paint.h"
#include <stdlib.h>
@@ -66,23 +67,33 @@ Brush *paint_brush(Paint *p)
void paint_brush_set(Paint *p, Brush *br)
{
- if(p && p->brushes) {
- int i;
-
- /* See if there's already a slot with the brush */
- for(i = 0; i < p->brush_count; ++i) {
- if(p->brushes[i] == br) {
- p->active_brush_index = i;
- break;
+ if(!br) {
+ /* Setting to NULL removes the current slot */
+ paint_brush_slot_remove(p);
+ }
+ else {
+ int found = 0;
+
+ if(p && p->brushes) {
+ int i;
+
+ /* See if there's already a slot with the brush */
+ for(i = 0; i < p->brush_count; ++i) {
+ if(p->brushes[i] == br) {
+ p->active_brush_index = i;
+ found = 1;
+ break;
+ }
}
+
}
+ if(!found)
+ paint_brush_slot_add(p);
+
+ /* Make sure the current slot is the new brush */
+ p->brushes[p->active_brush_index] = br;
}
- else
- paint_brush_slot_add(p);
-
- /* Make sure the current slot is the new brush */
- p->brushes[p->active_brush_index] = br;
}
static void paint_brush_slots_alloc(Paint *p, const int count)
@@ -96,22 +107,24 @@ static void paint_brush_slots_alloc(Paint *p, const int count)
void paint_brush_slot_add(Paint *p)
{
- Brush **orig = p->brushes;
- int orig_count = p->brushes ? p->brush_count : 0;
+ if(p) {
+ Brush **orig = p->brushes;
+ int orig_count = p->brushes ? p->brush_count : 0;
- /* Increase size of brush slot array */
- paint_brush_slots_alloc(p, orig_count + 1);
- if(orig) {
- memcpy(p->brushes, orig, sizeof(Brush*) * orig_count);
- MEM_freeN(orig);
- }
+ /* Increase size of brush slot array */
+ paint_brush_slots_alloc(p, orig_count + 1);
+ if(orig) {
+ memcpy(p->brushes, orig, sizeof(Brush*) * orig_count);
+ MEM_freeN(orig);
+ }
- p->active_brush_index = orig_count;
+ p->active_brush_index = orig_count;
+ }
}
void paint_brush_slot_remove(Paint *p)
{
- if(p->brushes) {
+ if(p && p->brushes) {
Brush **orig = p->brushes;
int src, dst;