void MediaControlTextTrackContainerElement::updateSizes(bool forceUpdate) { HTMLMediaElement* mediaElement = toParentMediaElement(this); if (!mediaElement) return; if (!document()->page()) return; IntRect videoBox; if (!mediaElement->renderer() || !mediaElement->renderer()->isVideo()) return; videoBox = toRenderVideo(mediaElement->renderer())->videoBox(); if (!forceUpdate && m_videoDisplaySize == videoBox) return; m_videoDisplaySize = videoBox; float smallestDimension = std::min(m_videoDisplaySize.size().height(), m_videoDisplaySize.size().width()); float fontSize = smallestDimension * 0.05f; if (fontSize != m_fontSize) { m_fontSize = fontSize; setInlineStyleProperty(CSSPropertyFontSize, String::number(fontSize) + "px"); } CueList activeCues = mediaElement->currentlyActiveCues(); for (size_t i = 0; i < activeCues.size(); ++i) { TextTrackCue* cue = activeCues[i].data(); cue->videoSizeDidChange(m_videoDisplaySize.size()); } }
void MediaControlTextTrackContainerElement::updateTimerFired(Timer<MediaControlTextTrackContainerElement>*) { if (!document().page()) return; if (m_textTrackRepresentation) { setInlineStyleProperty(CSSPropertyWidth, m_videoDisplaySize.size().width(), CSSPrimitiveValue::CSS_PX); setInlineStyleProperty(CSSPropertyHeight, m_videoDisplaySize.size().height(), CSSPrimitiveValue::CSS_PX); } HTMLMediaElement* mediaElement = parentMediaElement(this); if (!mediaElement) return; float smallestDimension = std::min(m_videoDisplaySize.size().height(), m_videoDisplaySize.size().width()); float fontScale = document().page()->group().captionPreferences()->captionFontSizeScaleAndImportance(m_fontSizeIsImportant); m_fontSize = lroundf(smallestDimension * fontScale); CueList activeCues = mediaElement->currentlyActiveCues(); for (size_t i = 0; i < activeCues.size(); ++i) { TextTrackCue* cue = activeCues[i].data(); cue->setFontSize(m_fontSize, m_videoDisplaySize.size(), m_fontSizeIsImportant); } updateDisplay(); }