c88df0e689509bb1013a5a9208f04bba4e9b7f12
[vuplus_dvbapp] / lib / gui / esubtitle.h
1 #ifndef __lib_gui_subtitle_h
2 #define __lib_gui_subtitle_h
3
4 #include <lib/gui/ewidget.h>
5 #include <lib/dvb/teletext.h>
6 #include <lib/dvb/subtitle.h>
7
8 struct ePangoSubtitlePageElement
9 {
10         gRGB m_color;
11         std::string m_pango_line;
12         eRect m_area;
13         ePangoSubtitlePageElement(const gRGB &color, const std::string &text)
14                 : m_color(color), m_pango_line(text)
15         {
16         }
17 };
18
19 struct ePangoSubtitlePage
20 {
21         pts_t m_pts;
22         int m_have_pts;
23         int m_timeout; /* in milliseconds */
24         std::vector<ePangoSubtitlePageElement> m_elements;
25         void clear() { m_elements.clear(); }
26 };
27
28 class eDVBTeletextSubtitlePage;
29 class eDVBPangoSubtitlePage;
30 class ePangoSubtitlePage;
31
32 class eSubtitleWidget: public eWidget, public Object
33 {
34 public:
35         eSubtitleWidget(eWidget *parent);
36         
37         void setPage(const eDVBTeletextSubtitlePage &p);
38         void setPage(const eDVBSubtitlePage &p);
39         void setPage(const ePangoSubtitlePage &p);
40         void clearPage();
41
42         void setPixmap(ePtr<gPixmap> &pixmap, gRegion changed);
43 protected:
44         int event(int event, void *data=0, void *data2=0);
45
46 private:
47         int m_page_ok;
48         eDVBTeletextSubtitlePage m_page;
49
50         int m_dvb_page_ok;
51         eDVBSubtitlePage m_dvb_page;
52
53         int m_pango_page_ok;
54         ePangoSubtitlePage m_pango_page;
55
56         ePtr<eTimer> m_hide_subtitles_timer;
57
58         gRegion m_visible_region;
59
60         ePtr<gPixmap> m_pixmap;  // pixmap to paint on next evtPaint
61 };
62
63 #endif