2002-10-12 11:37:38 +00:00
|
|
|
/**
|
|
|
|
|
* $Id$
|
|
|
|
|
*
|
|
|
|
|
* ***** BEGIN GPL/BL DUAL 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. The Blender
|
|
|
|
|
* Foundation also sells licenses for use in proprietary software under
|
|
|
|
|
* the Blender License. See http://www.blender.org/BL/ for information
|
|
|
|
|
* about this.
|
|
|
|
|
*
|
|
|
|
|
* 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) 2001-2002 by NaN Holding BV.
|
|
|
|
|
* All rights reserved.
|
|
|
|
|
*
|
|
|
|
|
* The Original Code is: all of this file.
|
|
|
|
|
*
|
|
|
|
|
* Contributor(s): none yet.
|
|
|
|
|
*
|
|
|
|
|
* ***** END GPL/BL DUAL LICENSE BLOCK *****
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#ifndef INTERFACE_H
|
|
|
|
|
#define INTERFACE_H
|
|
|
|
|
|
2003-10-15 19:23:54 +00:00
|
|
|
#include "BIF_resources.h"
|
|
|
|
|
|
2002-10-12 11:37:38 +00:00
|
|
|
/* general defines */
|
|
|
|
|
|
2003-05-10 10:36:14 +00:00
|
|
|
#define UI_MAX_DRAW_STR 400
|
2002-10-12 11:37:38 +00:00
|
|
|
#define UI_MAX_NAME_STR 64
|
|
|
|
|
#define UI_ARRAY 29
|
|
|
|
|
|
2003-10-15 19:23:54 +00:00
|
|
|
|
2002-10-12 11:37:38 +00:00
|
|
|
|
|
|
|
|
/* uiBut->flag */
|
|
|
|
|
#define UI_SELECT 1
|
|
|
|
|
#define UI_MOUSE_OVER 2
|
|
|
|
|
#define UI_ACTIVE 4
|
|
|
|
|
#define UI_HAS_ICON 8
|
Area lights and more...
- New lamp type added "Area". This uses the radiosity formula (Stoke) to
calculate the amount of energy which is received from a plane. Result
is very nice local light, which nicely spreads out.
- Area lamps have a 'gamma' option to control the light spread
- Area lamp builtin sizes: square, rect, cube & box. Only first 2 are
implemented. Set a type, and define area size
- Button area size won't affect the amount of energy. But scaling the lamp
in 3d window will do. This is to cover the case when you scale an entire
scene, the light then will remain identical
If you just want to change area lamp size, use buttons when you dont want
to make the scene too bright or too dark
- Since area lights realistically are sensitive for distance (quadratic), the
effect it has is quickly too much, or too less. For this the "Dist" value
in Lamp can be used. Set it at Dist=10 to have reasonable light on distance
10 Blender units (assumed you didnt scale lamp object).
- I tried square sized specularity, but this looked totally weird. Not
committed
- Plan is to extend area light with 3d dimensions, boxes and cubes.
- Note that area light is one-sided, towards negative Z. I need to design
a nice drawing method for it.
Area Shadow
- Since there are a lot of variables associated with soft shadow, they now
only are available for Area lights. Allowing spot & normal lamp to have
soft shadow is possible though, but will require a reorganisation of the
Lamp buttons. Is a point of research & feedback still.
- Apart from area size, you now can individually set amount of samples in
X and Y direction (for area lamp type 'Rect'). For box type area lamp,
this will become 3 dimensions
- Area shadows have four options:
"Clip circle" : only uses a circular shape of samples, gives smoother
results
"Dither" : use a 2x2 dither mask
"Jitter" : applys a pseudo-random offset to samples
"Umbra" : extra emphasis on area that's fully in shadow.
Raytrace speedup
- improved filling in faces in Octree. Large faces occupied too many nodes
- added a coherence check; rays fired sequentially that begin and end in
same octree nodes, and that don't intersect, are quickly rejected
- rendering shadow scenes benefits from this 20-40%. My statue test monkey
file now renders in 19 seconds (was 30).
Plus:
- adjusted specular max to 511, and made sure Blinn spec has again this
incredible small spec size
- for UI rounded theme: the color "button" displayed RGB color too dark
- fixed countall() function, to also include Subsurf totals
- removed setting the 'near' clipping for pressing dot-key numpad
- when you press the buttons-window icon for 'Shading Context' the context
automaticilly switches as with F5 hotkey
Please be warned that this is not a release... settings in files might not
work as it did, nor guaranteed to work when we do a release. :)
2003-12-29 16:52:51 +00:00
|
|
|
/* warn: rest of uiBut->flag in BIF_interface.c */
|
2002-10-12 11:37:38 +00:00
|
|
|
|
2003-10-15 19:23:54 +00:00
|
|
|
|
|
|
|
|
/* block->frontbuf: (only internal here), to nice localize the old global var uiFrontBuf */
|
|
|
|
|
#define UI_NEED_DRAW_FRONT 1
|
|
|
|
|
#define UI_HAS_DRAW_FRONT 2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* internal panel drawing defines */
|
|
|
|
|
#define PNL_GRID 4
|
|
|
|
|
#define PNL_DIST 8
|
|
|
|
|
#define PNL_SAFETY 8
|
|
|
|
|
#define PNL_HEADER 20
|
|
|
|
|
|
|
|
|
|
/* panel->flag */
|
|
|
|
|
#define PNL_SELECT 1
|
|
|
|
|
#define PNL_CLOSEDX 2
|
|
|
|
|
#define PNL_CLOSEDY 4
|
|
|
|
|
#define PNL_CLOSED 6
|
|
|
|
|
#define PNL_TABBED 8
|
|
|
|
|
#define PNL_OVERLAP 16
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
short xim, yim;
|
|
|
|
|
unsigned int *rect;
|
|
|
|
|
short xofs, yofs;
|
|
|
|
|
} uiIconImage;
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
short mval[2];
|
|
|
|
|
short qual, val;
|
|
|
|
|
int event;
|
|
|
|
|
} uiEvent;
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
void *xl, *large, *medium, *small;
|
|
|
|
|
} uiFont;
|
|
|
|
|
|
|
|
|
|
typedef struct uiLinkLine uiLinkLine;
|
|
|
|
|
struct uiLinkLine { /* only for draw/edit */
|
|
|
|
|
uiLinkLine *next, *prev;
|
|
|
|
|
|
|
|
|
|
short flag, pad;
|
|
|
|
|
|
|
|
|
|
uiBut *from, *to;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
void **poin; /* pointer to original pointer */
|
|
|
|
|
void ***ppoin; /* pointer to original pointer-array */
|
|
|
|
|
short *totlink; /* if pointer-array, here is the total */
|
|
|
|
|
|
|
|
|
|
short maxlink, pad;
|
|
|
|
|
short fromcode, tocode;
|
|
|
|
|
|
|
|
|
|
ListBase lines;
|
|
|
|
|
} uiLink;
|
|
|
|
|
|
|
|
|
|
struct uiBut {
|
|
|
|
|
uiBut *next, *prev;
|
2003-11-14 00:44:48 +00:00
|
|
|
short type, pointype, bit, bitnr, retval, strwidth, ofs, pos;
|
|
|
|
|
int flag;
|
|
|
|
|
|
2003-10-15 19:23:54 +00:00
|
|
|
char *str;
|
|
|
|
|
char strdata[UI_MAX_NAME_STR];
|
|
|
|
|
char drawstr[UI_MAX_DRAW_STR];
|
|
|
|
|
|
|
|
|
|
float x1, y1, x2, y2;
|
|
|
|
|
|
|
|
|
|
char *poin;
|
|
|
|
|
float min, max;
|
|
|
|
|
float a1, a2, rt[4];
|
|
|
|
|
float aspect;
|
|
|
|
|
|
|
|
|
|
void (*func)(void *, void *);
|
|
|
|
|
void *func_arg1;
|
|
|
|
|
void *func_arg2;
|
|
|
|
|
|
Another mega commit... loadsof restructure, and a pretty good one! :)
- changed the BIF_DrawString() function. it used to work different for
AA fonts as for default fonts. Now it's identical. Setting color for fonts
can just be done with OpenGL, for both font types.
Removed: BIF_DrawStringRGB()
- added theme color options for Buttons
- recoded DefButton, so it automatically chooses the right color.
- had to remove a 1000 uiBlockSetCol() calls for that reason...
- uiBlockSetCol() still works, to override automatic color
- removed entirely the silly old color system (BIFColorID). All color
calls can now be done with a BIF_ThemeColor() call, including fonts and
buttons and opengl stuff
- all buttons in button header have headercolor by default
- recoded drawing icons, it was a really bad & old loop doing manually
colorshading and blending... which was per pixel a load of code!
Now it uses a single OpenGL call to blend or colorize. Quite faster!
- (as test, for review) icons don't colorize anymore with button color,
but have a different alpha to blend in (when not active)
- recoded the entire interface_draw.c file...:
- drawing buttons is separated in three parts:
1. main drawing function for text and icons
2. free definable callback for button itself
3. free definable callback for slider
- removed a load of redundant code for this!
- coded a minimal theme, and adjusted Matt's buttons to match new
callback system
- adding new drawing themes is piece of cake now
- for coders, default 'themes' to be aware of:
UI_EMBOSS : the themable drawing style
UI_EMBOSSP: the pulldown menu system (apart from color not themable)
UI_EMBOSSN: draw nothing, only text and/or icon
UI_EMBOSSM: minimal theme, still in use for Logic and Constraintsa
this can be set with uiBlockSetEmboss(block) or in the uiNewBlock() call.
TODO: make UI API call for button alignment
(plus removed another series of warnings from code...)
Plus: fixed bug in Matts commit: he used a 'short' button for an 'int'
2003-10-20 15:40:20 +00:00
|
|
|
void (*embossfunc)(int , int , float, float, float, float, float, int);
|
|
|
|
|
void (*sliderfunc)(int , float, float, float, float, float, float, int);
|
2003-10-15 19:23:54 +00:00
|
|
|
|
|
|
|
|
uiLink *link;
|
|
|
|
|
|
|
|
|
|
char *tip, *lockstr;
|
|
|
|
|
|
Another mega commit... loadsof restructure, and a pretty good one! :)
- changed the BIF_DrawString() function. it used to work different for
AA fonts as for default fonts. Now it's identical. Setting color for fonts
can just be done with OpenGL, for both font types.
Removed: BIF_DrawStringRGB()
- added theme color options for Buttons
- recoded DefButton, so it automatically chooses the right color.
- had to remove a 1000 uiBlockSetCol() calls for that reason...
- uiBlockSetCol() still works, to override automatic color
- removed entirely the silly old color system (BIFColorID). All color
calls can now be done with a BIF_ThemeColor() call, including fonts and
buttons and opengl stuff
- all buttons in button header have headercolor by default
- recoded drawing icons, it was a really bad & old loop doing manually
colorshading and blending... which was per pixel a load of code!
Now it uses a single OpenGL call to blend or colorize. Quite faster!
- (as test, for review) icons don't colorize anymore with button color,
but have a different alpha to blend in (when not active)
- recoded the entire interface_draw.c file...:
- drawing buttons is separated in three parts:
1. main drawing function for text and icons
2. free definable callback for button itself
3. free definable callback for slider
- removed a load of redundant code for this!
- coded a minimal theme, and adjusted Matt's buttons to match new
callback system
- adding new drawing themes is piece of cake now
- for coders, default 'themes' to be aware of:
UI_EMBOSS : the themable drawing style
UI_EMBOSSP: the pulldown menu system (apart from color not themable)
UI_EMBOSSN: draw nothing, only text and/or icon
UI_EMBOSSM: minimal theme, still in use for Logic and Constraintsa
this can be set with uiBlockSetEmboss(block) or in the uiNewBlock() call.
TODO: make UI API call for button alignment
(plus removed another series of warnings from code...)
Plus: fixed bug in Matts commit: he used a 'short' button for an 'int'
2003-10-20 15:40:20 +00:00
|
|
|
int themecol; /* themecolor id */
|
2003-10-15 19:23:54 +00:00
|
|
|
void *font;
|
|
|
|
|
|
|
|
|
|
BIFIconID icon;
|
Another mega commit... loadsof restructure, and a pretty good one! :)
- changed the BIF_DrawString() function. it used to work different for
AA fonts as for default fonts. Now it's identical. Setting color for fonts
can just be done with OpenGL, for both font types.
Removed: BIF_DrawStringRGB()
- added theme color options for Buttons
- recoded DefButton, so it automatically chooses the right color.
- had to remove a 1000 uiBlockSetCol() calls for that reason...
- uiBlockSetCol() still works, to override automatic color
- removed entirely the silly old color system (BIFColorID). All color
calls can now be done with a BIF_ThemeColor() call, including fonts and
buttons and opengl stuff
- all buttons in button header have headercolor by default
- recoded drawing icons, it was a really bad & old loop doing manually
colorshading and blending... which was per pixel a load of code!
Now it uses a single OpenGL call to blend or colorize. Quite faster!
- (as test, for review) icons don't colorize anymore with button color,
but have a different alpha to blend in (when not active)
- recoded the entire interface_draw.c file...:
- drawing buttons is separated in three parts:
1. main drawing function for text and icons
2. free definable callback for button itself
3. free definable callback for slider
- removed a load of redundant code for this!
- coded a minimal theme, and adjusted Matt's buttons to match new
callback system
- adding new drawing themes is piece of cake now
- for coders, default 'themes' to be aware of:
UI_EMBOSS : the themable drawing style
UI_EMBOSSP: the pulldown menu system (apart from color not themable)
UI_EMBOSSN: draw nothing, only text and/or icon
UI_EMBOSSM: minimal theme, still in use for Logic and Constraintsa
this can be set with uiBlockSetEmboss(block) or in the uiNewBlock() call.
TODO: make UI API call for button alignment
(plus removed another series of warnings from code...)
Plus: fixed bug in Matts commit: he used a 'short' button for an 'int'
2003-10-20 15:40:20 +00:00
|
|
|
short but_align; /* aligning buttons, horiz/vertical */
|
2003-10-15 19:23:54 +00:00
|
|
|
short lock, win;
|
|
|
|
|
short iconadd;
|
|
|
|
|
|
|
|
|
|
/* IDPOIN data */
|
|
|
|
|
uiIDPoinFuncFP idpoin_func;
|
|
|
|
|
ID **idpoin_idpp;
|
|
|
|
|
|
|
|
|
|
/* BLOCK data */
|
|
|
|
|
uiBlockFuncFP block_func;
|
|
|
|
|
|
|
|
|
|
/* BUTM data */
|
|
|
|
|
void (*butm_func)(void *arg, int event);
|
|
|
|
|
void *butm_func_arg;
|
|
|
|
|
|
|
|
|
|
/* pointer back */
|
|
|
|
|
uiBlock *block;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct uiBlock {
|
|
|
|
|
uiBlock *next, *prev;
|
|
|
|
|
|
|
|
|
|
ListBase buttons;
|
|
|
|
|
Panel *panel;
|
|
|
|
|
|
|
|
|
|
char name[UI_MAX_NAME_STR];
|
|
|
|
|
|
|
|
|
|
float winmat[4][4];
|
|
|
|
|
|
|
|
|
|
float minx, miny, maxx, maxy;
|
|
|
|
|
float aspect;
|
|
|
|
|
|
|
|
|
|
void (*butm_func)(void *arg, int event);
|
|
|
|
|
void *butm_func_arg;
|
|
|
|
|
|
|
|
|
|
void (*func)(void *arg1, void *arg2);
|
|
|
|
|
void *func_arg1;
|
|
|
|
|
void *func_arg2;
|
|
|
|
|
|
|
|
|
|
/* extra draw function for custom blocks */
|
|
|
|
|
void (*drawextra)();
|
|
|
|
|
|
Another mega commit... loadsof restructure, and a pretty good one! :)
- changed the BIF_DrawString() function. it used to work different for
AA fonts as for default fonts. Now it's identical. Setting color for fonts
can just be done with OpenGL, for both font types.
Removed: BIF_DrawStringRGB()
- added theme color options for Buttons
- recoded DefButton, so it automatically chooses the right color.
- had to remove a 1000 uiBlockSetCol() calls for that reason...
- uiBlockSetCol() still works, to override automatic color
- removed entirely the silly old color system (BIFColorID). All color
calls can now be done with a BIF_ThemeColor() call, including fonts and
buttons and opengl stuff
- all buttons in button header have headercolor by default
- recoded drawing icons, it was a really bad & old loop doing manually
colorshading and blending... which was per pixel a load of code!
Now it uses a single OpenGL call to blend or colorize. Quite faster!
- (as test, for review) icons don't colorize anymore with button color,
but have a different alpha to blend in (when not active)
- recoded the entire interface_draw.c file...:
- drawing buttons is separated in three parts:
1. main drawing function for text and icons
2. free definable callback for button itself
3. free definable callback for slider
- removed a load of redundant code for this!
- coded a minimal theme, and adjusted Matt's buttons to match new
callback system
- adding new drawing themes is piece of cake now
- for coders, default 'themes' to be aware of:
UI_EMBOSS : the themable drawing style
UI_EMBOSSP: the pulldown menu system (apart from color not themable)
UI_EMBOSSN: draw nothing, only text and/or icon
UI_EMBOSSM: minimal theme, still in use for Logic and Constraintsa
this can be set with uiBlockSetEmboss(block) or in the uiNewBlock() call.
TODO: make UI API call for button alignment
(plus removed another series of warnings from code...)
Plus: fixed bug in Matts commit: he used a 'short' button for an 'int'
2003-10-20 15:40:20 +00:00
|
|
|
int themecol; /* themecolor id */
|
First commit of a new toolbox system.
Aim was to find a simple & easy system, script alike, to add and configure
a toolbox system, so that others can experiment, but also of course Python.
Summary:
- spacebar calls it up. SHIFT+A still does old toolbox
- hold left or rightmouse for 0.4 second, and it pops up as well
this is experimental! Can be tweaked with Userdef var "ThresA"
- it is a little bit complete for Object mode only. Needs still work
at information desing/structure level
- the code works like an engine, interpreting structs like this:
static TBitem addmenu_curve[]= {
{ 0, "Bezier Curve", 0, NULL},
{ 0, "Bezier Circle", 1, NULL},
{ 0, "NURBS Curve", 2, NULL},
{ 0, "NURBS Circle", 3, NULL},
{ 0, "Path", 4, NULL},
{ -1, "", 0, do_info_add_curvemenu}};
- first value is ICON code,
- then name
- return value
- pointer to optional child
last row has -1 to indicate its the last...
plus a callback to event function.
I also built an old toolbox style callback for this:
static TBitem tb_object_select[]= {
{ 0, "Border Select|B", 'b', NULL},
{ 0, "(De)select All|A", 'a', NULL},
{ 0, "Linked...|Shift L", 'L', NULL},
{ 0, "Grouped...|Shift G", 'G', NULL},
{ -1, "", 0, tb_do_hotkey}};
here the return values are put back as hotkeys in mainqueue.
A mainloop can do all context switching, and build menus on the fly.
Meaning, it also allows other designs such as radials...
2003-10-25 00:08:12 +00:00
|
|
|
|
2003-10-15 19:23:54 +00:00
|
|
|
short font; /* indices */
|
2003-11-14 00:44:48 +00:00
|
|
|
int afterval, flag;
|
2003-10-15 19:23:54 +00:00
|
|
|
void *curfont;
|
|
|
|
|
|
2003-11-14 00:44:48 +00:00
|
|
|
short autofill, win, winq, direction, dt, frontbuf, auto_open; //frontbuf see below
|
2003-10-15 19:23:54 +00:00
|
|
|
void *saveunder;
|
|
|
|
|
|
|
|
|
|
float xofs, yofs; // offset to parent button
|
|
|
|
|
rctf parentrct; // for pulldowns, rect the mouse is allowed outside of menu (parent button)
|
First commit of a new toolbox system.
Aim was to find a simple & easy system, script alike, to add and configure
a toolbox system, so that others can experiment, but also of course Python.
Summary:
- spacebar calls it up. SHIFT+A still does old toolbox
- hold left or rightmouse for 0.4 second, and it pops up as well
this is experimental! Can be tweaked with Userdef var "ThresA"
- it is a little bit complete for Object mode only. Needs still work
at information desing/structure level
- the code works like an engine, interpreting structs like this:
static TBitem addmenu_curve[]= {
{ 0, "Bezier Curve", 0, NULL},
{ 0, "Bezier Circle", 1, NULL},
{ 0, "NURBS Curve", 2, NULL},
{ 0, "NURBS Circle", 3, NULL},
{ 0, "Path", 4, NULL},
{ -1, "", 0, do_info_add_curvemenu}};
- first value is ICON code,
- then name
- return value
- pointer to optional child
last row has -1 to indicate its the last...
plus a callback to event function.
I also built an old toolbox style callback for this:
static TBitem tb_object_select[]= {
{ 0, "Border Select|B", 'b', NULL},
{ 0, "(De)select All|A", 'a', NULL},
{ 0, "Linked...|Shift L", 'L', NULL},
{ 0, "Grouped...|Shift G", 'G', NULL},
{ -1, "", 0, tb_do_hotkey}};
here the return values are put back as hotkeys in mainqueue.
A mainloop can do all context switching, and build menus on the fly.
Meaning, it also allows other designs such as radials...
2003-10-25 00:08:12 +00:00
|
|
|
rctf safety; // pulldowns, to detect outside, can differ per case how it is created
|
2003-10-16 00:17:24 +00:00
|
|
|
|
|
|
|
|
int handler; // for panels in other windows than buttonswin... just event code
|
2003-10-15 19:23:54 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/* interface.c */
|
|
|
|
|
extern void ui_check_but(uiBut *but);
|
Another mega commit... loadsof restructure, and a pretty good one! :)
- changed the BIF_DrawString() function. it used to work different for
AA fonts as for default fonts. Now it's identical. Setting color for fonts
can just be done with OpenGL, for both font types.
Removed: BIF_DrawStringRGB()
- added theme color options for Buttons
- recoded DefButton, so it automatically chooses the right color.
- had to remove a 1000 uiBlockSetCol() calls for that reason...
- uiBlockSetCol() still works, to override automatic color
- removed entirely the silly old color system (BIFColorID). All color
calls can now be done with a BIF_ThemeColor() call, including fonts and
buttons and opengl stuff
- all buttons in button header have headercolor by default
- recoded drawing icons, it was a really bad & old loop doing manually
colorshading and blending... which was per pixel a load of code!
Now it uses a single OpenGL call to blend or colorize. Quite faster!
- (as test, for review) icons don't colorize anymore with button color,
but have a different alpha to blend in (when not active)
- recoded the entire interface_draw.c file...:
- drawing buttons is separated in three parts:
1. main drawing function for text and icons
2. free definable callback for button itself
3. free definable callback for slider
- removed a load of redundant code for this!
- coded a minimal theme, and adjusted Matt's buttons to match new
callback system
- adding new drawing themes is piece of cake now
- for coders, default 'themes' to be aware of:
UI_EMBOSS : the themable drawing style
UI_EMBOSSP: the pulldown menu system (apart from color not themable)
UI_EMBOSSN: draw nothing, only text and/or icon
UI_EMBOSSM: minimal theme, still in use for Logic and Constraintsa
this can be set with uiBlockSetEmboss(block) or in the uiNewBlock() call.
TODO: make UI API call for button alignment
(plus removed another series of warnings from code...)
Plus: fixed bug in Matts commit: he used a 'short' button for an 'int'
2003-10-20 15:40:20 +00:00
|
|
|
extern double ui_get_but_val(uiBut *but);
|
2004-07-05 08:48:17 +00:00
|
|
|
extern void ui_get_but_vectorf(uiBut *but, float *vec);
|
|
|
|
|
extern void ui_set_but_vectorf(uiBut *but, float *vec);
|
2003-10-15 19:23:54 +00:00
|
|
|
extern void ui_autofill(uiBlock *block);
|
2003-10-16 00:17:24 +00:00
|
|
|
extern void ui_graphics_to_window(int win, float *x, float *y);
|
|
|
|
|
extern void ui_window_to_graphics(int win, float *x, float *y);
|
2003-10-15 19:23:54 +00:00
|
|
|
|
|
|
|
|
/* interface_panel.c */
|
|
|
|
|
extern void ui_draw_panel(uiBlock *block);
|
|
|
|
|
extern void ui_do_panel(uiBlock *block, uiEvent *uevent);
|
2003-11-14 00:44:48 +00:00
|
|
|
extern void gl_round_box(float minx, float miny, float maxx, float maxy, float rad);
|
2003-10-15 19:23:54 +00:00
|
|
|
|
Another mega commit... loadsof restructure, and a pretty good one! :)
- changed the BIF_DrawString() function. it used to work different for
AA fonts as for default fonts. Now it's identical. Setting color for fonts
can just be done with OpenGL, for both font types.
Removed: BIF_DrawStringRGB()
- added theme color options for Buttons
- recoded DefButton, so it automatically chooses the right color.
- had to remove a 1000 uiBlockSetCol() calls for that reason...
- uiBlockSetCol() still works, to override automatic color
- removed entirely the silly old color system (BIFColorID). All color
calls can now be done with a BIF_ThemeColor() call, including fonts and
buttons and opengl stuff
- all buttons in button header have headercolor by default
- recoded drawing icons, it was a really bad & old loop doing manually
colorshading and blending... which was per pixel a load of code!
Now it uses a single OpenGL call to blend or colorize. Quite faster!
- (as test, for review) icons don't colorize anymore with button color,
but have a different alpha to blend in (when not active)
- recoded the entire interface_draw.c file...:
- drawing buttons is separated in three parts:
1. main drawing function for text and icons
2. free definable callback for button itself
3. free definable callback for slider
- removed a load of redundant code for this!
- coded a minimal theme, and adjusted Matt's buttons to match new
callback system
- adding new drawing themes is piece of cake now
- for coders, default 'themes' to be aware of:
UI_EMBOSS : the themable drawing style
UI_EMBOSSP: the pulldown menu system (apart from color not themable)
UI_EMBOSSN: draw nothing, only text and/or icon
UI_EMBOSSM: minimal theme, still in use for Logic and Constraintsa
this can be set with uiBlockSetEmboss(block) or in the uiNewBlock() call.
TODO: make UI API call for button alignment
(plus removed another series of warnings from code...)
Plus: fixed bug in Matts commit: he used a 'short' button for an 'int'
2003-10-20 15:40:20 +00:00
|
|
|
/* interface_draw.c */
|
|
|
|
|
extern void ui_set_embossfunc(uiBut *but, int drawtype);
|
|
|
|
|
extern void ui_draw_but(uiBut *but);
|
2003-10-15 19:23:54 +00:00
|
|
|
|
2003-10-15 12:26:26 +00:00
|
|
|
|
2002-10-12 11:37:38 +00:00
|
|
|
#endif
|
2002-10-30 02:07:20 +00:00
|
|
|
|