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:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2012-02-02 18:07:24 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2012-02-02 18:07:24 +0400
commit4aaf59324e0ea5fecf28c1e9d54b1aed9b135dc5 (patch)
treea15460ae3188ccf5b31019ff472507af3f4dbc65 /source/blender/blenkernel
parent8f01ad9bf884f15c9cd6d19971f8ab3a1e1e176c (diff)
Fix #27213: editing color ramp "Pos:" number value did not update the ramp
properly, when moving the current point before another.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/BKE_texture.h2
-rw-r--r--source/blender/blenkernel/intern/texture.c32
2 files changed, 22 insertions, 12 deletions
diff --git a/source/blender/blenkernel/BKE_texture.h b/source/blender/blenkernel/BKE_texture.h
index 7f321abf48e..a67a06ef9fb 100644
--- a/source/blender/blenkernel/BKE_texture.h
+++ b/source/blender/blenkernel/BKE_texture.h
@@ -69,9 +69,9 @@ void init_colorband(struct ColorBand *coba, int rangetype);
struct ColorBand *add_colorband(int rangetype);
int do_colorband(const struct ColorBand *coba, float in, float out[4]);
void colorband_table_RGBA(struct ColorBand *coba, float **array, int *size);
-int vergcband(const void *a1, const void *a2);
struct CBData *colorband_element_add(struct ColorBand *coba, float position);
int colorband_element_remove(struct ColorBand *coba, int index);
+void colorband_update_sort(struct ColorBand *coba);
void default_tex(struct Tex *tex);
struct Tex *add_texture(const char *name);
diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c
index 88858c9ff51..f854397ef05 100644
--- a/source/blender/blenkernel/intern/texture.c
+++ b/source/blender/blenkernel/intern/texture.c
@@ -478,6 +478,26 @@ int vergcband(const void *a1, const void *a2)
return 0;
}
+void colorband_update_sort(ColorBand *coba)
+{
+ int a;
+
+ if(coba->tot<2)
+ return;
+
+ for(a=0; a<coba->tot; a++)
+ coba->data[a].cur= a;
+
+ qsort(coba->data, coba->tot, sizeof(CBData), vergcband);
+
+ for(a=0; a<coba->tot; a++) {
+ if(coba->data[a].cur==coba->cur) {
+ coba->cur= a;
+ break;
+ }
+ }
+}
+
CBData *colorband_element_add(struct ColorBand *coba, float position)
{
int a;
@@ -503,17 +523,7 @@ CBData *colorband_element_add(struct ColorBand *coba, float position)
coba->tot++;
coba->cur = coba->tot-1;
- for(a = 0; a < coba->tot; a++)
- coba->data[a].cur = a;
-
- qsort(coba->data, coba->tot, sizeof(CBData), vergcband);
-
- for(a = 0; a < coba->tot; a++) {
- if(coba->data[a].cur == coba->cur) {
- coba->cur = a;
- break;
- }
- }
+ colorband_update_sort(coba);
return coba->data + coba->cur;
}