git.cweiske.de
/
enigma2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
get notified on new page, color decoding
[enigma2.git]
/
lib
/
dvb
/
teletext.cpp
diff --git
a/lib/dvb/teletext.cpp
b/lib/dvb/teletext.cpp
index 17020bb3027a451d6a68ef8c390d6c7e8933b499..6f8886eb6688b6299668a2b8c02f3bd897b5e523 100644
(file)
--- a/
lib/dvb/teletext.cpp
+++ b/
lib/dvb/teletext.cpp
@@
-166,8
+166,11
@@
int eDVBTeletextParser::start(int pid)
void eDVBTeletextParser::handlePageStart()
{
void eDVBTeletextParser::handlePageStart()
{
- if (m_C & (1<<4)) /* erase flag set */
- m_subtitle_page.clear();
+// if (m_C & (1<<4)) /* erase flag set */
+
+ /* we are always erasing the page,
+ even when the erase flag is not set. */
+ m_subtitle_page.clear();
}
void eDVBTeletextParser::handleLine(unsigned char *data, int len)
}
void eDVBTeletextParser::handleLine(unsigned char *data, int len)
@@
-221,11
+224,17
@@
void eDVBTeletextParser::setPage(int page)
m_page_X = page & 0xFF; /* page number */
}
m_page_X = page & 0xFF; /* page number */
}
+void eDVBTeletextParser::connectNewPage(const Slot1<void, const eDVBTeletextSubtitlePage&> &slot, ePtr<eConnection> &connection)
+{
+ connection = new eConnection(this, m_new_subtitle_page.connect(slot));
+}
+
void eDVBTeletextParser::addSubtitleString(int color, const std::string &string)
{
void eDVBTeletextParser::addSubtitleString(int color, const std::string &string)
{
+ gRGB rgbcol((color & 1) ? 255 : 128, (color & 2) ? 255 : 128, (color & 4) ? 255 : 128);
if ((color != m_subtitle_color) && !m_subtitle_text.empty())
{
if ((color != m_subtitle_color) && !m_subtitle_text.empty())
{
- m_subtitle_page.m_elements.push_back(eDVBTeletextSubtitlePageElement(
gRGB(0, 0xff, 0)
, m_subtitle_text));
+ m_subtitle_page.m_elements.push_back(eDVBTeletextSubtitlePageElement(
rgbcol
, m_subtitle_text));
m_subtitle_text = "";
} else if (!m_subtitle_text.empty() && m_subtitle_text[m_subtitle_text.size()-1] != ' ')
m_subtitle_text += " ";
m_subtitle_text = "";
} else if (!m_subtitle_text.empty() && m_subtitle_text[m_subtitle_text.size()-1] != ' ')
m_subtitle_text += " ";
@@
-239,4
+248,5
@@
void eDVBTeletextParser::sendSubtitlePage()
eDebug("subtitle page:");
for (unsigned int i = 0; i < m_subtitle_page.m_elements.size(); ++i)
eDebug("%s", m_subtitle_page.m_elements[i].m_text.c_str());
eDebug("subtitle page:");
for (unsigned int i = 0; i < m_subtitle_page.m_elements.size(); ++i)
eDebug("%s", m_subtitle_page.m_elements[i].m_text.c_str());
+ m_new_subtitle_page(m_subtitle_page);
}
}