Mercurial > mplayer.hg
diff sub/sub.h @ 32467:fbe5c829c69b
Move libvo/sub.[ch] from libvo to sub.
author | cigaes |
---|---|
date | Wed, 27 Oct 2010 17:47:13 +0000 |
parents | |
children | 732cd2afae10 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sub/sub.h Wed Oct 27 17:47:13 2010 +0000 @@ -0,0 +1,148 @@ +/* + * This file is part of MPlayer. + * + * MPlayer is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * MPlayer is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with MPlayer; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef MPLAYER_SUB_H +#define MPLAYER_SUB_H + +typedef struct mp_osd_bbox_s { + int x1,y1,x2,y2; +} mp_osd_bbox_t; + +#define OSDTYPE_OSD 1 +#define OSDTYPE_SUBTITLE 2 +#define OSDTYPE_PROGBAR 3 +#define OSDTYPE_SPU 4 +#define OSDTYPE_DVDNAV 5 +#define OSDTYPE_TELETEXT 6 + +#define OSDFLAG_VISIBLE 1 +#define OSDFLAG_CHANGED 2 +#define OSDFLAG_BBOX 4 +#define OSDFLAG_OLD_BBOX 8 +#define OSDFLAG_FORCE_UPDATE 16 + +#define MAX_UCS 1600 +#define MAX_UCSLINES 16 + +typedef struct mp_osd_obj_s { + struct mp_osd_obj_s* next; + unsigned char type; + unsigned char alignment; // 2 bits: x;y percentages, 2 bits: x;y relative to parent; 2 bits: alignment left/right/center + unsigned short flags; + int x,y; + int dxs,dys; + mp_osd_bbox_t bbox; // bounding box + mp_osd_bbox_t old_bbox; // the renderer will save bbox here + union { + struct { + void* sub; // value of vo_sub at last update + int utbl[MAX_UCS+1]; // subtitle text + int xtbl[MAX_UCSLINES]; // x positions + int lines; // no. of lines + } subtitle; + struct { + int elems; + } progbar; + } params; + int stride; + + int allocated; + unsigned char *alpha_buffer; + unsigned char *bitmap_buffer; +} mp_osd_obj_t; + + +#include "subreader.h" + +extern sub_data* subdata; //currently used subtitles +extern subtitle* vo_sub; + +extern unsigned char* vo_osd_text; + +extern void* vo_osd_teletext_page; +extern int vo_osd_teletext_half; +extern int vo_osd_teletext_mode; +extern int vo_osd_teletext_format; + +extern int vo_osd_progbar_type; +extern int vo_osd_progbar_value; // 0..255 + +extern mp_osd_obj_t *vo_osd_list; + +extern void* vo_spudec; +extern void* vo_vobsub; + +#define OSD_PLAY 0x01 +#define OSD_PAUSE 0x02 +#define OSD_STOP 0x03 +#define OSD_REW 0x04 +#define OSD_FFW 0x05 +#define OSD_CLOCK 0x06 +#define OSD_CONTRAST 0x07 +#define OSD_SATURATION 0x08 +#define OSD_VOLUME 0x09 +#define OSD_BRIGHTNESS 0x0A +#define OSD_HUE 0x0B +#define OSD_BALANCE 0x0C +#define OSD_PANSCAN 0x50 + +#define OSD_PB_START 0x10 +#define OSD_PB_0 0x11 +#define OSD_PB_END 0x12 +#define OSD_PB_1 0x13 + +/* now in textform */ +extern char * sub_osd_names[]; +extern char * sub_osd_names_short[]; + +extern int sub_unicode; +extern int sub_utf8; + +extern int sub_pos; +extern int sub_width_p; +extern int sub_alignment; +extern int sub_justify; +extern int sub_visibility; +extern int sub_bg_color; /* subtitles background color */ +extern int sub_bg_alpha; +extern int spu_alignment; +extern int spu_aamode; +extern float spu_gaussvar; + +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)); +void vo_draw_text_ext(int dxs, int dys, int left_border, int top_border, + int right_border, int bottom_border, int orig_w, int orig_h, + void (*draw_alpha)(int x0, int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride)); +void vo_remove_text(int dxs,int dys,void (*remove)(int x0,int y0, int w,int h)); + +void vo_init_osd(void); +int vo_update_osd(int dxs,int dys); +int vo_osd_changed(int new_value); +int vo_osd_check_range_update(int,int,int,int); +void free_osd_list(void); + +extern int vo_osd_changed_flag; + +unsigned utf8_get_char(const char **str); + +#ifdef CONFIG_DVDNAV +#include <inttypes.h> +void osd_set_nav_box (uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey); +#endif + +#endif /* MPLAYER_SUB_H */