Logo Search packages:      
Sourcecode: blender version File versions

BIF_interface.h

/**
 * $Id: BIF_interface.h,v 1.32 2004/10/14 14:20:24 ton Exp $
 *
 * ***** 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 BIF_INTERFACE_H
#define BIF_INTERFACE_H

struct ID;
struct ListBase;
struct ScrArea;

/* uiBlock->dt */
#define UI_EMBOSS       0     /* use one of the themes for drawing */
#define UI_EMBOSSN            1     /* Nothing */
#define UI_EMBOSSM            2     /* Minimal builtin emboss, also for logic buttons */
#define UI_EMBOSSP            3     /* Pulldown */

#define UI_EMBOSSX            0     /* for a python file, which i can't change.... duh! */

/* uiBlock->direction */
#define UI_TOP          1
#define UI_DOWN         2
#define UI_LEFT         4
#define UI_RIGHT  8
#define UI_DIRECTION    15
#define UI_CENTRE       16
#define UI_SHIFT_FLIPPED      32

/* uiBlock->autofill */
#define UI_BLOCK_COLLUMNS     1
#define UI_BLOCK_ROWS         2

/* return from uiDoBlock */
#define UI_CONT                     0
#define UI_NOTHING                  1
#define UI_RETURN_CANCEL      2
#define UI_RETURN_OK          4
#define UI_RETURN_OUT         8
#define UI_RETURN             14
#define UI_EXIT_LOOP          16

/* uiBlock->flag (controls) */
#define UI_BLOCK_LOOP         1
#define UI_BLOCK_REDRAW       2
#define UI_BLOCK_RET_1        4
#define UI_BLOCK_BUSY         8
#define UI_BLOCK_NUMSELECT    16
#define UI_BLOCK_ENTER_OK     32
#define UI_BLOCK_NOSHADOW     64
#define UI_BLOCK_FRONTBUFFER  128

      /* block->flag bits 12-15 are identical to but->flag bits */

/* block->font, for now: bold = medium+1 */
#define UI_HELV               0
#define UI_HELVB        1

/* panel controls */
#define UI_PNL_TRANSP   1
#define UI_PNL_SOLID    2

#define UI_PNL_CLOSE    32
#define UI_PNL_STOW           64
#define UI_PNL_TO_MOUSE 128
#define UI_PNL_UNSTOW   256

/* warning the first 4 flags are internal */
/* but->flag */
#define UI_TEXT_LEFT    16
#define UI_ICON_LEFT    32
#define UI_ICON_RIGHT   64
      /* control for button type block */
#define UI_MAKE_TOP           128
#define UI_MAKE_DOWN    256
#define UI_MAKE_LEFT    512
#define UI_MAKE_RIGHT   1024
      /* dont draw hilite on mouse over */
#define UI_NO_HILITE    2048
      /* button align flag, for drawing groups together */
#define UI_BUT_ALIGN          (15<<12)
#define UI_BUT_ALIGN_TOP      (1<<12)
#define UI_BUT_ALIGN_LEFT     (1<<13)
#define UI_BUT_ALIGN_RIGHT    (1<<14)
#define UI_BUT_ALIGN_DOWN     (1<<15)


/* Button types */
#define CHA 32
#define SHO 64
#define INT 96
#define FLO 128
#define FUN 192
#define BIT 256

#define BUTPOIN   (128+64+32)

#define BUT (1<<9)
#define ROW (2<<9)
#define TOG (3<<9)
#define SLI (4<<9)
#define     NUM   (5<<9)
#define TEX (6<<9)
#define TOG3      (7<<9)
#define TOGR      (8<<9)
#define TOGN      (9<<9)
#define LABEL     (10<<9)
#define MENU      (11<<9)
#define ICONROW   (12<<9)
#define ICONTOG   (13<<9)
#define NUMSLI    (14<<9)
#define COL       (15<<9)
#define IDPOIN    (16<<9)
#define HSVSLI    (17<<9)
#define SCROLL    (18<<9)
#define BLOCK     (19<<9)
#define BUTM      (20<<9)
#define SEPR      (21<<9)
#define LINK      (22<<9)
#define INLINK    (23<<9)
#define KEYEVT    (24<<9)
#define ICONTEXTROW (25<<9)
#define HSVCUBE (26<<9)
#define PULLDOWN (27<<9)

#define BUTTYPE   (31<<9)



typedef struct uiBut uiBut;
typedef struct uiBlock uiBlock;

void uiEmboss(float x1, float y1, float x2, float y2, int sel);
void uiRoundBoxEmboss(float minx, float miny, float maxx, float maxy, float rad, int active);
void uiRoundBox(float minx, float miny, float maxx, float maxy, float rad);
void uiSetRoundBox(int type);
void uiRoundRect(float minx, float miny, float maxx, float maxy, float rad);

