AffineTransform SVGSVGElement::viewBoxToViewTransform(float viewWidth, float viewHeight) const { if (!m_useCurrentView || !m_viewSpec) return SVGFitToViewBox::viewBoxToViewTransform(currentViewBoxRect(), preserveAspectRatio()->currentValue(), viewWidth, viewHeight); AffineTransform ctm = SVGFitToViewBox::viewBoxToViewTransform(currentViewBoxRect(), m_viewSpec->preserveAspectRatio()->currentValue(), viewWidth, viewHeight); RawPtr<SVGTransformList> transformList = m_viewSpec->transform(); if (transformList->isEmpty()) return ctm; AffineTransform transform; if (transformList->concatenate(transform)) ctm *= transform; return ctm; }
void FontFaceCache::removeFontFace(FontFace* fontFace, bool cssConnected) { FamilyToTraitsMap::iterator fontFacesIter = m_fontFaces.find(fontFace->family()); if (fontFacesIter == m_fontFaces.end()) return; TraitsMap* familyFontFaces = fontFacesIter->value.get(); TraitsMap::iterator familyFontFacesIter = familyFontFaces->find(fontFace->traits().bitfield()); if (familyFontFacesIter == familyFontFaces->end()) return; RawPtr<CSSSegmentedFontFace> segmentedFontFace = familyFontFacesIter->value; segmentedFontFace->removeFontFace(fontFace); if (segmentedFontFace->isEmpty()) { familyFontFaces->remove(familyFontFacesIter); if (familyFontFaces->isEmpty()) m_fontFaces.remove(fontFacesIter); } m_fonts.remove(fontFace->family()); if (cssConnected) m_cssConnectedFontFaces.remove(fontFace); ++m_version; }