#include "third_party/blink/renderer/core/layout/svg/layout_svg_text.h"
#include <limits>
#include "third_party/blink/renderer/core/editing/position_with_affinity.h"
#include "third_party/blink/renderer/core/layout/block_node.h"
#include "third_party/blink/renderer/core/layout/constraint_space_builder.h"
#include "third_party/blink/renderer/core/layout/inline/fragment_item.h"
#include "third_party/blink/renderer/core/layout/physical_box_fragment.h"
#include "third_party/blink/renderer/core/layout/svg/layout_svg_inline_text.h"
#include "third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.h"
#include "third_party/blink/renderer/core/layout/svg/layout_svg_root.h"
#include "third_party/blink/renderer/core/layout/svg/svg_layout_info.h"
#include "third_party/blink/renderer/core/layout/svg/svg_layout_support.h"
#include "third_party/blink/renderer/core/layout/svg/svg_resources.h"
#include "third_party/blink/renderer/core/layout/svg/transform_helper.h"
#include "third_party/blink/renderer/core/layout/svg/transformed_hit_test_location.h"
#include "third_party/blink/renderer/core/paint/clip_path_clipper.h"
#include "third_party/blink/renderer/core/paint/paint_info.h"
#include "third_party/blink/renderer/core/paint/scoped_svg_paint_state.h"
#include "third_party/blink/renderer/core/paint/svg_model_object_painter.h"
#include "third_party/blink/renderer/core/svg/svg_text_element.h"
namespace blink {
namespace {
const LayoutSVGText* FindTextRoot(const LayoutObject* start) { … }
}
LayoutSVGText::LayoutSVGText(Element* element)
: … { … }
void LayoutSVGText::StyleDidChange(StyleDifference diff,
const ComputedStyle* old_style) { … }
void LayoutSVGText::WillBeDestroyed() { … }
const char* LayoutSVGText::GetName() const { … }
bool LayoutSVGText::CreatesNewFormattingContext() const { … }
void LayoutSVGText::UpdateFromStyle() { … }
bool LayoutSVGText::IsChildAllowed(LayoutObject* child,
const ComputedStyle&) const { … }
void LayoutSVGText::AddChild(LayoutObject* child, LayoutObject* before_child) { … }
void LayoutSVGText::RemoveChild(LayoutObject* child) { … }
void LayoutSVGText::InsertedIntoTree() { … }
void LayoutSVGText::WillBeRemovedFromTree() { … }
void LayoutSVGText::SubtreeStructureChanged(
LayoutInvalidationReasonForTracing) { … }
void LayoutSVGText::UpdateFont() { … }
void LayoutSVGText::UpdateTransformAffectsVectorEffect() { … }
void LayoutSVGText::Paint(const PaintInfo& paint_info) const { … }
SVGLayoutResult LayoutSVGText::UpdateSVGLayout(
const SVGLayoutInfo& layout_info) { … }
bool LayoutSVGText::UpdateAfterSVGLayout(const SVGLayoutInfo& layout_info,
bool bounds_changed) { … }
bool LayoutSVGText::IsObjectBoundingBoxValid() const { … }
gfx::RectF LayoutSVGText::ObjectBoundingBox() const { … }
gfx::RectF LayoutSVGText::StrokeBoundingBox() const { … }
gfx::RectF LayoutSVGText::DecoratedBoundingBox() const { … }
gfx::RectF LayoutSVGText::VisualRectInLocalSVGCoordinates() const { … }
void LayoutSVGText::AbsoluteQuads(Vector<gfx::QuadF>& quads,
MapCoordinatesFlags mode) const { … }
gfx::RectF LayoutSVGText::LocalBoundingBoxRectForAccessibility() const { … }
bool LayoutSVGText::NodeAtPoint(HitTestResult& result,
const HitTestLocation& hit_test_location,
const PhysicalOffset& accumulated_offset,
HitTestPhase phase) { … }
PositionWithAffinity LayoutSVGText::PositionForPoint(
const PhysicalOffset& point_in_contents) const { … }
void LayoutSVGText::SetNeedsPositioningValuesUpdate() { … }
void LayoutSVGText::SetNeedsTextMetricsUpdate() { … }
bool LayoutSVGText::NeedsTextMetricsUpdate() const { … }
LayoutSVGText* LayoutSVGText::LocateLayoutSVGTextAncestor(LayoutObject* start) { … }
const LayoutSVGText* LayoutSVGText::LocateLayoutSVGTextAncestor(
const LayoutObject* start) { … }
void LayoutSVGText::NotifySubtreeStructureChanged(
LayoutObject* object,
LayoutInvalidationReasonForTracing reason) { … }
}