diff options
author | albeu <albeu@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-11-14 23:47:11 +0000 |
---|---|---|
committer | albeu <albeu@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-11-14 23:47:11 +0000 |
commit | c83ebc0b7df94135390661a0d7a1a7b9bda57462 (patch) | |
tree | 5c1a489baddf23a95de12d1a678599f0da04f399 /libmenu/menu.h | |
parent | 54e31581a3cc8cd5501baa8553ab0a1cf2a75bee (diff) | |
download | mpv-c83ebc0b7df94135390661a0d7a1a7b9bda57462.tar.bz2 mpv-c83ebc0b7df94135390661a0d7a1a7b9bda57462.tar.xz |
OSD menus initial version
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8198 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmenu/menu.h')
-rw-r--r-- | libmenu/menu.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/libmenu/menu.h b/libmenu/menu.h new file mode 100644 index 0000000000..225326a40b --- /dev/null +++ b/libmenu/menu.h @@ -0,0 +1,72 @@ + +struct menu_priv_s; +typedef struct menu_s menu_t; + +struct menu_s { + void (*draw)(menu_t* menu,mp_image_t* mpi); + void (*read_cmd)(menu_t* menu,int cmd); + void (*read_key)(menu_t* menu,int cmd); + void (*close)(menu_t* menu); + m_struct_t* priv_st; + struct menu_priv_s* priv; + int show; // Draw it ? + int cl; // Close request (user sent a close cmd or + menu_t* parent; +}; + +typedef struct menu_info_s { + const char *info; + const char *name; + const char *author; + const char *comment; + m_struct_t priv_st; // Config struct definition + // cfg is a config struct as defined in cfg_st, it may be used as a priv struct + // cfg is filled from the attributs found in the cfg file + // the args param hold the content of the balise in the cfg file (if any) + int (*open)(menu_t* menu, char* args); +} menu_info_t; + + +#define MENU_CMD_UP 0 +#define MENU_CMD_DOWN 1 +#define MENU_CMD_OK 2 +#define MENU_CMD_CANCEL 3 + +/// Global init/uninit +int menu_init(char* cfg_file); +void menu_unint(void); + +/// Open a menu defined in the config file +menu_t* menu_open(char *name); + +void menu_draw(menu_t* menu,mp_image_t* mpi); +void menu_read_cmd(menu_t* menu,int cmd); +void menu_close(menu_t* menu); +void menu_read_key(menu_t* menu,int cmd); + +//// Default implementation +void menu_dflt_read_key(menu_t* menu,int cmd); + +/////////// Helpers + +#define MENU_TEXT_TOP (1<<0) +#define MENU_TEXT_VCENTER (1<<1) +#define MENU_TEXT_BOT (1<<2) +#define MENU_TEXT_VMASK (MENU_TEXT_TOP|MENU_TEXT_VCENTER|MENU_TEXT_BOT) +#define MENU_TEXT_LEFT (1<<3) +#define MENU_TEXT_HCENTER (1<<4) +#define MENU_TEXT_RIGHT (1<<5) +#define MENU_TEXT_HMASK (MENU_TEXT_LEFT|MENU_TEXT_HCENTER|MENU_TEXT_RIGHT) +#define MENU_TEXT_CENTER (MENU_TEXT_VCENTER|MENU_TEXT_HCENTER) + +void menu_draw_text(mp_image_t* mpi, char* txt, int x, int y); +int menu_text_length(char* txt); +int menu_text_num_lines(char* txt, int max_width); + +void menu_text_size(char* txt,int max_width, + int vspace, int warp, + int* _w, int* _h); + +void menu_draw_text_full(mp_image_t* mpi,char* txt, + int x, int y,int w, int h, + int vspace, int warp, int align, int anchor); |