void uiDrawMenuBox(float minx, float miny, float maxx, float maxy, short flag);
void uiTextBoundsBlock(uiBlock *block, int addval);
void uiBoundsBlock(struct uiBlock *block, int addval);
void uiDrawBlock(struct uiBlock *block);
void uiGetMouse(int win, short *adr);
void uiComposeLinks(uiBlock *block);
void uiSetButLock(int val, char *lockstr);
void uiClearButLock(void);
int uiDoBlocks(struct ListBase *lb, int event);
void uiSetCurFont(uiBlock *block, int index);
void uiDefFont(unsigned int index, void *xl, void *large, void *medium, void *small);
void uiFreeBlock(uiBlock *block);
void uiFreeBlocks(struct ListBase *lb);
void uiFreeBlocksWin(struct ListBase *lb, int win);
uiBlock *uiNewBlock(struct ListBase *lb, char *name, short dt, short font, short win);
uiBlock *uiGetBlock(char *name, struct ScrArea *sa);

void uiBlockPickerButtons(struct uiBlock *block, float *col, float *hsv, float *old, char mode, short retval);


/* automatic aligning, horiz or verical */
void uiBlockBeginAlign(uiBlock *block);
void uiBlockEndAlign(uiBlock *block);

uiBut *uiDefBut(uiBlock *block, 
                                 int type, int retval, char *str, 
                                 short x1, short y1, 
                                 short x2, short y2, 
                                 void *poin, 
                                 float min, float max, 
                                 float a1, float a2,  char *tip);
uiBut *uiDefButF(uiBlock *block, int type, int retval, char *str, short x1, short y1, short x2, short y2, float *poin, float min, float max, float a1, float a2,  char *tip);
uiBut *uiDefButBitF(uiBlock *block, int type, int bit, int retval, char *str, short x1, short y1, short x2, short y2, float *poin, float min, float max, float a1, float a2,  char *tip);
uiBut *uiDefButI(uiBlock *block, int type, int retval, char *str, short x1, short y1, short x2, short y2, int *poin, float min, float max, float a1, float a2,  char *tip);
uiBut *uiDefButBitI(uiBlock *block, int type, int bit, int retval, char *str, short x1, short y1, short x2, short y2, int *poin, float min, float max, float a1, float a2,  char *tip);
uiBut *uiDefButS(uiBlock *block, int type, int retval, char *str, short x1, short y1, short x2, short y2, short *poin, float min, float max, float a1, float a2,  char *tip);
uiBut *uiDefButBitS(uiBlock *block, int type, int bit, int retval, char *str, short x1, short y1, short x2, short y2, short *poin, float min, float max, float a1, float a2,  char *tip);
uiBut *uiDefButC(uiBlock *block, int type, int retval, char *str, short x1, short y1, short x2, short y2, char *poin, float min, float max, float a1, float a2,  char *tip);
uiBut *uiDefButBitC(uiBlock *block, int type, int bit, int retval, char *str, short x1, short y1, short x2, short y2, char *poin, float min, float max, float a1, float a2,  char *tip);

uiBut *uiDefIconBut(uiBlock *block, 
                                 int type, int retval, int icon, 
                                 short x1, short y1, 
                                 short x2, short y2, 
                                 void *poin, 
                                 float min, float max, 
                                 float a1, float a2,  char *tip);
uiBut *uiDefIconButF(uiBlock *block, int type, int retval, int icon, short x1, short y1, short x2, short y2, float *poin, float min, float max, float a1, float a2,  char *tip);
uiBut *uiDefIconButBitF(uiBlock *block, int type, int bit, int retval, int icon, short x1, short y1, short x2, short y2, float *poin, float min, float max, float a1, float a2,  char *tip);
uiBut *uiDefIconButI(uiBlock *block, int type, int retval, int icon, short x1, short y1, short x2, short y2, int *poin, float min, float max, float a1, float a2,  char *tip);
uiBut *uiDefIconButBitI(uiBlock *block, int type, int bit, int retval, int icon, short x1, short y1, short x2, short y2, int *poin, float min, float max, float a1, float a2,  char *tip);
uiBut *uiDefIconButS(uiBlock *block, int type, int retval, int icon, short x1, short y1, short x2, short y2, short *poin, float min, float max, float a1, float a2,  char *tip);
uiBut *uiDefIconButBitS(uiBlock *block, int type, int bit, int retval, int icon, short x1, short y1, short x2, short y2, short *poin, float min, float max, float a1, float a2,  char *tip);
uiBut *uiDefIconButC(uiBlock *block, int type, int retval, int icon, short x1, short y1, short x2, short y2, char *poin, float min, float max, float a1, float a2,  char *tip);
uiBut *uiDefIconButBitC(uiBlock *block, int type, int bit, int retval, int icon, short x1, short y1, short x2, short y2, char *poin, float min, float max, float a1, float a2,  char *tip);

uiBut *uiDefIconTextBut(uiBlock *block, int type, int retval, int icon, char *str, short x1, short y1, short x2, short y2, void *poin, float min, float max, float a1, float a2,  char *tip);

