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