Lots of small changes, all for UI in Blender;
----- Killed UI frontbuffer draw The interface toolkit was drawing all live updates (while using menus/buttons) in the frontbuffer. This isn't well supported cross-platform, so time to be killed once. Now it uses *only* glReadPixels and glCopyPixels for frontbuffer access. Live updates or menus now are drawn in backbuffer always, and copied to front when needed. NOTE: it was tested, but needs thorough review! On PC systems I suspects backbuffer selection to screw up (check!). On SGI/SUN workstations it should work smooth; but I need evidence ----- Smaller fixes; - AA fonts were garbled on ATI systems. Now the AA fonts are drawn exact on pixel positions. Needs the new FTGL libb too, patch is on maillist - Rounded theme uses antialiased outlines - Pulldown and popup menus have nice softshadow now - New button type 'PULLDOWN', thats the one that callsup a pulldown menu. Should be added to themes, as is the full menu/pulldown drawing - Screendump for 1 window does the full window now, including header - Empty pulldowns (for example running blender without scripts) give no drawing error anymore For review & fun; - added curved lines as connectors, for Oops window
This commit is contained in:
@@ -51,9 +51,8 @@
|
||||
/* warn: rest of uiBut->flag in BIF_interface.c */
|
||||
|
||||
|
||||
/* 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
|
||||
/* block->frontbuf: (only internal here). this signals something was drawn, for flush */
|
||||
#define UI_HAS_DRAWN 1
|
||||
|
||||
|
||||
/* internal panel drawing defines */
|
||||
@@ -141,7 +140,7 @@ struct uiBut {
|
||||
BIFIconID icon;
|
||||
short but_align; /* aligning buttons, horiz/vertical */
|
||||
short lock, win;
|
||||
short iconadd;
|
||||
short iconadd, dt;
|
||||
|
||||
/* IDPOIN data */
|
||||
uiIDPoinFuncFP idpoin_func;
|
||||
@@ -187,34 +186,41 @@ struct uiBlock {
|
||||
int afterval, flag;
|
||||
void *curfont;
|
||||
|
||||
short autofill, win, winq, direction, dt, frontbuf, auto_open; //frontbuf see below
|
||||
void *saveunder;
|
||||
short autofill, win, winq, direction, dt, frontbuf, auto_open, pad; //frontbuf see below
|
||||
void *overdraw;
|
||||
|
||||
float xofs, yofs; // offset to parent button
|
||||
rctf parentrct; // for pulldowns, rect the mouse is allowed outside of menu (parent button)
|
||||
rctf safety; // pulldowns, to detect outside, can differ per case how it is created
|
||||
|
||||
rctf flush; // rect to be flushed to frontbuffer
|
||||
int handler; // for panels in other windows than buttonswin... just event code
|
||||
};
|
||||
|
||||
/* interface.c */
|
||||
|
||||
extern void ui_graphics_to_window(int win, float *x, float *y);
|
||||
extern void ui_window_to_graphics(int win, float *x, float *y);
|
||||
|
||||
extern void ui_block_flush_back(uiBlock *block);
|
||||
extern void ui_block_set_flush(uiBlock *block, uiBut *but);
|
||||
|
||||
extern void ui_check_but(uiBut *but);
|
||||
extern double ui_get_but_val(uiBut *but);
|
||||
extern void ui_get_but_vectorf(uiBut *but, float *vec);
|
||||
extern void ui_set_but_vectorf(uiBut *but, float *vec);
|
||||
extern void ui_autofill(uiBlock *block);
|
||||
extern void ui_graphics_to_window(int win, float *x, float *y);
|
||||
extern void ui_window_to_graphics(int win, float *x, float *y);
|
||||
|
||||
/* interface_panel.c */
|
||||
extern void ui_draw_panel(uiBlock *block);
|
||||
extern void ui_do_panel(uiBlock *block, uiEvent *uevent);
|
||||
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 shade);
|
||||
extern void gl_round_box_shade(int mode, float minx, float miny, float maxx, float maxy, float rad, float shadetop, float shadedown);
|
||||
|
||||
/* interface_draw.c */
|
||||
extern void ui_set_embossfunc(uiBut *but, int drawtype);
|
||||
extern void ui_draw_but(uiBut *but);
|
||||
extern void ui_rasterpos_safe(float x, float y, float aspect);
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user