1 #include <lib/gui/esubtitle.h>
2 #include <lib/gdi/grc.h>
5 ok, here's much room for improvements.
7 first, the placing of the individual elements is sub-optimal.
8 then maybe a colored background would be an option.
12 eSubtitleWidget::eSubtitleWidget(eWidget *parent)
15 setBackgroundColor(gRGB(0,0,0,255));
18 void eSubtitleWidget::addPage(const eDVBTeletextSubtitlePage &p)
20 eDebug("ADD Subtitle Page!!");
26 void eSubtitleWidget::checkTiming()
31 void eSubtitleWidget::activatePage()
36 int eSubtitleWidget::event(int event, void *data, void *data2)
42 ePtr<eWindowStyle> style;
43 gPainter &painter = *(gPainter*)data2;
47 eWidget::event(event, data, data2);
48 ePtr<gFont> font = new gFont("Regular", 30);
49 painter.setFont(font);
51 std::list<eDVBTeletextSubtitlePage>::iterator pi = m_pages.begin();
52 if (pi == m_pages.end())
53 painter.renderText(eRect(ePoint(0, 0), size()), "waiting for subtitles...", gPainter::RT_WRAP);
56 const eDVBTeletextSubtitlePage &page = *pi;
57 int elements = page.m_elements.size();
58 int height = size().height();
59 int size_per_element = height / (elements ? elements : 1);
60 for (int i=0; i<elements; ++i)
62 painter.setForegroundColor(gRGB(0,0,0));
63 painter.renderText(eRect(2, size_per_element * i + 2, size().width(), size_per_element), page.m_elements[i].m_text, gPainter::RT_WRAP|gPainter::RT_VALIGN_CENTER|gPainter::RT_HALIGN_CENTER);
64 painter.setForegroundColor(page.m_elements[i].m_color);
65 painter.renderText(eRect(0, size_per_element * i, size().width(), size_per_element), page.m_elements[i].m_text, gPainter::RT_WRAP|gPainter::RT_VALIGN_CENTER|gPainter::RT_HALIGN_CENTER);
71 return eWidget::event(event, data, data2);