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 19 #ifndef MPLAYER_SUB_H 20 #define MPLAYER_SUB_H 21 22 typedef struct mp_osd_bbox_s { 23 int x1,y1,x2,y2; 24 } mp_osd_bbox_t; 25 26 #define OSDTYPE_OSD 1 27 #define OSDTYPE_SUBTITLE 2 28 #define OSDTYPE_PROGBAR 3 29 #define OSDTYPE_SPU 4 30 #define OSDTYPE_DVDNAV 5 31 #define OSDTYPE_TELETEXT 6 32 33 #define OSDFLAG_VISIBLE 1 34 #define OSDFLAG_CHANGED 2 35 #define OSDFLAG_BBOX 4 36 #define OSDFLAG_OLD_BBOX 8 37 #define OSDFLAG_FORCE_UPDATE 16 38 39 #define MAX_UCS 1600 40 #define MAX_UCSLINES 16 41 42 typedef struct mp_osd_obj_s { 43 struct mp_osd_obj_s* next; 44 unsigned char type; 45 unsigned char alignment; // 2 bits: x;y percentages, 2 bits: x;y relative to parent; 2 bits: alignment left/right/center 46 unsigned short flags; 47 int x,y; 48 int dxs,dys; 49 mp_osd_bbox_t bbox; // bounding box 50 mp_osd_bbox_t old_bbox; // the renderer will save bbox here 51 union { 52 struct { 53 void* sub; // value of vo_sub at last update 54 int utbl[MAX_UCS+1]; // subtitle text 55 int xtbl[MAX_UCSLINES]; // x positions 56 int lines; // no. of lines 57 } subtitle; 58 struct { 59 int elems; 60 } progbar; 61 } params; 62 int stride; 63 64 int allocated; 65 unsigned char *alpha_buffer; 66 unsigned char *bitmap_buffer; 67 } mp_osd_obj_t; 68 69 70 #include "subreader.h" 71 72 extern sub_data* subdata; //currently used subtitles 73 extern subtitle* vo_sub; 74 75 extern unsigned char* vo_osd_text; 76 77 extern void* vo_osd_teletext_page; 78 extern int vo_osd_teletext_half; 79 extern int vo_osd_teletext_mode; 80 extern int vo_osd_teletext_format; 81 82 extern int vo_osd_progbar_type; 83 extern int vo_osd_progbar_value; // 0..255 84 85 extern mp_osd_obj_t *vo_osd_list; 86 87 extern void* vo_spudec; 88 extern void* vo_vobsub; 89 extern char *vobsub_name; 90 91 #define OSD_PLAY 0x01 92 #define OSD_PAUSE 0x02 93 #define OSD_STOP 0x03 94 #define OSD_REW 0x04 95 #define OSD_FFW 0x05 96 #define OSD_CLOCK 0x06 97 #define OSD_CONTRAST 0x07 98 #define OSD_SATURATION 0x08 99 #define OSD_VOLUME 0x09 100 #define OSD_BRIGHTNESS 0x0A 101 #define OSD_HUE 0x0B 102 #define OSD_BALANCE 0x0C 103 #define OSD_PANSCAN 0x50 104 105 #define OSD_PB_START 0x10 106 #define OSD_PB_0 0x11 107 #define OSD_PB_END 0x12 108 #define OSD_PB_1 0x13 109 110 /* now in textform */ 111 extern const char * const sub_osd_names[]; 112 extern const char * const sub_osd_names_short[]; 113 114 extern int sub_unicode; 115 extern int sub_utf8; 116 117 extern int sub_pos; 118 extern int sub_width_p; 119 extern int sub_alignment; 120 extern int sub_justify; 121 extern int sub_visibility; 122 extern int sub_bg_color; /* subtitles background color */ 123 extern int sub_bg_alpha; 124 extern int spu_alignment; 125 extern int spu_aamode; 126 extern float spu_gaussvar; 127 128 void vo_draw_text(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride)); 129 void vo_draw_text_ext(int dxs, int dys, int left_border, int top_border, 130 int right_border, int bottom_border, int orig_w, int orig_h, 131 void (*draw_alpha)(int x0, int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride)); 132 void vo_remove_text(int dxs,int dys,void (*remove)(int x0,int y0, int w,int h)); 133 134 void vo_init_osd(void); 135 int vo_update_osd(int dxs,int dys); 136 int vo_osd_changed(int new_value); 137 int vo_osd_check_range_update(int,int,int,int); 138 void free_osd_list(void); 139 140 extern int vo_osd_changed_flag; 141 142 unsigned utf8_get_char(const char **str); 143 144 #ifdef CONFIG_DVDNAV 145 #include <inttypes.h> 146 void osd_set_nav_box (uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey); 147 #endif 148 149 #endif /* MPLAYER_SUB_H */ 150