1 #ifndef __lib_gui_subtitle_h
2 #define __lib_gui_subtitle_h
4 #include <lib/gui/ewidget.h>
5 #include <lib/dvb/teletext.h>
6 #include <lib/dvb/subtitle.h>
16 struct ePangoSubtitlePageElement
20 std::string m_pango_line;
22 ePangoSubtitlePageElement(const gRGB &color, const std::string &text)
23 : m_color(color), m_have_color(true), m_pango_line(text)
26 ePangoSubtitlePageElement(const std::string &text)
27 : m_have_color(false), m_pango_line(text)
32 struct ePangoSubtitlePage
35 int m_timeout; /* in milliseconds */
36 std::vector<ePangoSubtitlePageElement> m_elements;
37 void clear() { m_elements.clear(); }
40 struct eVobSubtitlePage
43 int m_timeout; /* in milliseconds */
44 ePtr<gPixmap> m_pixmap;
47 class eDVBTeletextSubtitlePage;
48 class eDVBSubtitlePage;
50 class eSubtitleWidget: public eWidget, public Object
53 eSubtitleWidget(eWidget *parent);
55 void setPage(const eDVBTeletextSubtitlePage &p);
56 void setPage(const eDVBSubtitlePage &p);
57 void setPage(const ePangoSubtitlePage &p);
59 void setPixmap(ePtr<gPixmap> &pixmap, gRegion changed, eRect dest = eRect(0, 0, 720, 576));
61 typedef enum { Subtitle_TTX, Subtitle_Regular, Subtitle_Bold, Subtitle_Italic, Subtitle_MAX } subfont_t;
65 int have_foreground_color, have_shadow_color;
66 gRGB foreground_color, shadow_color;
71 static void setFontStyle(subfont_t face, gFont *font, int autoColor, const gRGB &col, const gRGB &shadowCol, const ePoint &shadowOffset);
74 int event(int event, void *data=0, void *data2=0);
77 eDVBTeletextSubtitlePage m_page;
80 eDVBSubtitlePage m_dvb_page;
83 ePangoSubtitlePage m_pango_page;
85 ePtr<eTimer> m_hide_subtitles_timer;
87 gRegion m_visible_region;
89 static eSubtitleStyle subtitleStyles[Subtitle_MAX];
91 ePtr<gPixmap> m_pixmap; // pixmap to paint on next evtPaint