10l initial patch by Oded Shimon <ods15 at ods15.dyndns.org>
[mplayer/greg.git] / libvo / sub.h
blobd257e86913e734045ad04ede2f5eb1ad48e4c78d
2 #ifndef __MPLAYER_SUB_H
3 #define __MPLAYER_SUB_H
5 typedef struct mp_osd_bbox_s {
6 int x1,y1,x2,y2;
7 } mp_osd_bbox_t;
9 #define OSDTYPE_OSD 1
10 #define OSDTYPE_SUBTITLE 2
11 #define OSDTYPE_PROGBAR 3
12 #define OSDTYPE_SPU 4
14 #define OSDFLAG_VISIBLE 1
15 #define OSDFLAG_CHANGED 2
16 #define OSDFLAG_BBOX 4
17 #define OSDFLAG_OLD_BBOX 8
18 #define OSDFLAG_FORCE_UPDATE 16
20 #define MAX_UCS 1600
21 #define MAX_UCSLINES 16
23 typedef struct mp_osd_obj_s {
24 struct mp_osd_obj_s* next;
25 unsigned char type;
26 unsigned char alignment; // 2 bits: x;y percentages, 2 bits: x;y relative to parent; 2 bits: alignment left/right/center
27 unsigned short flags;
28 int x,y;
29 int dxs,dys;
30 mp_osd_bbox_t bbox; // bounding box
31 mp_osd_bbox_t old_bbox; // the renderer will save bbox here
32 union {
33 struct {
34 void* sub; // value of vo_sub at last update
35 int utbl[MAX_UCS+1]; // subtitle text
36 int xtbl[MAX_UCSLINES]; // x positions
37 int lines; // no. of lines
38 } subtitle;
39 struct {
40 int elems;
41 } progbar;
42 } params;
43 int stride;
45 int allocated;
46 unsigned char *alpha_buffer;
47 unsigned char *bitmap_buffer;
48 } mp_osd_obj_t;
51 #if 0
53 // disable subtitles:
54 static inline void vo_draw_text_osd(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride)){
57 #else
59 #include "subreader.h"
61 extern unsigned char* vo_osd_text;
63 extern int vo_osd_progbar_type;
64 extern int vo_osd_progbar_value; // 0..255
66 extern subtitle* vo_sub;
68 extern void* vo_spudec;
69 extern void* vo_vobsub;
71 #define OSD_PLAY 0x01
72 #define OSD_PAUSE 0x02
73 #define OSD_STOP 0x03
74 #define OSD_REW 0x04
75 #define OSD_FFW 0x05
76 #define OSD_CLOCK 0x06
77 #define OSD_CONTRAST 0x07
78 #define OSD_SATURATION 0x08
79 #define OSD_VOLUME 0x09
80 #define OSD_BRIGHTNESS 0x0A
81 #define OSD_HUE 0x0B
82 #define OSD_PANSCAN 0x50
84 #define OSD_PB_START 0x10
85 #define OSD_PB_0 0x11
86 #define OSD_PB_END 0x12
87 #define OSD_PB_1 0x13
89 /* now in textform */
90 extern char * __sub_osd_names[];
91 extern char * __sub_osd_names_short[];
93 extern int sub_unicode;
94 extern int sub_utf8;
96 #ifdef USE_ICONV
97 extern char *sub_cp;
98 #endif
99 extern int sub_pos;
100 extern int sub_width_p;
101 extern int sub_alignment;
102 extern int sub_visibility;
103 extern int suboverlap_enabled;
104 extern int sub_bg_color; /* subtitles background color */
105 extern int sub_bg_alpha;
106 extern int spu_alignment;
107 extern int spu_aamode;
108 extern float spu_gaussvar;
110 //extern void vo_draw_text_osd(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride));
111 //extern void vo_draw_text_progbar(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride));
112 //extern void vo_draw_text_sub(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride));
113 extern 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));
114 extern void vo_remove_text(int dxs,int dys,void (*remove)(int x0,int y0, int w,int h));
116 void vo_init_osd();
117 int vo_update_osd(int dxs,int dys);
118 int vo_osd_changed(int new_value);
119 int vo_osd_check_range_update(int,int,int,int);
121 extern int vo_osd_changed_flag;
123 #endif
124 #endif