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/makesdna/DNA_color_types.h
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/makesdna/DNA_color_types.h')
-rw-r--r--source/blender/makesdna/DNA_color_types.h74
1 files changed, 74 insertions, 0 deletions
diff --git a/source/blender/makesdna/DNA_color_types.h b/source/blender/makesdna/DNA_color_types.h
new file mode 100644
index 00000000000..af83b162bdf
--- /dev/null
+++ b/source/blender/makesdna/DNA_color_types.h
@@ -0,0 +1,74 @@
+/**
+ *
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2006 Blender Foundation.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL/BL DUAL LICENSE BLOCK *****
+ */
+#ifndef DNA_COLOR_TYPES_H
+#define DNA_COLOR_TYPES_H
+
+#include "DNA_vec_types.h"
+
+/* general defines for kernel functions */
+#define CM_RESOL 32
+#define CM_TABLE 256
+#define CM_TABLEDIV (1.0f/256.0f)
+
+#define CM_TOT 4
+
+typedef struct CurveMapPoint {
+ float x, y;
+ short flag, shorty; /* shorty for result lookup */
+} CurveMapPoint;
+
+/* curvepoint->flag */
+#define CUMA_SELECT 1
+#define CUMA_VECTOR 2
+
+typedef struct CurveMap {
+ short totpoint, pad;
+
+ float range; /* quick multiply value for reading table */
+ float mintable, maxtable; /* the x-axis range for the table */
+ CurveMapPoint *curve; /* actual curve */
+ CurveMapPoint *table; /* display and evaluate table */
+
+} CurveMap;
+
+typedef struct CurveMapping {
+ int flag, cur; /* cur; for buttons, to show active curve */
+
+ rctf curr, clipr; /* current rect, clip rect (is default rect too) */
+
+ CurveMap cm[4]; /* max 4 builtin curves per mapping struct now */
+} CurveMapping;
+
+/* cuma->flag */
+#define CUMA_DO_CLIP 1
+
+
+#endif
+