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:
authorTon Roosendaal <ton@blender.org>2006-01-08 14:41:06 +0300
committerTon Roosendaal <ton@blender.org>2006-01-08 14:41:06 +0300
commit104ab9b103ab30ca87ccb9e739a58863fc29d3bf (patch)
tree4f26f35a13cc5f92d485f72f2c9116d202f2f9cd /source/blender/include
parent32e21f4524cd3c428b5b8492089530471a7f0867 (diff)
Orange:
- New UI element: the "Curve Button". For mapping ranges (like 0 - 1) to another range, the curve button can be used for proportional falloff, bone influences, painting density, etc. Most evident use is of course to map RGB color with curves. To be able to use it, you have to allocate a CurveMapping struct and pass this on to the button. The CurveMapping API is in the new C file blenkernel/intern/colortools.c It's as simple as calling: curvemap= curvemapping_add(3, 0, 0, 1, 1) Which will create 3 curves, and sets a default 0-1 range. The current code only supports up to 4 curves maximum per mapping struct. The CurveMap button in Blender than handles allmost all editing. Evaluating a single channel: float newvalue= curvemapping_evaluateF(curvemap, 0, oldval); Where the second argument is the channel index, here 0-1-2 are possible. Or mapping a vector: curvemapping_evaluate3F(curvemap, newvec, oldvec); Optimized versions for byte or short mapping is possible too, not done yet. In butspace.c I've added a template wrapper for buttons around the curve, to reveil settings or show tools; check this screenie: http://www.blender.org/bf/curves.jpg - Buttons R, G, B: select channel - icons + and -: zoom in, out - icon 'wrench': menu with tools, like clear curve, set handle type - icon 'clipping': menu with clip values, and to dis/enable clipping - icon 'x': delete selection In the curve button itself, only LMB clicks are handled (like all UI elements in Blender). - click on point: select - shift+click on point: swap select - click on point + drag: select point (if not selected) and move it - click outside point + drag: translate view - CTRL+click: add new point - hold SHIFT while dragging to snap to grid (Yes I know... either one of these can be Blender compliant, not both!) - if you drag a point exactly on top of another, it merges them Other fixes: - Icons now draw using "Safe RasterPos", so they align with pixel boundary. the old code made ints from the raster pos coordinate, which doesn't work well for zoom in/out situations - bug in Node editing: buttons could not get freed, causing in memory error prints at end of a Blender session. That one was a very simple, but nasty error causing me all evening last night to find! (Hint; check diff of editnode.c, where uiDoButtons is called) Last note: this adds 3 new files in our tree, I did scons, but not MSVC!
Diffstat (limited to 'source/blender/include')
-rw-r--r--source/blender/include/BIF_interface.h2
-rw-r--r--source/blender/include/BIF_resources.h4
-rw-r--r--source/blender/include/butspace.h3
-rw-r--r--source/blender/include/interface.h4
4 files changed, 9 insertions, 4 deletions
diff --git a/source/blender/include/BIF_interface.h b/source/blender/include/BIF_interface.h
index 3ead46c8afd..f2248488d81 100644
--- a/source/blender/include/BIF_interface.h
+++ b/source/blender/include/BIF_interface.h
@@ -161,6 +161,7 @@ struct ScrArea;
#define CHARTAB (29<<9)
#define BUT_COLORBAND (30<<9)
#define BUT_NORMAL (31<<9)
+#define BUT_CURVE (32<<9)
#define BUTTYPE (63<<9)
@@ -251,6 +252,7 @@ uiBut *uiDefBlockBut(uiBlock *block, uiBlockFuncFP func, void *func_arg1, char *
uiBut *uiDefPulldownBut(uiBlock *block, uiBlockFuncFP func, void *func_arg1, char *str, short x1, short y1, short x2, short y2, char *tip);
uiBut *uiDefIconTextBlockBut(uiBlock *block, uiBlockFuncFP func, void *arg, int icon, char *str, short x1, short y1, short x2, short y2, char *tip);
+uiBut *uiDefIconBlockBut(uiBlock *block, uiBlockFuncFP func, void *arg, int retval, int icon, short x1, short y1, short x2, short y2, char *tip);
void uiDefKeyevtButS(uiBlock *block, int retval, char *str, short x1, short y1, short x2, short y2, short *spoin, char *tip);
diff --git a/source/blender/include/BIF_resources.h b/source/blender/include/BIF_resources.h
index ce741b9dd1c..ecf6f67331a 100644
--- a/source/blender/include/BIF_resources.h
+++ b/source/blender/include/BIF_resources.h
@@ -182,8 +182,8 @@ typedef enum {
ICON_CHECKBOX_HLT,
ICON_LINK,
ICON_INLINK,
- ICON_BLANK12,
- ICON_BLANK13,
+ ICON_ZOOMIN,
+ ICON_ZOOMOUT,
ICON_PASTEDOWN,
ICON_COPYDOWN,
ICON_CONSTANT,
diff --git a/source/blender/include/butspace.h b/source/blender/include/butspace.h
index c578be6d0fd..6e6815dd41f 100644
--- a/source/blender/include/butspace.h
+++ b/source/blender/include/butspace.h
@@ -40,6 +40,7 @@ struct ID;
struct ColorBand;
struct uiBlock;
struct rctf;
+struct CurveMap;
/* buts->scaflag */
#define BUTS_SENS_SEL 1
@@ -129,6 +130,8 @@ void test_texpoin_but(char *name, ID **idpp);
void test_idbutton_cb(void *namev, void *arg2_unused);
+void curvemap_buttons(struct uiBlock *block, struct CurveMapping *cumap, char labeltype, short event, short redraw, struct rctf *rect);
+
/* -------------- internal event defines ------------ */
diff --git a/source/blender/include/interface.h b/source/blender/include/interface.h
index 526f24e704e..15f2e8ee010 100644
--- a/source/blender/include/interface.h
+++ b/source/blender/include/interface.h
@@ -90,7 +90,7 @@ typedef struct uiLinkLine { /* only for draw/edit */
short flag, pad;
- uiBut *from, *to;
+ struct uiBut *from, *to;
} uiLinkLine;
typedef struct {
@@ -105,7 +105,7 @@ typedef struct {
} uiLink;
struct uiBut {
- uiBut *next, *prev;
+ struct uiBut *next, *prev;
short type, pointype, bit, bitnr, retval, strwidth, ofs, pos, selsta, selend;
int flag;