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:
authorCampbell Barton <ideasman42@gmail.com>2015-03-18 07:09:04 +0300
committerCampbell Barton <ideasman42@gmail.com>2015-03-18 08:10:43 +0300
commit29195197147a882849859ea963cae42484dfeaba (patch)
treeb45cf4a573fda9a1ff45c1eb2dd158cb5e15e1ff /source/blender/blenkernel/intern/paint.c
parenta975a3ca63d155e9ee1f0ba96fd451c330885aaa (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.c35
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;
}