Mercurial > mplayer.hg
annotate libmenu/menu.h @ 35005:b1a1dcae9760
Replace MESA YCBCR support by the Apple variant.
This adds hardware support for yuy2 and uyvy color formats when running
on OSX.
In addition add some hacks to make it fast (at least on PPC Mac Mini running
OSX 10.5), ca. 20% faster than -vo corevideo.
The MESA YCBCR variant never worked properly and has become even more broken
and thus been disabled in most maintained drivers and thus is really
a dead-end.
author | reimar |
---|---|
date | Sat, 18 Aug 2012 15:54:34 +0000 |
parents | 23d8b025634a |
children | aad2bda4f65f |
rev | line source |
---|---|
28113 | 1 /* |
2 * This file is part of MPlayer. | |
3 * | |
4 * MPlayer is free software; you can redistribute it and/or modify | |
5 * it under the terms of the GNU General Public License as published by | |
6 * the Free Software Foundation; either version 2 of the License, or | |
7 * (at your option) any later version. | |
8 * | |
9 * MPlayer is distributed in the hope that it will be useful, | |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 * GNU General Public License for more details. | |
13 * | |
14 * You should have received a copy of the GNU General Public License along | |
15 * with MPlayer; if not, write to the Free Software Foundation, Inc., | |
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | |
17 */ | |
18 | |
26029 | 19 #ifndef MPLAYER_MENU_H |
20 #define MPLAYER_MENU_H | |
8197 | 21 |
26139
4ebf3c3f2bf6
Add missing header #includes to fix 'make checkheaders'.
diego
parents:
26029
diff
changeset
|
22 #include "m_struct.h" |
4ebf3c3f2bf6
Add missing header #includes to fix 'make checkheaders'.
diego
parents:
26029
diff
changeset
|
23 #include "libmpcodecs/mp_image.h" |
30540 | 24 #include "libmpcodecs/vf.h" |
26139
4ebf3c3f2bf6
Add missing header #includes to fix 'make checkheaders'.
diego
parents:
26029
diff
changeset
|
25 |
31380
1c540767767e
Move menu-related extern variable declarations to menu.h.
diego
parents:
30642
diff
changeset
|
26 extern char *menu_chroot; |
1c540767767e
Move menu-related extern variable declarations to menu.h.
diego
parents:
30642
diff
changeset
|
27 extern char *menu_fribidi_charset; |
1c540767767e
Move menu-related extern variable declarations to menu.h.
diego
parents:
30642
diff
changeset
|
28 extern int menu_flip_hebrew; |
1c540767767e
Move menu-related extern variable declarations to menu.h.
diego
parents:
30642
diff
changeset
|
29 extern int menu_fribidi_flip_commas; |
1c540767767e
Move menu-related extern variable declarations to menu.h.
diego
parents:
30642
diff
changeset
|
30 extern int menu_keepdir; |
1c540767767e
Move menu-related extern variable declarations to menu.h.
diego
parents:
30642
diff
changeset
|
31 extern int menu_startup; |
32000
8278ef02b2e5
Move menu_mouse_* extern declarations to menu.h, where they belong.
diego
parents:
31380
diff
changeset
|
32 extern double menu_mouse_x; |
8278ef02b2e5
Move menu_mouse_* extern declarations to menu.h, where they belong.
diego
parents:
31380
diff
changeset
|
33 extern double menu_mouse_y; |
8278ef02b2e5
Move menu_mouse_* extern declarations to menu.h, where they belong.
diego
parents:
31380
diff
changeset
|
34 extern int menu_mouse_pos_updated; |
32025 | 35 extern const vf_info_t vf_info_menu; |
31380
1c540767767e
Move menu-related extern variable declarations to menu.h.
diego
parents:
30642
diff
changeset
|
36 |
8197 | 37 struct menu_priv_s; |
38 typedef struct menu_s menu_t; | |
39 | |
25208
1b3dabc8c2b8
Add type info to menu_t, now we can get the menu name and the type name of menu.
ulion
parents:
22284
diff
changeset
|
40 typedef struct menu_def_st menu_def_t; |
1b3dabc8c2b8
Add type info to menu_t, now we can get the menu name and the type name of menu.
ulion
parents:
22284
diff
changeset
|
41 |
25417
b0cd876a0c32
Remove dependency on m_struct.h when include libmenu/menu.h.
ulion
parents:
25263
diff
changeset
|
42 struct m_struct_st; |
b0cd876a0c32
Remove dependency on m_struct.h when include libmenu/menu.h.
ulion
parents:
25263
diff
changeset
|
43 |
8197 | 44 struct menu_s { |
22284 | 45 struct MPContext *ctx; |
8197 | 46 void (*draw)(menu_t* menu,mp_image_t* mpi); |
47 void (*read_cmd)(menu_t* menu,int cmd); | |
25502
605d4e3e403f
From now on, libmenu does not steal all input keys from input modules.
ulion
parents:
25461
diff
changeset
|
48 int (*read_key)(menu_t* menu,int cmd); |
8197 | 49 void (*close)(menu_t* menu); |
25417
b0cd876a0c32
Remove dependency on m_struct.h when include libmenu/menu.h.
ulion
parents:
25263
diff
changeset
|
50 struct m_struct_st* priv_st; |
8197 | 51 struct menu_priv_s* priv; |
52 int show; // Draw it ? | |
53 int cl; // Close request (user sent a close cmd or | |
54 menu_t* parent; | |
25208
1b3dabc8c2b8
Add type info to menu_t, now we can get the menu name and the type name of menu.
ulion
parents:
22284
diff
changeset
|
55 menu_def_t *type; |
8197 | 56 }; |
57 | |
58 typedef struct menu_info_s { | |
59 const char *info; | |
60 const char *name; | |
61 const char *author; | |
62 const char *comment; | |
25419
59aba7a96701
Replace another m_struct_t by 'struct m_struct_st' to remove depedency
ulion
parents:
25417
diff
changeset
|
63 struct m_struct_st priv_st; // Config struct definition |
8197 | 64 // cfg is a config struct as defined in cfg_st, it may be used as a priv struct |
65 // cfg is filled from the attributs found in the cfg file | |
66 // the args param hold the content of the balise in the cfg file (if any) | |
67 int (*open)(menu_t* menu, char* args); | |
68 } menu_info_t; | |
69 | |
70 | |
71 #define MENU_CMD_UP 0 | |
72 #define MENU_CMD_DOWN 1 | |
73 #define MENU_CMD_OK 2 | |
74 #define MENU_CMD_CANCEL 3 | |
17945
98f4e3704a76
Allow 6 ways (up/down/left/right/ok/cancel) navigation.
albeu
parents:
8197
diff
changeset
|
75 #define MENU_CMD_LEFT 4 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28113
diff
changeset
|
76 #define MENU_CMD_RIGHT 5 |
19490
f57977ac0394
support multiple actions in menu's file browser using key bindings
ben
parents:
18193
diff
changeset
|
77 #define MENU_CMD_ACTION 6 |
25263
96d0992c7920
Remove hardcoded key->cmd bindings in libmenu, support custom key bindings
ulion
parents:
25208
diff
changeset
|
78 #define MENU_CMD_HOME 7 |
96d0992c7920
Remove hardcoded key->cmd bindings in libmenu, support custom key bindings
ulion
parents:
25208
diff
changeset
|
79 #define MENU_CMD_END 8 |
96d0992c7920
Remove hardcoded key->cmd bindings in libmenu, support custom key bindings
ulion
parents:
25208
diff
changeset
|
80 #define MENU_CMD_PAGE_UP 9 |
96d0992c7920
Remove hardcoded key->cmd bindings in libmenu, support custom key bindings
ulion
parents:
25208
diff
changeset
|
81 #define MENU_CMD_PAGE_DOWN 10 |
25461 | 82 #define MENU_CMD_CLICK 11 |
8197 | 83 |
84 /// Global init/uninit | |
22284 | 85 int menu_init(struct MPContext *mpctx, char* cfg_file); |
25420 | 86 void menu_uninit(void); |
8197 | 87 |
88 /// Open a menu defined in the config file | |
89 menu_t* menu_open(char *name); | |
90 | |
91 void menu_draw(menu_t* menu,mp_image_t* mpi); | |
92 void menu_read_cmd(menu_t* menu,int cmd); | |
93 void menu_close(menu_t* menu); | |
25502
605d4e3e403f
From now on, libmenu does not steal all input keys from input modules.
ulion
parents:
25461
diff
changeset
|
94 int menu_read_key(menu_t* menu,int cmd); |
8197 | 95 |
96 //// Default implementation | |
25263
96d0992c7920
Remove hardcoded key->cmd bindings in libmenu, support custom key bindings
ulion
parents:
25208
diff
changeset
|
97 int menu_dflt_read_key(menu_t* menu,int cmd); |
8197 | 98 |
25461 | 99 /// Receive mouse position events. |
100 void menu_update_mouse_pos(double x, double y); | |
101 | |
8197 | 102 /////////// Helpers |
103 | |
104 #define MENU_TEXT_TOP (1<<0) | |
105 #define MENU_TEXT_VCENTER (1<<1) | |
106 #define MENU_TEXT_BOT (1<<2) | |
107 #define MENU_TEXT_VMASK (MENU_TEXT_TOP|MENU_TEXT_VCENTER|MENU_TEXT_BOT) | |
108 #define MENU_TEXT_LEFT (1<<3) | |
109 #define MENU_TEXT_HCENTER (1<<4) | |
110 #define MENU_TEXT_RIGHT (1<<5) | |
111 #define MENU_TEXT_HMASK (MENU_TEXT_LEFT|MENU_TEXT_HCENTER|MENU_TEXT_RIGHT) | |
112 #define MENU_TEXT_CENTER (MENU_TEXT_VCENTER|MENU_TEXT_HCENTER) | |
113 | |
114 void menu_draw_text(mp_image_t* mpi, char* txt, int x, int y); | |
115 int menu_text_length(char* txt); | |
116 int menu_text_num_lines(char* txt, int max_width); | |
117 | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28113
diff
changeset
|
118 void menu_text_size(char* txt,int max_width, |
8197 | 119 int vspace, int warp, |
120 int* _w, int* _h); | |
121 | |
122 void menu_draw_text_full(mp_image_t* mpi,char* txt, | |
123 int x, int y,int w, int h, | |
124 int vspace, int warp, int align, int anchor); | |
17993
98eb966a4024
Add a function to draw flat boxes and use it to make the list
albeu
parents:
17945
diff
changeset
|
125 |
18193 | 126 void menu_draw_box(mp_image_t* mpi, unsigned char grey, unsigned char alpha, int x, int y, int w, int h); |
25553
6ac1ece1f9fe
Add multiple inclusion guards to all header files that lack them.
diego
parents:
25502
diff
changeset
|
127 |
30642
a972c1a4a012
cosmetics: Rename struct vf_instance_s --> vf_instance.
diego
parents:
30540
diff
changeset
|
128 void vf_menu_pause_update(struct vf_instance *vf); |
30540 | 129 |
26029 | 130 #endif /* MPLAYER_MENU_H */ |