void PaintPropertyTreeBuilder::updateSvgLocalToBorderBoxTransform( const LayoutObject& object, PaintPropertyTreeBuilderContext& context) { if (!object.isSVGRoot()) return; AffineTransform transformToBorderBox = SVGRootPainter(toLayoutSVGRoot(object)) .transformToPixelSnappedBorderBox(context.current.paintOffset); // The paint offset is included in |transformToBorderBox| so SVG does not need // to handle paint offset internally. context.current.paintOffset = LayoutPoint(); if (transformToBorderBox.isIdentity()) { if (auto* properties = object.getMutableForPainting().paintProperties()) properties->clearSvgLocalToBorderBoxTransform(); return; } context.current.transform = object.getMutableForPainting() .ensurePaintProperties() .updateSvgLocalToBorderBoxTransform( context.current.transform, transformToBorderBox, FloatPoint3D()); context.current.shouldFlattenInheritedTransform = false; context.current.renderingContextID = 0; }
void LayoutSVGRoot::paintReplaced(const PaintInfo& paintInfo, const LayoutPoint& paintOffset) const { SVGRootPainter(*this).paint(paintInfo, paintOffset); }