[cosmetics] update date in GPL header
[vuplus_xbmc] / xbmc / cores / dvdplayer / DVDSubtitles / DllLibass.h
1 #pragma once
2
3 /*
4  *      Copyright (C) 2005-2013 Team XBMC
5  *      http://www.xbmc.org
6  *
7  *  This Program is free software; you can redistribute it and/or modify
8  *  it under the terms of the GNU General Public License as published by
9  *  the Free Software Foundation; either version 2, or (at your option)
10  *  any later version.
11  *
12  *  This Program is distributed in the hope that it will be useful,
13  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  *  GNU General Public License for more details.
16  *
17  *  You should have received a copy of the GNU General Public License
18  *  along with XBMC; see the file COPYING.  If not, see
19  *  <http://www.gnu.org/licenses/>.
20  *
21  */
22
23 #if (defined HAVE_CONFIG_H) && (!defined WIN32)
24   #include "config.h"
25 #endif
26 extern "C" {
27 #if defined(WIN32)
28   #include "lib/libass/libass/ass.h"
29 #else
30   #include <ass/ass.h>
31 #endif
32 }
33 #include "DynamicDll.h"
34 #include "utils/log.h"
35
36 #ifndef LIBASS_VERSION /* Legacy version. */
37 typedef struct ass_library_s ASS_Library;
38 typedef struct render_priv_s ASS_Renderer;
39 typedef ass_image_t ASS_Image;
40 typedef ass_track_t ASS_Track;
41 typedef ass_event_t ASS_Event;
42 #endif
43
44 class DllLibassInterface
45 {
46 public:
47   virtual ~DllLibassInterface() {}
48   virtual void ass_set_extract_fonts(ASS_Library* priv, int extract)=0;
49   virtual void ass_set_fonts_dir(ASS_Library* priv, const char* fonts_dir)=0;
50   virtual ASS_Library* ass_library_init(void)=0;
51   virtual ASS_Renderer* ass_renderer_init(ASS_Library* library)=0;
52   virtual void ass_set_frame_size(ASS_Renderer* priv, int w, int h)=0;
53   virtual void ass_set_margins(ASS_Renderer* priv, int t, int b, int l, int r)=0;
54   virtual void ass_set_use_margins(ASS_Renderer* priv, int use)=0;
55   virtual void ass_set_font_scale(ASS_Renderer* priv, double font_scale)=0;
56   virtual ASS_Image* ass_render_frame(ASS_Renderer *priv, ASS_Track* track, long long now, int* detect_change)=0;
57   virtual ASS_Track* ass_new_track(ASS_Library*)=0;
58   virtual ASS_Track* ass_read_file(ASS_Library* library, char* fname, char* codepage)=0;
59   virtual void ass_free_track(ASS_Track* track)=0;
60   virtual void ass_set_fonts(ASS_Renderer *priv, const char *default_font, const char *default_family, int fc, const char *config, int update) = 0;
61   virtual void ass_set_style_overrides(ASS_Library* priv, char** list)=0;
62   virtual void ass_library_done(ASS_Library* library)=0;
63   virtual void ass_renderer_done(ASS_Renderer* renderer)=0;
64   virtual void ass_process_chunk(ASS_Track* track, char *data, int size, long long timecode, long long duration)=0;
65   virtual void ass_process_codec_private(ASS_Track* track, char *data, int size)=0;
66   virtual void ass_set_message_cb(ASS_Library *priv
67                                 , void (*msg_cb)(int level, const char *fmt, va_list args, void *data)
68                                 , void *data)=0;
69 };
70
71 class DllLibass : public DllDynamic, DllLibassInterface
72 {
73   DECLARE_DLL_WRAPPER(DllLibass, DLL_PATH_LIBASS)
74   DEFINE_METHOD2(void, ass_set_extract_fonts, (ASS_Library * p1, int p2))
75   DEFINE_METHOD2(void, ass_set_fonts_dir, (ASS_Library * p1, const char * p2))
76   DEFINE_METHOD0(ASS_Library *, ass_library_init)
77   DEFINE_METHOD1(ASS_Renderer *, ass_renderer_init, (ASS_Library * p1))
78   DEFINE_METHOD3(void, ass_set_frame_size, (ASS_Renderer * p1, int p2, int p3))
79   DEFINE_METHOD5(void, ass_set_margins, (ASS_Renderer * p1, int p2, int p3, int p4, int p5))
80   DEFINE_METHOD2(void, ass_set_use_margins, (ASS_Renderer * p1, int p2))
81   DEFINE_METHOD2(void, ass_set_font_scale, (ASS_Renderer * p1, double p2))
82   DEFINE_METHOD4(ASS_Image *, ass_render_frame, (ASS_Renderer * p1, ASS_Track * p2, long long p3, int * p4))
83   DEFINE_METHOD1(ASS_Track *, ass_new_track, (ASS_Library * p1))
84   DEFINE_METHOD3(ASS_Track *, ass_read_file, (ASS_Library * p1, char * p2, char * p3))
85   DEFINE_METHOD4(ASS_Track *, ass_read_memory, (ASS_Library * p1, char * p2, int p3, char * p4))
86   DEFINE_METHOD1(void, ass_free_track, (ASS_Track * p1))
87   DEFINE_METHOD6(void, ass_set_fonts, (ASS_Renderer* p1, const char* p2, const char* p3, int p4, const char* p5, int p6))
88   DEFINE_METHOD2(void, ass_set_style_overrides, (ASS_Library* p1, char** p2))
89   DEFINE_METHOD1(void, ass_library_done, (ASS_Library* p1))
90   DEFINE_METHOD1(void, ass_renderer_done, (ASS_Renderer* p1))
91   DEFINE_METHOD5(void, ass_process_chunk, (ASS_Track* p1, char* p2, int p3, long long p4, long long p5))
92   DEFINE_METHOD3(void, ass_process_codec_private, (ASS_Track* p1, char* p2, int p3))
93   DEFINE_METHOD3(void, ass_set_message_cb, (ASS_Library* p1, void (*p2)(int level, const char *fmt, va_list args, void *data), void* p3))
94   BEGIN_METHOD_RESOLVE()
95     RESOLVE_METHOD(ass_set_extract_fonts)
96     RESOLVE_METHOD(ass_set_fonts_dir)
97     RESOLVE_METHOD(ass_library_init)
98     RESOLVE_METHOD(ass_renderer_init)
99     RESOLVE_METHOD(ass_set_frame_size)
100     RESOLVE_METHOD(ass_set_margins)
101     RESOLVE_METHOD(ass_set_use_margins)
102     RESOLVE_METHOD(ass_set_font_scale)
103     RESOLVE_METHOD(ass_render_frame)
104     RESOLVE_METHOD(ass_new_track)
105     RESOLVE_METHOD(ass_read_file)
106     RESOLVE_METHOD(ass_read_memory)
107     RESOLVE_METHOD(ass_free_track)
108     RESOLVE_METHOD(ass_set_fonts)
109     RESOLVE_METHOD(ass_set_style_overrides)
110     RESOLVE_METHOD(ass_library_done)
111     RESOLVE_METHOD(ass_renderer_done)
112     RESOLVE_METHOD(ass_process_chunk)
113     RESOLVE_METHOD(ass_process_codec_private)
114     RESOLVE_METHOD(ass_set_message_cb)
115   END_METHOD_RESOLVE()
116 };