#include "third_party/blink/renderer/core/layout/svg/layout_svg_resource_clipper.h"
#include "third_party/blink/renderer/core/display_lock/display_lock_utilities.h"
#include "third_party/blink/renderer/core/dom/element_traversal.h"
#include "third_party/blink/renderer/core/layout/hit_test_result.h"
#include "third_party/blink/renderer/core/layout/layout_box_model_object.h"
#include "third_party/blink/renderer/core/layout/svg/svg_resources.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/svg/svg_clip_path_element.h"
#include "third_party/blink/renderer/core/svg/svg_geometry_element.h"
#include "third_party/blink/renderer/core/svg/svg_use_element.h"
#include "third_party/blink/renderer/platform/graphics/paint/paint_record.h"
#include "third_party/blink/renderer/platform/graphics/paint/paint_record_builder.h"
#include "third_party/skia/include/pathops/SkPathOps.h"
namespace blink {
namespace {
enum class ClipStrategy { … };
ClipStrategy ModifyStrategyForClipPath(const ComputedStyle& style,
ClipStrategy strategy) { … }
ClipStrategy DetermineClipStrategy(const SVGGraphicsElement& element) { … }
ClipStrategy DetermineClipStrategy(const SVGElement& element) { … }
bool ContributesToClip(const SVGElement& element) { … }
Path PathFromElement(const SVGElement& element) { … }
}
LayoutSVGResourceClipper::LayoutSVGResourceClipper(SVGClipPathElement* node)
: … { … }
LayoutSVGResourceClipper::~LayoutSVGResourceClipper() = default;
void LayoutSVGResourceClipper::RemoveAllClientsFromCache() { … }
std::optional<Path> LayoutSVGResourceClipper::AsPath() { … }
PaintRecord LayoutSVGResourceClipper::CreatePaintRecord() { … }
void LayoutSVGResourceClipper::CalculateLocalClipBounds() { … }
SVGUnitTypes::SVGUnitType LayoutSVGResourceClipper::ClipPathUnits() const { … }
AffineTransform LayoutSVGResourceClipper::CalculateClipTransform(
const gfx::RectF& reference_box) const { … }
bool LayoutSVGResourceClipper::HitTestClipContent(
const gfx::RectF& reference_box,
const LayoutObject& reference_box_object,
const HitTestLocation& location) const { … }
gfx::RectF LayoutSVGResourceClipper::ResourceBoundingBox(
const gfx::RectF& reference_box) { … }
bool LayoutSVGResourceClipper::FindCycleFromSelf() const { … }
void LayoutSVGResourceClipper::StyleDidChange(StyleDifference diff,
const ComputedStyle* old_style) { … }
}