uiBut *uiDefIconTextButF(uiBlock *block, int type, int retval, int icon, char *str, short x1, short y1, short x2, short y2, float *poin, float min, float max, float a1, float a2,  char *tip);
uiBut *uiDefIconTextButBitF(uiBlock *block, int type, int bit, int retval, int icon, char *str, short x1, short y1, short x2, short y2, float *poin, float min, float max, float a1, float a2,  char *tip);
uiBut *uiDefIconTextButI(uiBlock *block, int type, int retval, int icon, char *str, short x1, short y1, short x2, short y2, int *poin, float min, float max, float a1, float a2,  char *tip);
uiBut *uiDefIconTextButBitI(uiBlock *block, int type, int bit, int retval, int icon, char *str, short x1, short y1, short x2, short y2, int *poin, float min, float max, float a1, float a2,  char *tip);
uiBut *uiDefIconTextButS(uiBlock *block, int type, int retval, int icon, char *str, short x1, short y1, short x2, short y2, short *poin, float min, float max, float a1, float a2,  char *tip);
uiBut *uiDefIconTextButBitS(uiBlock *block, int type, int bit, int retval, int icon, char *str, short x1, short y1, short x2, short y2, short *poin, float min, float max, float a1, float a2,  char *tip);
uiBut *uiDefIconTextButC(uiBlock *block, int type, int retval, int icon, char *str, short x1, short y1, short x2, short y2, char *poin, float min, float max, float a1, float a2,  char *tip);
uiBut *uiDefIconTextButBitC(uiBlock *block, int type, int bit, int retval, int icon, char *str, short x1, short y1, short x2, short y2, char *poin, float min, float max, float a1, float a2,  char *tip);

typedef void            (*uiIDPoinFuncFP) (char *str, struct ID **idpp);
void uiDefIDPoinBut(struct uiBlock *block,
                                    uiIDPoinFuncFP func, int retval, char *str,
                                    short x1, short y1,
                                    short x2, short y2,
                                    void *idpp, char *tip);

typedef uiBlock* (*uiBlockFuncFP)   (void *arg1);
uiBut *uiDefBlockBut(uiBlock *block, uiBlockFuncFP func, void *func_arg1, char *str, short x1, short y1, short x2, short y2, char *tip);
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);

void uiDefKeyevtButS(uiBlock *block, int retval, char *str, short x1, short y1, short x2, short y2, short *spoin, char *tip);

void uiAutoBlock(struct uiBlock *block, 
                         float minx, float miny, 
                         float sizex, float sizey, int flag);
void uiSetButLink(struct uiBut *but, 
                          void **poin, 
                          void ***ppoin, 
                          short *tot, 
                          int from, int to);

int         uiBlocksGetYMin         (ListBase *lb);
int         uiBlockGetCol           (uiBlock *block);
void* uiBlockGetCurFont (uiBlock *block);

void  uiBlockSetCol           (uiBlock *block, int col);
void  uiBlockSetEmboss  (uiBlock *block, int emboss);
void  uiBlockSetDirection     (uiBlock *block, int direction);
void  uiBlockFlipOrder  (uiBlock *block);
void  uiBlockSetFlag          (uiBlock *block, int flag);
void  uiBlockSetXOfs          (uiBlock *block, int xofs);

int         uiButGetRetVal          (uiBut *but);

void  uiButSetFlag            (uiBut *but, int flag);
void  uiButClearFlag          (uiBut *but, int flag);

void  uiBlockSetButmFunc      (uiBlock *block, void (*butmfunc)(void *arg, int but_a2), void *arg);

void  uiBlockSetFunc          (uiBlock *block,  void (*func)(void *arg1, void *arg2), void *arg1, void *arg2);
void  uiButSetFunc            (uiBut *but,            void (*func)(void *arg1, void *arg2), void *arg1, void *arg2);
void  uiBlockSetDrawExtraFunc(uiBlock *block, void (*func)());

extern void pupmenu_set_active(int val);
extern short pupmenu(char *instr); 
extern short pupmenu_col(char *instr, int maxrow);

extern void uiFreePanels(struct ListBase *lb);
extern void uiNewPanelTabbed(char *, char *);
extern int uiNewPanel(struct ScrArea *sa, struct uiBlock *block, char *panelname, char *tabname, int ofsx, int ofsy, int sizex, int sizey);
      
extern void uiSetPanel_view2d(struct ScrArea *sa);
extern void uiMatchPanel_view2d(struct ScrArea *sa);

extern void uiDrawBlocksPanels(struct ScrArea *sa, int re_align);
extern void uiNewPanelHeight(struct uiBlock *block, int sizey);
void uiPanelPush(uiBlock *block);
void uiPanelPop(uiBlock *block);
extern uiBlock *uiFindOpenPanelBlockName(ListBase *lb, char *name);
extern int uiAlignPanelStep(struct ScrArea *sa, float fac);
extern void uiPanelControl(int);
extern void uiSetPanelHandler(int);

#endif /*  BIF_INTERFACE_H */


Generated by  Doxygen 1.6.0   Back to index