diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-03-18 07:09:04 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-03-18 08:10:43 +0300 |
commit | 29195197147a882849859ea963cae42484dfeaba (patch) | |
tree | b45cf4a573fda9a1ff45c1eb2dd158cb5e15e1ff /source/blender/blenkernel/intern/paint.c | |
parent | a975a3ca63d155e9ee1f0ba96fd451c330885aaa (diff) |
RNA: palette colors api
Methods so Python can manage colors.
palette.colors.new()/remove()/clear()/active
Diffstat (limited to 'source/blender/blenkernel/intern/paint.c')
-rw-r--r-- | source/blender/blenkernel/intern/paint.c | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c index 431eec0d220..2082066d395 100644 --- a/source/blender/blenkernel/intern/paint.c +++ b/source/blender/blenkernel/intern/paint.c @@ -314,18 +314,38 @@ void BKE_paint_curve_set(Brush *br, PaintCurve *pc) } /* remove colour from palette. Must be certain color is inside the palette! */ -void BKE_palette_color_remove(Palette *palette, PaletteColor *color) +void BKE_palette_color_remove_ex(Palette *palette, PaletteColor *color, bool use_free) { - if (color) { - int numcolors = BLI_listbase_count(&palette->colors); - if ((numcolors == palette->active_color + 1) && (numcolors != 1)) - palette->active_color--; - - BLI_remlink(&palette->colors, color); + if (BLI_listbase_count_ex(&palette->colors, palette->active_color) == palette->active_color) { + palette->active_color--; + } + + BLI_remlink(&palette->colors, color); + + if (palette->active_color < 0 && !BLI_listbase_is_empty(&palette->colors)) { + palette->active_color = 0; + } + + if (use_free) { + MEM_freeN(color); + } + else { BLI_addhead(&palette->deleted, color); } } +void BKE_palette_color_remove(Palette *palette, PaletteColor *color) +{ + BKE_palette_color_remove_ex(palette, color, false); +} + +void BKE_palette_clear(Palette *palette) +{ + BLI_freelistN(&palette->colors); + BLI_freelistN(&palette->deleted); + palette->active_color = 0; +} + void BKE_palette_cleanup(Palette *palette) { BLI_freelistN(&palette->deleted); @@ -353,7 +373,6 @@ PaletteColor *BKE_palette_color_add(Palette *palette) { PaletteColor *color = MEM_callocN(sizeof(*color), "Pallete Color"); BLI_addtail(&palette->colors, color); - palette->active_color = BLI_listbase_count(&palette->colors) - 1; return color; } |