doxygen: blender/editors tagged.
[blender.git] / source / blender / editors / interface / interface_intern.h
index 21425bbb261b9e6cc8387c9f5f71222e74a07f4c..a2b876f04128e9e54ddb5496f90821f39cdef26b 100644 (file)
@@ -1,4 +1,4 @@
-/**
+/*
  * $Id$
  *
  * ***** BEGIN GPL LICENSE BLOCK *****
@@ -15,7 +15,7 @@
  *
  * 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.
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  *
  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
  * All rights reserved.
  * ***** END GPL LICENSE BLOCK *****
  */
 
+/** \file blender/editors/interface/interface_intern.h
+ *  \ingroup edinterface
+ */
+
+
 #ifndef INTERFACE_H
 #define INTERFACE_H
 
@@ -46,6 +51,7 @@ struct uiLayout;
 struct bContextStore;
 struct Scene;
 struct ID;
+struct ImBuf;
 
 /* ****************** general defines ************** */
 
@@ -86,23 +92,23 @@ typedef enum {
        UI_WTYPE_NORMAL,
        UI_WTYPE_BOX,
        UI_WTYPE_SCROLL,
-       UI_WTYPE_LISTITEM
+       UI_WTYPE_LISTITEM,
+       UI_WTYPE_PROGRESSBAR,
        
 } uiWidgetTypeEnum;
 
 
 
 #define UI_MAX_DRAW_STR        400
-#define UI_MAX_NAME_STR        64
-#define UI_ARRAY       29
+#define UI_MAX_NAME_STR        128
 
 /* panel limits */
 #define UI_PANEL_MINX  100
 #define UI_PANEL_MINY  70
 
 /* uiBut->flag */
-#define UI_SELECT              1
-#define UI_MOUSE_OVER  2
+#define UI_SELECT              1 /* use when the button is pressed */
+/*#define UI_MOUSE_OVER        2*/  /*UNUSED, free flag*/
 #define UI_ACTIVE              4
 #define UI_HAS_ICON            8
 #define UI_TEXTINPUT   16
