VTTCue::~VTTCue() { if (!hasDisplayTree()) return; displayTreeInternal()->remove(ASSERT_NO_EXCEPTION); }
void TextTrackCue::setIsActive(bool active) { m_isActive = active; if (!active) { // Remove the display tree as soon as the cue becomes inactive. displayTreeInternal()->remove(ASSERT_NO_EXCEPTION); } }
void TextTrackCue::setFontSize(int fontSize, const IntSize&, bool important) { if (!hasDisplayTree() || !fontSize) return; LOG(Media, "TextTrackCue::setFontSize - setting cue font size to %i", fontSize); displayTreeInternal()->setInlineStyleProperty(CSSPropertyFontSize, fontSize, CSSPrimitiveValue::CSS_PX, important); }
void VTTCue::removeDisplayTree() { if (m_notifyRegion && track()->regions()) { // The region needs to be informed about the cue removal. VTTRegion* region = track()->regions()->getRegionById(m_regionId); if (region) region->willRemoveVTTCueBox(m_displayTree.get()); } displayTreeInternal()->remove(ASSERT_NO_EXCEPTION); }
void VTTCue::setIsActive(bool active) { TextTrackCue::setIsActive(active); if (!active) { if (!hasDisplayTree()) return; // Remove the display tree as soon as the cue becomes inactive. displayTreeInternal()->remove(ASSERT_NO_EXCEPTION); } }
void VTTCue::removeDisplayTree() { // The region needs to be informed about the cue removal. if (m_notifyRegion && track()) { if (VTTRegionList* regions = track()->regions()) { if (VTTRegion* region = regions->getRegionById(m_regionId)) region->willRemoveTextTrackCueBox(m_displayTree.get()); } } if (!hasDisplayTree()) return; displayTreeInternal()->remove(ASSERT_NO_EXCEPTION); }
void TextTrackCueGeneric::setFontSize(int fontSize, const IntSize& videoSize, bool important) { if (!hasDisplayTree() || !fontSize) return; if (important || !baseFontSizeRelativeToVideoHeight()) { VTTCue::setFontSize(fontSize, videoSize, important); return; } double size = videoSize.height() * baseFontSizeRelativeToVideoHeight() / 100; if (fontSizeMultiplier()) size *= fontSizeMultiplier() / 100; displayTreeInternal()->setInlineStyleProperty(CSSPropertyFontSize, lround(size), CSSPrimitiveValue::CSS_PX); LOG(Media, "TextTrackCueGeneric::setFontSize - setting cue font size to %li", lround(size)); }
PassRefPtr<TextTrackCueBox> TextTrackCue::getDisplayTree(const IntSize& videoSize) { RefPtr<TextTrackCueBox> displayTree = displayTreeInternal(); if (!m_displayTreeShouldChange || !track()->isRendered()) return displayTree; // 10.1 - 10.10 calculateDisplayParameters(); // 10.11. Apply the terms of the CSS specifications to nodes within the // following constraints, thus obtaining a set of CSS boxes positioned // relative to an initial containing block: displayTree->removeChildren(); // The document tree is the tree of WebVTT Node Objects rooted at nodes. // The children of the nodes must be wrapped in an anonymous box whose // 'display' property has the value 'inline'. This is the WebVTT cue // background box. // Note: This is contained by default in m_cueBackgroundBox. m_cueBackgroundBox->setPseudo(cueShadowPseudoId()); displayTree->appendChild(m_cueBackgroundBox, ASSERT_NO_EXCEPTION, AttachLazily); // FIXME(BUG 79916): Runs of children of WebVTT Ruby Objects that are not // WebVTT Ruby Text Objects must be wrapped in anonymous boxes whose // 'display' property has the value 'ruby-base'. // FIXME(BUG 79916): Text runs must be wrapped according to the CSS // line-wrapping rules, except that additionally, regardless of the value of // the 'white-space' property, lines must be wrapped at the edge of their // containing blocks, even if doing so requires splitting a word where there // is no line breaking opportunity. (Thus, normally text wraps as needed, // but if there is a particularly long word, it does not overflow as it // normally would in CSS, it is instead forcibly wrapped at the box's edge.) displayTree->applyCSSProperties(videoSize); m_displayTreeShouldChange = false; // 10.15. Let cue's text track cue display state have the CSS boxes in // boxes. return displayTree; }
VTTCueBox* VTTCue::getDisplayTree(const IntSize& videoSize, int fontSize) { RefPtr<VTTCueBox> displayTree = displayTreeInternal(); if (!m_displayTreeShouldChange || !track()->isRendered()) return displayTree.get(); // 10.1 - 10.10 calculateDisplayParameters(); // 10.11. Apply the terms of the CSS specifications to nodes within the // following constraints, thus obtaining a set of CSS boxes positioned // relative to an initial containing block: displayTree->removeChildren(); // The document tree is the tree of WebVTT Node Objects rooted at nodes. // The children of the nodes must be wrapped in an anonymous box whose // 'display' property has the value 'inline'. This is the WebVTT cue // background box. // Note: This is contained by default in m_cueHighlightBox. m_cueHighlightBox->setPseudo(cueShadowPseudoId()); m_cueBackdropBox->setPseudo(cueBackdropShadowPseudoId()); m_cueBackdropBox->appendChild(m_cueHighlightBox, ASSERT_NO_EXCEPTION); displayTree->appendChild(m_cueBackdropBox, ASSERT_NO_EXCEPTION); // FIXME(BUG 79916): Runs of children of WebVTT Ruby Objects that are not // WebVTT Ruby Text Objects must be wrapped in anonymous boxes whose // 'display' property has the value 'ruby-base'. displayTree->setFontSizeFromCaptionUserPrefs(fontSize); displayTree->applyCSSProperties(videoSize); m_displayTreeShouldChange = false; // 10.15. Let cue's text track cue display state have the CSS boxes in // boxes. return displayTree.get(); }
void TextTrackCue::removeDisplayTree() { displayTreeInternal()->remove(ASSERT_NO_EXCEPTION); }
VTTCue::~VTTCue() { displayTreeInternal()->remove(ASSERT_NO_EXCEPTION); }