void SubtitleScreen::ClearDisplayedSubtitles(void) { for (int i = 0; i < 8; i++) Clear708Cache(i); DeleteAllChildren(); m_expireTimes.clear(); SetRedraw(); }
void SubtitleScreen::DisplayCC708Subtitles(void) { if (!m_708reader) return; CC708Service *cc708service = m_708reader->GetCurrentService(); float video_aspect = 1.77777f; if (m_player && m_player->GetVideoOutput()) { video_aspect = m_player->GetVideoAspect(); QRect oldsafe = m_safeArea; m_safeArea = m_player->GetVideoOutput()->GetSafeRect(); if (oldsafe != m_safeArea) { for (uint i = 0; i < 8; i++) cc708service->windows[i].changed = true; int size = (m_safeArea.height() * m_textFontZoom) / 2000; m_708fontSizes[1] = size; m_708fontSizes[0] = size * 32 / 42; m_708fontSizes[2] = size * 42 / 32; } } else { return; } if (!Initialise708Fonts(m_fontStretch)) return; for (uint i = 0; i < 8; i++) { CC708Window &win = cc708service->windows[i]; if (win.exists && win.visible && !win.changed) continue; Clear708Cache(i); if (!win.exists || !win.visible) continue; QMutexLocker locker(&win.lock); vector<CC708String*> list = win.GetStrings(); if (list.size()) Display708Strings(win, i, video_aspect, list); for (uint j = 0; j < list.size(); j++) delete list[j]; win.changed = false; } }