#include "third_party/blink/renderer/core/layout/svg/svg_resources.h"
#include "base/ranges/algorithm.h"
#include "third_party/blink/renderer/core/css/properties/longhands.h"
#include "third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter.h"
#include "third_party/blink/renderer/core/layout/svg/layout_svg_resource_paint_server.h"
#include "third_party/blink/renderer/core/layout/svg/layout_svg_text.h"
#include "third_party/blink/renderer/core/paint/filter_effect_builder.h"
#include "third_party/blink/renderer/core/style/computed_style.h"
#include "third_party/blink/renderer/core/style/reference_clip_path_operation.h"
#include "third_party/blink/renderer/core/style/style_svg_resource.h"
#include "third_party/blink/renderer/core/svg/graphics/filters/svg_filter_builder.h"
#include "third_party/blink/renderer/core/svg/svg_filter_primitive_standard_attributes.h"
#include "third_party/blink/renderer/core/svg/svg_length_functions.h"
#include "third_party/blink/renderer/core/svg/svg_resource.h"
#include "third_party/blink/renderer/platform/graphics/filters/filter.h"
#include "third_party/blink/renderer/platform/graphics/filters/filter_effect.h"
#include "third_party/blink/renderer/platform/graphics/filters/paint_filter_builder.h"
#include "third_party/blink/renderer/platform/graphics/filters/source_graphic.h"
namespace blink {
SVGElementResourceClient* SVGResources::GetClient(const LayoutObject& object) { … }
SVGElementResourceClient& SVGResources::EnsureClient(
const LayoutObject& object) { … }
gfx::RectF SVGResources::ReferenceBoxForEffects(
const LayoutObject& layout_object,
GeometryBox geometry_box,
ForeignObjectQuirk foreign_object_quirk) { … }
void SVGResources::UpdateEffects(LayoutObject& object,
StyleDifference diff,
const ComputedStyle* old_style) { … }
void SVGResources::ClearEffects(const LayoutObject& object) { … }
void SVGResources::UpdatePaints(const LayoutObject& object,
const ComputedStyle* old_style,
const ComputedStyle& style) { … }
void SVGResources::ClearPaints(const LayoutObject& object,
const ComputedStyle* style) { … }
void SVGResources::UpdateMarkers(const LayoutObject& object,
const ComputedStyle* old_style) { … }
void SVGResources::ClearMarkers(const LayoutObject& object,
const ComputedStyle* style) { … }
class SVGElementResourceClient::FilterData final
: public GarbageCollected<SVGElementResourceClient::FilterData> { … };
SVGElementResourceClient::SVGElementResourceClient(SVGElement* element)
: … { … }
namespace {
template <typename ContainerType>
bool ContainsResource(const ContainerType* container, SVGResource* resource) { … }
bool ContainsResource(const FilterOperations& operations,
SVGResource* resource) { … }
}
void SVGElementResourceClient::ResourceContentChanged(SVGResource* resource) { … }
void SVGElementResourceClient::FilterPrimitiveChanged(
SVGResource* resource,
SVGFilterPrimitiveStandardAttributes& primitive,
const QualifiedName& attribute) { … }
SVGElementResourceClient::FilterData*
SVGElementResourceClient::CreateFilterDataWithNodeMap(
FilterEffectBuilder& builder,
const ReferenceFilterOperation& reference_filter) { … }
void SVGElementResourceClient::UpdateFilterData(
CompositorFilterOperations& operations) { … }
void SVGElementResourceClient::InvalidateFilterData() { … }
void SVGElementResourceClient::MarkFilterDataDirty() { … }
void SVGElementResourceClient::Trace(Visitor* visitor) const { … }
SVGResourceInvalidator::SVGResourceInvalidator(LayoutObject& object)
: … { … }
void SVGResourceInvalidator::InvalidateEffects() { … }
void SVGResourceInvalidator::InvalidatePaints() { … }
}