#include #include /* ok, here's much room for improvements. first, the placing of the individual elements is sub-optimal. then maybe a colored background would be an option. .... */ eSubtitleWidget::eSubtitleWidget(eWidget *parent) : eWidget(parent) { setBackgroundColor(gRGB(0,0,0,255)); m_page_ok = 0; } void eSubtitleWidget::setPage(const eDVBTeletextSubtitlePage &p) { m_page = p; m_page_ok = 1; invalidate(); } void eSubtitleWidget::clearPage() { m_page_ok = 0; invalidate(); } int eSubtitleWidget::event(int event, void *data, void *data2) { switch (event) { case evtPaint: { ePtr style; gPainter &painter = *(gPainter*)data2; getStyle(style); eWidget::event(event, data, data2); ePtr font = new gFont("Regular", 30); painter.setFont(font); if (!m_page_ok) painter.renderText(eRect(ePoint(0, 0), size()), "waiting for subtitles...", gPainter::RT_WRAP); else { int elements = m_page.m_elements.size(); int height = size().height(); int size_per_element = height / (elements ? elements : 1); for (int i=0; i