ref: dd374fc9c9980c6440845e4f4df7792ec4b4aaf0
dir: /microui.h/
#pragma lib "libmicroui.a"
typedef unsigned mu_Id;
typedef struct mu_Command mu_Command;
typedef struct mu_Container mu_Container;
typedef struct mu_Context mu_Context;
typedef struct mu_Layout mu_Layout;
typedef struct mu_Style mu_Style;
typedef struct mu_Rect mu_Rect;
enum
{
MU_MAX_WIDTHS = 16,
MU_MAX_FMT = 127,
};
#define MU_REAL_FMT "%.3g"
#define MU_SLIDER_FMT "%.2f"
enum
{
MU_CLIP_NONE,
MU_CLIP_PART,
MU_CLIP_ALL,
};
enum
{
MU_COMMAND_JUMP,
MU_COMMAND_CLIP,
MU_COMMAND_RECT,
MU_COMMAND_TEXT,
MU_COMMAND_ICON,
MU_COMMAND_MAX,
};
enum
{
MU_COLOR_BG,
MU_COLOR_TEXT,
MU_COLOR_BORDER,
MU_COLOR_WINDOWBG,
MU_COLOR_TITLEBG,
MU_COLOR_TITLETEXT,
MU_COLOR_PANELBG,
MU_COLOR_BUTTON,
MU_COLOR_BUTTONHOVER,
MU_COLOR_BUTTONFOCUS,
MU_COLOR_BASE,
MU_COLOR_BASEHOVER,
MU_COLOR_BASEFOCUS,
MU_COLOR_SCROLLBASE,
MU_COLOR_SCROLLTHUMB,
MU_COLOR_MAX,
};
enum
{
MU_ICON_CHECK,
MU_ICON_CLOSE,
MU_ICON_COLLAPSED,
MU_ICON_EXPANDED,
MU_ICON_RESIZE,
ATLAS_DIMENSIONS,
};
enum
{
MU_RES_ACTIVE = 1<<0,
MU_RES_SUBMIT = 1<<1,
MU_RES_CHANGE = 1<<2
};
enum
{
MU_OPT_ALIGNCENTER = 1<<0,
MU_OPT_ALIGNRIGHT = 1<<1,
MU_OPT_NOINTERACT = 1<<2,
MU_OPT_NOFRAME = 1<<3,
MU_OPT_NORESIZE = 1<<4,
MU_OPT_NOSCROLL = 1<<5,
MU_OPT_NOCLOSE = 1<<6,
MU_OPT_NOTITLE = 1<<7,
MU_OPT_HOLDFOCUS = 1<<8,
MU_OPT_AUTOSIZE = 1<<9,
MU_OPT_POPUP = 1<<10,
MU_OPT_CLOSED = 1<<11,
};
enum
{
MU_MOUSE_LEFT = 1<<0,
MU_MOUSE_RIGHT = 1<<1,
MU_MOUSE_MIDDLE = 1<<2,
};
enum
{
MU_KEY_SHIFT = 1<<0,
MU_KEY_CTRL = 1<<1,
MU_KEY_ALT = 1<<2,
MU_KEY_BACKSPACE = 1<<3,
MU_KEY_RETURN = 1<<4,
MU_KEY_NACK = 1<<5,
MU_KEY_LEFT = 1<<6,
MU_KEY_RIGHT = 1<<7,
};
struct mu_Rect
{
int x;
int y;
int w;
int h;
};
struct mu_Command
{
int type;
union
{
struct
{
int dst;
}jump;
struct
{
mu_Rect rect;
}clip;
struct
{
Image *color;
mu_Rect rect;
}rect;
struct
{
Font *font;
Image *color;
int s;
Point pos;
}text;
struct
{
mu_Rect rect;
int id;
}icon;
};
};
struct mu_Layout
{
mu_Rect body;
mu_Rect next;
Point position;
Point size;
Point max;
int widths[MU_MAX_WIDTHS];
int items;
int row_index;
int next_row;
int next_type;
int indent;
};
struct mu_Container
{
int head, tail;
mu_Rect rect;
mu_Rect body;
Point content_size;
Point scroll;
int inited;
int zindex;
int open;
};
struct mu_Style
{
Font *font;
Point size;
int padding;
int spacing;
int indent;
int title_height;
int scrollbar_size;
int thumb_size;
Image *colors[MU_COLOR_MAX];
};
struct mu_Context
{
/* core state */
mu_Style _style;
mu_Style *style;
mu_Id hover;
mu_Id focus;
mu_Id last_id;
mu_Rect last_rect;
int last_zindex;
int updated_focus;
mu_Container *hover_root;
mu_Container *last_hover_root;
mu_Container *scroll_target;
char number_buf[MU_MAX_FMT];
mu_Id number_editing;
Rectangle screen;
/* buffers */
char *str;
int strmax, strnum;
mu_Container **root;
int rootmax, rootnum;
mu_Container **cnt;
int cntmax, cntnum;
mu_Rect *clip;
int clipmax, clipnum;
mu_Id *ids;
int idsmax, idsnum;
mu_Layout *layouts;
int layoutsmax, layoutsnum;
mu_Command *cmds, *oldcmds;
int cmdsmax, cmdsnum, oldcmdsmax, oldcmdsnum;
/* input state */
Point mouse_pos;
Point last_mouse_pos;
Point mouse_delta;
Point scroll_delta;
int mouse_down;
int mouse_pressed;
int key_down;
int key_pressed;
char text_input[64];
};
extern Image *atlasimage;
extern mu_Rect *atlasicons;
extern u8int defaultcolors[MU_COLOR_MAX][4];
mu_Rect mu_rect(int x, int y, int w, int h);
Image *mu_color(u8int r, u8int g, u8int b, u8int a);
void mu_init(mu_Context *ctx);
int mu_render(mu_Context *ctx);
void mu_begin(mu_Context *ctx);
void mu_end(mu_Context *ctx);
void mu_set_focus(mu_Context *ctx, mu_Id id);
mu_Id mu_get_id(mu_Context *ctx, const void *data, int size);
void mu_push_id(mu_Context *ctx, const void *data, int size);
void mu_pop_id(mu_Context *ctx);
void mu_push_clip_rect(mu_Context *ctx, mu_Rect rect);
void mu_pop_clip_rect(mu_Context *ctx);
mu_Rect mu_get_clip_rect(mu_Context *ctx);
int mu_check_clip(mu_Context *ctx, mu_Rect r);
mu_Container* mu_get_container(mu_Context *ctx);
void mu_init_window(mu_Context *ctx, mu_Container *cnt, int opt);
void mu_bring_to_front(mu_Context *ctx, mu_Container *cnt);
void mu_input_mousemove(mu_Context *ctx, int x, int y);
void mu_input_mousedown(mu_Context *ctx, int x, int y, int btn);
void mu_input_mouseup(mu_Context *ctx, int x, int y, int btn);
void mu_input_scroll(mu_Context *ctx, int x, int y);
void mu_input_keydown(mu_Context *ctx, int key);
void mu_input_keyup(mu_Context *ctx, int key);
void mu_input_text(mu_Context *ctx, const char *text);
mu_Command *mu_push_command(mu_Context *ctx, int type);
void mu_set_clip(mu_Context *ctx, mu_Rect rect);
void mu_draw_rect(mu_Context *ctx, mu_Rect rect, Image *color);
void mu_draw_box(mu_Context *ctx, mu_Rect rect, Image *color);
void mu_draw_text(mu_Context *ctx, Font *font, const char *str, int len, Point pos, Image *color);
void mu_draw_icon(mu_Context *ctx, int id, mu_Rect rect);
void mu_layout_row(mu_Context *ctx, int items, const int *widths, int height);
void mu_layout_width(mu_Context *ctx, int width);
void mu_layout_height(mu_Context *ctx, int height);
void mu_layout_begin_column(mu_Context *ctx);
void mu_layout_end_column(mu_Context *ctx);
void mu_layout_set_next(mu_Context *ctx, mu_Rect r, int relative);
mu_Rect mu_layout_next(mu_Context *ctx);
void mu_draw_control_frame(mu_Context *ctx, mu_Id id, mu_Rect rect, int colorid, int opt);
void mu_draw_control_text(mu_Context *ctx, const char *str, mu_Rect rect, int colorid, int opt);
int mu_mouse_over(mu_Context *ctx, mu_Rect rect);
void mu_update_control(mu_Context *ctx, mu_Id id, mu_Rect rect, int opt);
void mu_text(mu_Context *ctx, const char *text);
void mu_label(mu_Context *ctx, const char *text);
int mu_button_ex(mu_Context *ctx, const char *label, int icon, int opt);
int mu_button(mu_Context *ctx, const char *label);
int mu_checkbox(mu_Context *ctx, int *state, const char *label);
int mu_textbox_raw(mu_Context *ctx, char *buf, int bufsz, mu_Id id, mu_Rect r, int opt);
int mu_textbox_ex(mu_Context *ctx, char *buf, int bufsz, int opt);
int mu_textbox(mu_Context *ctx, char *buf, int bufsz);
int mu_slider_ex(mu_Context *ctx, float *value, float low, float high, float step, const char *fmt, int opt);
int mu_slider(mu_Context *ctx, float *value, float low, float high);
int mu_number_ex(mu_Context *ctx, float *value, float step, const char *fmt, int opt);
int mu_number(mu_Context *ctx, float *value, float step);
int mu_header(mu_Context *ctx, int *state, const char *label);
int mu_begin_treenode(mu_Context *ctx, int *state, const char *label);
void mu_end_treenode(mu_Context *ctx);
int mu_begin_window_ex(mu_Context *ctx, mu_Container *cnt, const char *title, int opt);
int mu_begin_window(mu_Context *ctx, mu_Container *cnt, const char *title);
void mu_end_window(mu_Context *ctx);
void mu_open_popup(mu_Context *ctx, mu_Container *cnt);
int mu_begin_popup(mu_Context *ctx, mu_Container *cnt);
void mu_end_popup(mu_Context *ctx);
void mu_begin_panel_ex(mu_Context *ctx, mu_Container *cnt, int opt);
void mu_begin_panel(mu_Context *ctx, mu_Container *cnt);
void mu_end_panel(mu_Context *ctx);