@@ -118,7 +124,7 @@ typedef enum {
 #define PNL_CLOSEDX    2
 #define PNL_CLOSEDY    4
 #define PNL_CLOSED     6
-#define PNL_TABBED     8
+/*#define PNL_TABBED   8*/ /*UNUSED*/
 #define PNL_OVERLAP    16
 
 /* Button text selection:
@@ -126,6 +132,9 @@ typedef enum {
 #define EXTEND_LEFT            1
 #define EXTEND_RIGHT   2
 
+/* for scope resize zone */
+#define SCOPE_RESIZE_PAD       9
+
 typedef struct {
        short xim, yim;
        unsigned int *rect;
@@ -166,8 +175,9 @@ struct uiBut {
 
        char *poin;
        float hardmin, hardmax, softmin, softmax;
-       float a1, a2, hsv[3];   // hsv is temp memory for hsv buttons
+       float a1, a2;
        float aspect;
+       char col[4];
 
        uiButHandleFunc func;
        void *func_arg1;
@@ -179,8 +189,11 @@ struct uiBut {
 
        struct bContextStore *context;
 
+       /* not ysed yet, was used in 2.4x for ui_draw_pulldown_round & friends */
+       /*
        void (*embossfunc)(int , int , float, float, float, float, float, int);
        void (*sliderfunc)(int , float, float, float, float, float, float, int);
+       */
 
        uiButCompleteFunc autocomplete_func;
        void *autofunc_arg;
@@ -195,12 +208,15 @@ struct uiBut {
        uiLink *link;
        short linkto[2];
        
-       char *tip, *lockstr;
+       const char *tip, *lockstr;
 
        BIFIconID icon;
-       short but_align;        /* aligning buttons, horiz/vertical */
-       short lock, win;
-       short iconadd, dt;
+       char lock;
+       char dt;
+       char changed; /* could be made into a single flag */
+       unsigned char unit_type; /* so buttons can support unit systems which are not RNA */
+       short modifier_key;
+       short iconadd;
 
        /* IDPOIN data */
        uiIDPoinFuncFP idpoin_func;
@@ -222,11 +238,18 @@ struct uiBut {
 
        /* Operator data */
        struct wmOperatorType *optype;
-       int opcontext;
        struct IDProperty *opproperties;
        struct PointerRNA *opptr;
+       short opcontext;
+       unsigned char menu_key; /* 'a'-'z', always lower case */
+
+       /* Draggable data, type is WM_DRAG_... */
+       char dragtype;
+       void *dragpoin;
+       struct ImBuf *imb;
+       float imb_scale;
 
-               /* active button data */
+       /* active button data */
        struct uiHandleButtonData *active;
 
        char *editstr;
@@ -281,30 +304,33 @@ struct uiBlock {
        void *drawextra_arg1;
        void *drawextra_arg2;
 
-       int afterval, flag;
-       
-       short direction, dt;
-       short auto_open, in_use;
+       int flag;
+       char direction, dt;
+       short auto_open;
        double auto_open_last;
 
-       int lock;
-       char *lockstr;
+       const char *lockstr;
+
+       char lock;
+       char active;                                    // to keep blocks while drawing and free them afterwards
+       char tooltipdisabled;                   // to avoid tooltip after click
+       char endblock;                                  // uiEndBlock done?
        
        float xofs, yofs;                               // offset to parent button
        int dobounds, mx, my;                   // for doing delayed
        int bounds, minbounds;                  // for doing delayed
-       int endblock;                                   // uiEndBlock done?
 
        rctf safety;                            // pulldowns, to detect outside, can differ per case how it is created
        ListBase saferct;                       // uiSafetyRct list
 
        uiPopupBlockHandle *handle;     // handle
-       int tooltipdisabled;            // to avoid tooltip after click
 
-       int active;                                     // to keep blocks while drawing and free them afterwards
        int puphash;                            // popup menu hash for memory
-
+       
        void *evil_C;                           // XXX hack for dynamic operator enums
+
+       float _hsv[3];                          // XXX, only access via ui_block_hsv_get()
+       char color_profile;                             // color profile for correcting linear colors for display
 };
 
 typedef struct uiSafetyRct {
@@ -315,6 +341,8 @@ typedef struct uiSafetyRct {
 
 /* interface.c */
 
+extern void ui_delete_linkline(uiLinkLine *line, uiBut *but);
+
 extern int ui_translate_buttons(void);
 extern int ui_translate_menus(void);
 extern int ui_translate_tooltips(void);
@@ -337,15 +365,17 @@ extern void ui_set_but_vectorf(uiBut *but, float *vec);
 extern void ui_hsvcircle_vals_from_pos(float *valrad, float *valdist, rcti *rect, float mx, float my);
 
 extern void ui_get_but_string(uiBut *but, char *str, int maxlen);
+extern void ui_convert_to_unit_alt_name(uiBut *but, char *str, int maxlen);
 extern int ui_set_but_string(struct bContext *C, uiBut *but, const char *str);
 extern int ui_get_but_string_max_length(uiBut *but);
 
+extern void ui_set_but_default(struct bContext *C, uiBut *but, short all);
+
 extern void ui_set_but_soft_range(uiBut *but, double value);
 
 extern void ui_check_but(uiBut *but);
 extern int  ui_is_but_float(uiBut *but);
 extern int  ui_is_but_unit(uiBut *but);
-extern void ui_update_block_buts_hsv(uiBlock *block, float *hsv);
 
 extern void ui_bounds_block(uiBlock *block);
 extern void ui_block_translate(uiBlock *block, int x, int y);
@@ -375,7 +405,7 @@ struct uiPopupBlockHandle {
        int butretval;
        int menuretval;
        float retvalue;
-       float retvec[3];
+       float retvec[4];
 };
 
 uiBlock *ui_block_func_COL(struct bContext *C, uiPopupBlockHandle *handle, void *arg_but);
@@ -387,6 +417,8 @@ void ui_tooltip_free(struct bContext *C, struct ARegion *ar);
 
 uiBut *ui_popup_menu_memory(uiBlock *block, uiBut *but);
 
+float *ui_block_hsv_get(uiBlock *block);
+
 /* searchbox for string button */
 ARegion *ui_searchbox_create(struct bContext *C, struct ARegion *butregion, uiBut *but);
 int ui_searchbox_inside(struct ARegion *ar, int x, int y);
@@ -395,6 +427,7 @@ void ui_searchbox_autocomplete(struct bContext *C, struct ARegion *ar, uiBut *bu
 void ui_searchbox_event(struct bContext *C, struct ARegion *ar, uiBut *but, struct wmEvent *event);
 void ui_searchbox_apply(uiBut *but, struct ARegion *ar);
 void ui_searchbox_free(struct bContext *C, struct ARegion *ar);
+void ui_but_search_test(uiBut *but);
 
 typedef uiBlock* (*uiBlockHandleCreateFunc)(struct bContext *C, struct uiPopupBlockHandle *handle, void *arg1);
 
@@ -409,36 +442,34 @@ void ui_set_name_menu(uiBut *but, int value);
 int ui_step_name_menu(uiBut *but, int step);
 
 struct AutoComplete;
-struct AutoComplete *autocomplete_begin(char *startname, int maxlen);
-void autocomplete_do_name(struct AutoComplete *autocpl, const char *name);
-void autocomplete_end(struct AutoComplete *autocpl, char *autoname);
 
 /* interface_panel.c */
 extern int ui_handler_panel_region(struct bContext *C, struct wmEvent *event);
-extern void ui_draw_aligned_panel(struct ARegion *ar, struct uiStyle *style, uiBlock *block, rcti *rect);
+extern void ui_draw_aligned_panel(struct uiStyle *style, uiBlock *block, rcti *rect);
 
 /* interface_draw.c */
 extern void ui_dropshadow(rctf *rct, float radius, float aspect, int select);
 
-extern void gl_round_box(int mode, float minx, float miny, float maxx, float maxy, float rad);
-extern void gl_round_box_shade(int mode, float minx, float miny, float maxx, float maxy, float rad, float shadetop, float shadedown);
-extern void gl_round_box_vertical_shade(int mode, float minx, float miny, float maxx, float maxy, float rad, float shadeLeft, float shadeRight);
+void ui_draw_gradient(rcti *rect, float *hsv, int type, float alpha);
 
+void ui_draw_but_HISTOGRAM(ARegion *ar, uiBut *but, struct uiWidgetColors *wcol, rcti *rect);
+void ui_draw_but_WAVEFORM(ARegion *ar, uiBut *but, struct uiWidgetColors *wcol, rcti *rect);
+void ui_draw_but_VECTORSCOPE(ARegion *ar, uiBut *but, struct uiWidgetColors *wcol, rcti *rect);
 void ui_draw_but_COLORBAND(uiBut *but, struct uiWidgetColors *wcol, rcti *rect);
 void ui_draw_but_NORMAL(uiBut *but, struct uiWidgetColors *wcol, rcti *rect);
 void ui_draw_but_CURVE(ARegion *ar, uiBut *but, struct uiWidgetColors *wcol, rcti *rect);
 void ui_draw_but_IMAGE(ARegion *ar, uiBut *but, struct uiWidgetColors *wcol, rcti *rect);
 
-
 /* interface_handlers.c */
 extern void ui_button_activate_do(struct bContext *C, struct ARegion *ar, uiBut *but);
-extern void ui_button_active_cancel(const struct bContext *C, uiBut *but);
+extern void ui_button_active_free(const struct bContext *C, uiBut *but);
 extern int ui_button_is_active(struct ARegion *ar);
 
 /* interface_widgets.c */
 void ui_draw_anti_tria(float x1, float y1, float x2, float y2, float x3, float y3);
 void ui_draw_menu_back(struct uiStyle *style, uiBlock *block, rcti *rect);
 void ui_draw_search_back(struct uiStyle *style, uiBlock *block, rcti *rect);
+int ui_link_bezier_points(rcti *rect, float coord_array[][2], int resol);
 void ui_draw_link_bezier(rcti *rect);
 
 extern void ui_draw_but(const struct bContext *C, ARegion *ar, struct uiStyle *style, uiBut *but, rcti *rect);
@@ -446,18 +477,18 @@ extern void ui_draw_but(const struct bContext *C, ARegion *ar, struct uiStyle *s
 struct ThemeUI;
 void ui_widget_color_init(struct ThemeUI *tui);
 
-void ui_draw_menu_item(struct uiFontStyle *fstyle, rcti *rect, char *name, int iconid, int state);
+void ui_draw_menu_item(struct uiFontStyle *fstyle, rcti *rect, const char *name, int iconid, int state);
+void ui_draw_preview_item(struct uiFontStyle *fstyle, rcti *rect, const char *name, int iconid, int state);
 
 /* interface_style.c */
 void uiStyleInit(void);
 
 /* interface_icons.c */
-void ui_id_icon_render(struct bContext *C, struct ID *id);
-int ui_id_icon_get(struct bContext *C, struct ID *id);
+int ui_id_icon_get(struct bContext *C, struct ID *id, int preview);
 
 /* resources.c */
 void init_userdef_do_versions(void);
-void ui_theme_init_userdef(void);
+void ui_theme_init_default(void);
 void ui_resources_init(void);
 void ui_resources_free(void);
 
@@ -478,7 +509,7 @@ void ui_but_anim_add_keyingset(struct bContext *C);
 void ui_but_anim_remove_keyingset(struct bContext *C);
 int ui_but_anim_expression_get(uiBut *but, char *str, int maxlen);
 int ui_but_anim_expression_set(uiBut *but, const char *str);
-void ui_but_anim_autokey(uiBut *but, struct Scene *scene, float cfra);
+void ui_but_anim_autokey(struct bContext *C, uiBut *but, struct Scene *scene, float cfra);
 
 #endif