Changeset 285543 in webkit


Ignore:
Timestamp:
Nov 9, 2021, 4:40:53 PM (4 years ago)
Author:
Said Abou-Hallawa
Message:

[GPU Process] Introduce FilterFunction and make it the base class of Filter and FilterEffect
https://bugs.webkit.org/show_bug.cgi?id=232413
rdar://84966765

Reviewed by Myles C. Maxfield.

This allows CSSFilter to hold a list of FilterFunctions. The Filter in
this case will act like a composite pattern of FilterEffects.

This patch also

  1. Removes the virtual function filterName() from all the FilterEffect classes. It replaces it with a static function in FilterFunction.
  2. Removes the virtual function filterEffectType() and the function FilterEffect::filterEffectClassType() since they can both be replaced by FilterFunction::filterType().
  3. Adds trait macros for all FilterEffects and the SVGFilters class.
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/coreimage/FilterEffectRendererCoreImage.mm:

(WebCore::FilterEffectRendererCoreImage::supportsCoreImageRendering):
(WebCore::FilterEffectRendererCoreImage::connectCIFilters):

  • platform/graphics/filters/FEBlend.cpp:

(WebCore::FEBlend::FEBlend):

  • platform/graphics/filters/FEBlend.h:

(): Deleted.

  • platform/graphics/filters/FEColorMatrix.cpp:

(WebCore::FEColorMatrix::FEColorMatrix):

  • platform/graphics/filters/FEColorMatrix.h:

(isType): Deleted.

  • platform/graphics/filters/FEComponentTransfer.cpp:

(WebCore::FEComponentTransfer::FEComponentTransfer):

  • platform/graphics/filters/FEComponentTransfer.h:

(isType): Deleted.

  • platform/graphics/filters/FEComposite.cpp:

(WebCore::FEComposite::FEComposite):

  • platform/graphics/filters/FEComposite.h:
  • platform/graphics/filters/FEConvolveMatrix.cpp:

(WebCore::FEConvolveMatrix::FEConvolveMatrix):

  • platform/graphics/filters/FEConvolveMatrix.h:
  • platform/graphics/filters/FEDiffuseLighting.cpp:

(WebCore::FEDiffuseLighting::FEDiffuseLighting):

  • platform/graphics/filters/FEDiffuseLighting.h:
  • platform/graphics/filters/FEDisplacementMap.cpp:

(WebCore::FEDisplacementMap::FEDisplacementMap):

  • platform/graphics/filters/FEDisplacementMap.h:
  • platform/graphics/filters/FEDropShadow.cpp:

(WebCore::FEDropShadow::FEDropShadow):

  • platform/graphics/filters/FEDropShadow.h:

(): Deleted.

  • platform/graphics/filters/FEFlood.cpp:

(WebCore::FEFlood::FEFlood):

  • platform/graphics/filters/FEFlood.h:
  • platform/graphics/filters/FEGaussianBlur.cpp:

(WebCore::FEGaussianBlur::FEGaussianBlur):

  • platform/graphics/filters/FEGaussianBlur.h:

(): Deleted.

  • platform/graphics/filters/FELighting.h:
  • platform/graphics/filters/FEMerge.cpp:

(WebCore::FEMerge::FEMerge):

  • platform/graphics/filters/FEMerge.h:

(): Deleted.

  • platform/graphics/filters/FEMorphology.cpp:

(WebCore::FEMorphology::FEMorphology):

  • platform/graphics/filters/FEMorphology.h:
  • platform/graphics/filters/FEOffset.cpp:

(WebCore::FEOffset::FEOffset):

  • platform/graphics/filters/FEOffset.h:

(): Deleted.

  • platform/graphics/filters/FESpecularLighting.cpp:

(WebCore::FESpecularLighting::FESpecularLighting):

  • platform/graphics/filters/FESpecularLighting.h:
  • platform/graphics/filters/FETile.cpp:

(WebCore::FETile::FETile):
(WebCore::FETile::platformApplySoftware):

  • platform/graphics/filters/FETile.h:
  • platform/graphics/filters/FETurbulence.cpp:

(WebCore::FETurbulence::FETurbulence):

  • platform/graphics/filters/FETurbulence.h:
  • platform/graphics/filters/Filter.h:

(WebCore::Filter::Filter):

  • platform/graphics/filters/FilterEffect.cpp:

(WebCore::FilterEffect::FilterEffect):
(WebCore::FilterEffect::determineFilterPrimitiveSubregion):
(WebCore::FilterEffect::createImageBufferResult):
(WebCore::FilterEffect::createUnmultipliedImageResult):
(WebCore::FilterEffect::createPremultipliedImageResult):

  • platform/graphics/filters/FilterEffect.h:

(isType):
(WebCore::FilterEffect::filterEffectType const): Deleted.
(WebCore::FilterEffect::filterEffectClassType const): Deleted.

  • platform/graphics/filters/FilterFunction.cpp: Added.

(WebCore::FilterFunction::FilterFunction):
(WebCore::FilterFunction::filterName):

  • platform/graphics/filters/FilterFunction.h: Added.

(WebCore::FilterFunction::filterType const):
(WebCore::FilterFunction::isCSSFilter const):
(WebCore::FilterFunction::isSVGFilter const):
(WebCore::FilterFunction::isFilter const):
(WebCore::FilterFunction::isFilterEffect const):
(WebCore::FilterFunction::sourceAlphaName):
(WebCore::FilterFunction::sourceGraphicName):
(WebCore::FilterFunction::filterName const):

  • platform/graphics/filters/SourceAlpha.cpp:

(WebCore::SourceAlpha::SourceAlpha):
(WebCore::SourceAlpha::effectName): Deleted.

  • platform/graphics/filters/SourceAlpha.h:

(WebCore::SourceAlpha::effectName):
(): Deleted.

  • platform/graphics/filters/SourceGraphic.cpp:

(WebCore::SourceGraphic::effectName): Deleted.

  • platform/graphics/filters/SourceGraphic.h:

(WebCore::SourceGraphic::effectName):
(WebCore::SourceGraphic::SourceGraphic):
(): Deleted.
(isType): Deleted.

  • platform/mediastream/mac/RealtimeIncomingAudioSourceCocoa.cpp:
  • rendering/CSSFilter.cpp:

(WebCore::CSSFilter::CSSFilter):

  • svg/graphics/filters/SVGFEImage.cpp:

(WebCore::FEImage::FEImage):

  • svg/graphics/filters/SVGFEImage.h:
  • svg/graphics/filters/SVGFilter.cpp:

(WebCore::SVGFilter::SVGFilter):

  • svg/graphics/filters/SVGFilter.h:

(isType):

  • svg/graphics/filters/SVGFilterBuilder.cpp:
Location:
trunk/Source/WebCore
Files:
2 added
51 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r285538 r285543  
     12021-11-09  Said Abou-Hallawa  <said@apple.com>
     2
     3        [GPU Process] Introduce FilterFunction and make it the base class of Filter and FilterEffect
     4        https://bugs.webkit.org/show_bug.cgi?id=232413
     5        rdar://84966765
     6
     7        Reviewed by Myles C. Maxfield.
     8
     9        This allows CSSFilter to hold a list of FilterFunctions. The Filter in
     10        this case will act like a composite pattern of FilterEffects.
     11
     12        This patch also
     13        1. Removes the virtual function filterName() from all the FilterEffect
     14           classes. It replaces it with a static function in FilterFunction.
     15        2. Removes the virtual function filterEffectType() and the function
     16           FilterEffect::filterEffectClassType() since they can both be replaced
     17           by FilterFunction::filterType().
     18        3. Adds trait macros for all FilterEffects and the SVGFilters class.
     19
     20        * Sources.txt:
     21        * WebCore.xcodeproj/project.pbxproj:
     22        * platform/graphics/coreimage/FilterEffectRendererCoreImage.mm:
     23        (WebCore::FilterEffectRendererCoreImage::supportsCoreImageRendering):
     24        (WebCore::FilterEffectRendererCoreImage::connectCIFilters):
     25        * platform/graphics/filters/FEBlend.cpp:
     26        (WebCore::FEBlend::FEBlend):
     27        * platform/graphics/filters/FEBlend.h:
     28        (): Deleted.
     29        * platform/graphics/filters/FEColorMatrix.cpp:
     30        (WebCore::FEColorMatrix::FEColorMatrix):
     31        * platform/graphics/filters/FEColorMatrix.h:
     32        (isType): Deleted.
     33        * platform/graphics/filters/FEComponentTransfer.cpp:
     34        (WebCore::FEComponentTransfer::FEComponentTransfer):
     35        * platform/graphics/filters/FEComponentTransfer.h:
     36        (isType): Deleted.
     37        * platform/graphics/filters/FEComposite.cpp:
     38        (WebCore::FEComposite::FEComposite):
     39        * platform/graphics/filters/FEComposite.h:
     40        * platform/graphics/filters/FEConvolveMatrix.cpp:
     41        (WebCore::FEConvolveMatrix::FEConvolveMatrix):
     42        * platform/graphics/filters/FEConvolveMatrix.h:
     43        * platform/graphics/filters/FEDiffuseLighting.cpp:
     44        (WebCore::FEDiffuseLighting::FEDiffuseLighting):
     45        * platform/graphics/filters/FEDiffuseLighting.h:
     46        * platform/graphics/filters/FEDisplacementMap.cpp:
     47        (WebCore::FEDisplacementMap::FEDisplacementMap):
     48        * platform/graphics/filters/FEDisplacementMap.h:
     49        * platform/graphics/filters/FEDropShadow.cpp:
     50        (WebCore::FEDropShadow::FEDropShadow):
     51        * platform/graphics/filters/FEDropShadow.h:
     52        (): Deleted.
     53        * platform/graphics/filters/FEFlood.cpp:
     54        (WebCore::FEFlood::FEFlood):
     55        * platform/graphics/filters/FEFlood.h:
     56        * platform/graphics/filters/FEGaussianBlur.cpp:
     57        (WebCore::FEGaussianBlur::FEGaussianBlur):
     58        * platform/graphics/filters/FEGaussianBlur.h:
     59        (): Deleted.
     60        * platform/graphics/filters/FELighting.h:
     61        * platform/graphics/filters/FEMerge.cpp:
     62        (WebCore::FEMerge::FEMerge):
     63        * platform/graphics/filters/FEMerge.h:
     64        (): Deleted.
     65        * platform/graphics/filters/FEMorphology.cpp:
     66        (WebCore::FEMorphology::FEMorphology):
     67        * platform/graphics/filters/FEMorphology.h:
     68        * platform/graphics/filters/FEOffset.cpp:
     69        (WebCore::FEOffset::FEOffset):
     70        * platform/graphics/filters/FEOffset.h:
     71        (): Deleted.
     72        * platform/graphics/filters/FESpecularLighting.cpp:
     73        (WebCore::FESpecularLighting::FESpecularLighting):
     74        * platform/graphics/filters/FESpecularLighting.h:
     75        * platform/graphics/filters/FETile.cpp:
     76        (WebCore::FETile::FETile):
     77        (WebCore::FETile::platformApplySoftware):
     78        * platform/graphics/filters/FETile.h:
     79        * platform/graphics/filters/FETurbulence.cpp:
     80        (WebCore::FETurbulence::FETurbulence):
     81        * platform/graphics/filters/FETurbulence.h:
     82        * platform/graphics/filters/Filter.h:
     83        (WebCore::Filter::Filter):
     84        * platform/graphics/filters/FilterEffect.cpp:
     85        (WebCore::FilterEffect::FilterEffect):
     86        (WebCore::FilterEffect::determineFilterPrimitiveSubregion):
     87        (WebCore::FilterEffect::createImageBufferResult):
     88        (WebCore::FilterEffect::createUnmultipliedImageResult):
     89        (WebCore::FilterEffect::createPremultipliedImageResult):
     90        * platform/graphics/filters/FilterEffect.h:
     91        (isType):
     92        (WebCore::FilterEffect::filterEffectType const): Deleted.
     93        (WebCore::FilterEffect::filterEffectClassType const): Deleted.
     94        * platform/graphics/filters/FilterFunction.cpp: Added.
     95        (WebCore::FilterFunction::FilterFunction):
     96        (WebCore::FilterFunction::filterName):
     97        * platform/graphics/filters/FilterFunction.h: Added.
     98        (WebCore::FilterFunction::filterType const):
     99        (WebCore::FilterFunction::isCSSFilter const):
     100        (WebCore::FilterFunction::isSVGFilter const):
     101        (WebCore::FilterFunction::isFilter const):
     102        (WebCore::FilterFunction::isFilterEffect const):
     103        (WebCore::FilterFunction::sourceAlphaName):
     104        (WebCore::FilterFunction::sourceGraphicName):
     105        (WebCore::FilterFunction::filterName const):
     106        * platform/graphics/filters/SourceAlpha.cpp:
     107        (WebCore::SourceAlpha::SourceAlpha):
     108        (WebCore::SourceAlpha::effectName): Deleted.
     109        * platform/graphics/filters/SourceAlpha.h:
     110        (WebCore::SourceAlpha::effectName):
     111        (): Deleted.
     112        * platform/graphics/filters/SourceGraphic.cpp:
     113        (WebCore::SourceGraphic::effectName): Deleted.
     114        * platform/graphics/filters/SourceGraphic.h:
     115        (WebCore::SourceGraphic::effectName):
     116        (WebCore::SourceGraphic::SourceGraphic):
     117        (): Deleted.
     118        (isType): Deleted.
     119        * platform/mediastream/mac/RealtimeIncomingAudioSourceCocoa.cpp:
     120        * rendering/CSSFilter.cpp:
     121        (WebCore::CSSFilter::CSSFilter):
     122        * svg/graphics/filters/SVGFEImage.cpp:
     123        (WebCore::FEImage::FEImage):
     124        * svg/graphics/filters/SVGFEImage.h:
     125        * svg/graphics/filters/SVGFilter.cpp:
     126        (WebCore::SVGFilter::SVGFilter):
     127        * svg/graphics/filters/SVGFilter.h:
     128        (isType):
     129        * svg/graphics/filters/SVGFilterBuilder.cpp:
     130
    11312021-11-09  Commit Queue  <commit-queue@webkit.org>
    2132
  • trunk/Source/WebCore/Sources.txt

    r285528 r285543  
    20922092platform/graphics/filters/FilterEffect.cpp
    20932093platform/graphics/filters/FilterEffectRenderer.cpp
     2094platform/graphics/filters/FilterFunction.cpp
    20942095platform/graphics/filters/FilterOperation.cpp
    20952096platform/graphics/filters/FilterOperations.cpp
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r285528 r285543  
    1084910849                724EE54F1DC7F25B00A91FFB /* ActivityStateChangeObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ActivityStateChangeObserver.h; sourceTree = "<group>"; };
    1085010850                7252396B254CADC200F5FB15 /* NativeImage.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = NativeImage.cpp; sourceTree = "<group>"; };
     10851                7262D756272A174100C56A09 /* FilterFunction.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FilterFunction.h; sourceTree = "<group>"; };
     10852                7262D757272A174100C56A09 /* FilterFunction.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FilterFunction.cpp; sourceTree = "<group>"; };
    1085110853                7266F0132241BCE200833975 /* SVGPropertyAnimatorFactory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SVGPropertyAnimatorFactory.h; sourceTree = "<group>"; };
    1085210854                7266F0142241BFB200833975 /* SVGPrimitivePropertyAnimatorImpl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SVGPrimitivePropertyAnimatorImpl.h; sourceTree = "<group>"; };
     
    1890818910                        isa = PBXGroup;
    1890918911                        children = (
     18912                                1A569CE20D7E2B82007C3983 /* objc */,
    1891018913                                599E758F11055A1F00D904FA /* Bridge.h */,
    1891118914                                1A71D5790F33819000F9CE4E /* IdentifierRep.cpp */,
    1891218915                                1A71D57A0F33819000F9CE4E /* IdentifierRep.h */,
    1891318916                                59B5977111086556007159E8 /* jsc */,
    18914                                 1A569CE20D7E2B82007C3983 /* objc */,
    1891518917                                1A569CEF0D7E2B82007C3983 /* runtime_array.cpp */,
    1891618918                                1A569CF00D7E2B82007C3983 /* runtime_array.h */,
     
    2587025872                                2C85653824C10B0B00A37673 /* FilterEffectRenderer.cpp */,
    2587125873                                2C85653324C0F73C00A37673 /* FilterEffectRenderer.h */,
     25874                                7262D757272A174100C56A09 /* FilterFunction.cpp */,
     25875                                7262D756272A174100C56A09 /* FilterFunction.h */,
    2587225876                                49ECEB631499790D00CDD3A4 /* FilterOperation.cpp */,
    2587325877                                49ECEB641499790D00CDD3A4 /* FilterOperation.h */,
  • trunk/Source/WebCore/platform/graphics/coreimage/FilterEffectRendererCoreImage.mm

    r284481 r285543  
    7373{
    7474    // FIXME: change return value to true once they are implemented
    75     switch (effect.filterEffectClassType()) {
     75    switch (effect.filterType()) {
    7676    case FilterEffect::Type::SourceGraphic:
    7777        return true;
    7878           
    79     case FilterEffect::Type::ColorMatrix: {
     79    case FilterEffect::Type::FEColorMatrix: {
    8080        switch (downcast<FEColorMatrix>(effect).type()) {
    8181        case FECOLORMATRIX_TYPE_UNKNOWN:
     
    8989    }
    9090
    91     case FilterEffect::Type::ComponentTransfer:
     91    case FilterEffect::Type::FEComponentTransfer:
    9292        return isNullOrLinearComponentTransferFunction(downcast<FEComponentTransfer>(effect));
    9393
    94     case FilterEffect::Type::Blend:
    95     case FilterEffect::Type::Composite:
    96     case FilterEffect::Type::ConvolveMatrix:
    97     case FilterEffect::Type::DiffuseLighting:
    98     case FilterEffect::Type::DisplacementMap:
    99     case FilterEffect::Type::DropShadow:
    100     case FilterEffect::Type::Flood:
    101     case FilterEffect::Type::GaussianBlur:
    102     case FilterEffect::Type::Image:
    103     case FilterEffect::Type::Lighting:
    104     case FilterEffect::Type::Merge:
    105     case FilterEffect::Type::Morphology:
    106     case FilterEffect::Type::Offset:
    107     case FilterEffect::Type::SpecularLighting:
    108     case FilterEffect::Type::Tile:
    109     case FilterEffect::Type::Turbulence:
    110     case FilterEffect::Type::SourceAlpha:
     94    default:
    11195        return false;
    11296    }
     
    138122        return nullptr;
    139123   
    140     switch (effect.filterEffectClassType()) {
     124    switch (effect.filterType()) {
    141125    case FilterEffect::Type::SourceGraphic:
    142126        return imageForSourceGraphic(downcast<SourceGraphic>(effect));
    143     case FilterEffect::Type::ColorMatrix:
     127    case FilterEffect::Type::FEColorMatrix:
    144128        return imageForFEColorMatrix(downcast<FEColorMatrix>(effect), inputImages);
    145     case FilterEffect::Type::ComponentTransfer:
     129    case FilterEffect::Type::FEComponentTransfer:
    146130        return imageForFEComponentTransfer(downcast<FEComponentTransfer>(effect), inputImages);
    147131
    148     // FIXME: Implement those filters using CIFilter so that the function returns a valid CIImage
    149     case FilterEffect::Type::Blend:
    150     case FilterEffect::Type::Composite:
    151     case FilterEffect::Type::ConvolveMatrix:
    152     case FilterEffect::Type::DiffuseLighting:
    153     case FilterEffect::Type::DisplacementMap:
    154     case FilterEffect::Type::DropShadow:
    155     case FilterEffect::Type::Flood:
    156     case FilterEffect::Type::GaussianBlur:
    157     case FilterEffect::Type::Image:
    158     case FilterEffect::Type::Lighting:
    159     case FilterEffect::Type::Merge:
    160     case FilterEffect::Type::Morphology:
    161     case FilterEffect::Type::Offset:
    162     case FilterEffect::Type::SpecularLighting:
    163     case FilterEffect::Type::Tile:
    164     case FilterEffect::Type::Turbulence:
    165     case FilterEffect::Type::SourceAlpha:
    166132    default:
    167133        return nullptr;
  • trunk/Source/WebCore/platform/graphics/filters/FEBlend.cpp

    r285090 r285543  
    3636
    3737FEBlend::FEBlend(Filter& filter, BlendMode mode)
    38     : FilterEffect(filter, Type::Blend)
     38    : FilterEffect(filter, FilterEffect::Type::FEBlend)
    3939    , m_mode(mode)
    4040{
  • trunk/Source/WebCore/platform/graphics/filters/FEBlend.h

    r225366 r285543  
    3737
    3838private:
    39     const char* filterName() const final { return "FEBlend"; }
    40 
    4139    void platformApplySoftware() override;
    4240    void platformApplyGeneric(unsigned char* srcPixelArrayA, unsigned char* srcPixelArrayB, unsigned char* dstPixelArray,
     
    5452} // namespace WebCore
    5553
     54SPECIALIZE_TYPE_TRAITS_FILTER_EFFECT(FEBlend)
  • trunk/Source/WebCore/platform/graphics/filters/FEColorMatrix.cpp

    r285071 r285543  
    3737
    3838FEColorMatrix::FEColorMatrix(Filter& filter, ColorMatrixType type, Vector<float>&& values)
    39     : FilterEffect(filter, Type::ColorMatrix)
     39    : FilterEffect(filter, FilterEffect::Type::FEColorMatrix)
    4040    , m_type(type)
    4141    , m_values(WTFMove(values))
  • trunk/Source/WebCore/platform/graphics/filters/FEColorMatrix.h

    r275471 r285543  
    5353    FEColorMatrix(Filter&, ColorMatrixType, Vector<float>&&);
    5454
    55     const char* filterName() const final { return "FEColorMatrix"; }
    56 
    5755    void platformApplySoftware() override;
    5856
     
    9492} // namespace WebCore
    9593
    96 SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::FEColorMatrix)
    97     static bool isType(const WebCore::FilterEffect& effect) { return effect.filterEffectClassType() == WebCore::FilterEffect::Type::ColorMatrix; }
    98 SPECIALIZE_TYPE_TRAITS_END()
    99 
     94SPECIALIZE_TYPE_TRAITS_FILTER_EFFECT(FEColorMatrix)
  • trunk/Source/WebCore/platform/graphics/filters/FEComponentTransfer.cpp

    r277313 r285543  
    3434namespace WebCore {
    3535
    36 FEComponentTransfer::FEComponentTransfer(Filter& filter, const ComponentTransferFunction& redFunction,
    37     const ComponentTransferFunction& greenFunction, const ComponentTransferFunction& blueFunction, const ComponentTransferFunction& alphaFunction)
    38     : FilterEffect(filter, Type::ComponentTransfer)
     36FEComponentTransfer::FEComponentTransfer(Filter& filter, const ComponentTransferFunction& redFunction, const ComponentTransferFunction& greenFunction, const ComponentTransferFunction& blueFunction, const ComponentTransferFunction& alphaFunction)
     37    : FilterEffect(filter, FilterEffect::Type::FEComponentTransfer)
    3938    , m_redFunction(redFunction)
    4039    , m_greenFunction(greenFunction)
  • trunk/Source/WebCore/platform/graphics/filters/FEComponentTransfer.h

    r266740 r285543  
    6666                        const ComponentTransferFunction& blueFunc, const ComponentTransferFunction& alphaFunc);
    6767
    68      const char* filterName() const final { return "FEComponentTransfer"; }
    69 
    7068    using LookupTable = std::array<uint8_t, 256>;
    7169
     
    9088} // namespace WebCore
    9189
    92 SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::FEComponentTransfer)
    93     static bool isType(const WebCore::FilterEffect& effect) { return effect.filterEffectClassType() == WebCore::FilterEffect::Type::ComponentTransfer; }
    94 SPECIALIZE_TYPE_TRAITS_END()
     90SPECIALIZE_TYPE_TRAITS_FILTER_EFFECT(FEComponentTransfer)
  • trunk/Source/WebCore/platform/graphics/filters/FEComposite.cpp

    r285090 r285543  
    3434
    3535FEComposite::FEComposite(Filter& filter, const CompositeOperationType& type, float k1, float k2, float k3, float k4)
    36     : FilterEffect(filter, Type::Composite)
     36    : FilterEffect(filter, FilterEffect::Type::FEComposite)
    3737    , m_type(type)
    3838    , m_k1(k1)
  • trunk/Source/WebCore/platform/graphics/filters/FEComposite.h

    r225366 r285543  
    6565    FEComposite(Filter&, const CompositeOperationType&, float, float, float, float);
    6666
    67     const char* filterName() const final { return "FEComposite"; }
    68 
    6967    void correctFilterResultIfNeeded() override;
    7068    void determineAbsolutePaintRect() override;
     
    9189} // namespace WebCore
    9290
     91SPECIALIZE_TYPE_TRAITS_FILTER_EFFECT(FEComposite)
  • trunk/Source/WebCore/platform/graphics/filters/FEConvolveMatrix.cpp

    r284135 r285543  
    3333namespace WebCore {
    3434
    35 FEConvolveMatrix::FEConvolveMatrix(Filter& filter, const IntSize& kernelSize,
    36     float divisor, float bias, const IntPoint& targetOffset, EdgeModeType edgeMode,
    37     const FloatPoint& kernelUnitLength, bool preserveAlpha, const Vector<float>& kernelMatrix)
    38     : FilterEffect(filter, Type::ConvolveMatrix)
     35FEConvolveMatrix::FEConvolveMatrix(Filter& filter, const IntSize& kernelSize, float divisor, float bias, const IntPoint& targetOffset, EdgeModeType edgeMode, const FloatPoint& kernelUnitLength, bool preserveAlpha, const Vector<float>& kernelMatrix)
     36    : FilterEffect(filter, FilterEffect::Type::FEConvolveMatrix)
    3937    , m_kernelSize(kernelSize)
    4038    , m_divisor(divisor)
  • trunk/Source/WebCore/platform/graphics/filters/FEConvolveMatrix.h

    r225366 r285543  
    8181            const IntPoint&, EdgeModeType, const FloatPoint&, bool, const Vector<float>&);
    8282
    83     const char* filterName() const final { return "FEConvolveMatrix"; }
    84 
    8583    void determineAbsolutePaintRect() override { setAbsolutePaintRect(enclosingIntRect(maxEffectRect())); }
    8684
     
    116114} // namespace WebCore
    117115
     116SPECIALIZE_TYPE_TRAITS_FILTER_EFFECT(FEConvolveMatrix)
  • trunk/Source/WebCore/platform/graphics/filters/FEDiffuseLighting.cpp

    r264805 r285543  
    2929
    3030FEDiffuseLighting::FEDiffuseLighting(Filter& filter, const Color& lightingColor, float surfaceScale, float diffuseConstant, float kernelUnitLengthX, float kernelUnitLengthY, Ref<LightSource>&& lightSource)
    31     : FELighting(filter, DiffuseLighting, lightingColor, surfaceScale, diffuseConstant, 0, 0, kernelUnitLengthX, kernelUnitLengthY, WTFMove(lightSource), Type::DiffuseLighting)
     31    : FELighting(filter, DiffuseLighting, lightingColor, surfaceScale, diffuseConstant, 0, 0, kernelUnitLengthX, kernelUnitLengthY, WTFMove(lightSource), FilterEffect::Type::FEDiffuseLighting)
    3232{
    3333}
     
    3737    return adoptRef(*new FEDiffuseLighting(filter, lightingColor, surfaceScale, diffuseConstant, kernelUnitLengthX, kernelUnitLengthY, WTFMove(lightSource)));
    3838}
    39 
    40 FEDiffuseLighting::~FEDiffuseLighting() = default;
    4139
    4240bool FEDiffuseLighting::setDiffuseConstant(float diffuseConstant)
  • trunk/Source/WebCore/platform/graphics/filters/FEDiffuseLighting.h

    r225366 r285543  
    3131public:
    3232    static Ref<FEDiffuseLighting> create(Filter&, const Color&, float, float, float, float, Ref<LightSource>&&);
    33     virtual ~FEDiffuseLighting();
    3433
    3534    float diffuseConstant() const { return m_diffuseConstant; }
     
    4443} // namespace WebCore
    4544
     45SPECIALIZE_TYPE_TRAITS_FILTER_EFFECT(FEDiffuseLighting)
  • trunk/Source/WebCore/platform/graphics/filters/FEDisplacementMap.cpp

    r277986 r285543  
    3333
    3434FEDisplacementMap::FEDisplacementMap(Filter& filter, ChannelSelectorType xChannelSelector, ChannelSelectorType yChannelSelector, float scale)
    35     : FilterEffect(filter, Type::DisplacementMap)
     35    : FilterEffect(filter, FilterEffect::Type::FEDisplacementMap)
    3636    , m_xChannelSelector(xChannelSelector)
    3737    , m_yChannelSelector(yChannelSelector)
  • trunk/Source/WebCore/platform/graphics/filters/FEDisplacementMap.h

    r277986 r285543  
    5555    FEDisplacementMap(Filter&, ChannelSelectorType xChannelSelector, ChannelSelectorType yChannelSelector, float);
    5656
    57     const char* filterName() const final { return "FEDisplacementMap"; }
    58 
    5957    void platformApplySoftware() override;
    6058
     
    7371} // namespace WebCore
    7472
     73SPECIALIZE_TYPE_TRAITS_FILTER_EFFECT(FEDisplacementMap)
  • trunk/Source/WebCore/platform/graphics/filters/FEDropShadow.cpp

    r285071 r285543  
    3333   
    3434FEDropShadow::FEDropShadow(Filter& filter, float stdX, float stdY, float dx, float dy, const Color& shadowColor, float shadowOpacity)
    35     : FilterEffect(filter, Type::DropShadow)
     35    : FilterEffect(filter, FilterEffect::Type::FEDropShadow)
    3636    , m_stdX(stdX)
    3737    , m_stdY(stdY)
  • trunk/Source/WebCore/platform/graphics/filters/FEDropShadow.h

    r251119 r285543  
    5151    FEDropShadow(Filter&, float, float, float, float, const Color&, float);
    5252
    53     const char* filterName() const final { return "FEDropShadow"; }
    54 
    5553    void platformApplySoftware() override;
    5654
     
    7169} // namespace WebCore
    7270
     71SPECIALIZE_TYPE_TRAITS_FILTER_EFFECT(FEDropShadow)
  • trunk/Source/WebCore/platform/graphics/filters/FEFlood.cpp

    r264805 r285543  
    3232
    3333FEFlood::FEFlood(Filter& filter, const Color& floodColor, float floodOpacity)
    34     : FilterEffect(filter, Type::Flood)
     34    : FilterEffect(filter, FilterEffect::Type::FEFlood)
    3535    , m_floodColor(floodColor)
    3636    , m_floodOpacity(floodOpacity)
  • trunk/Source/WebCore/platform/graphics/filters/FEFlood.h

    r277986 r285543  
    4848    FEFlood(Filter&, const Color&, float);
    4949
    50     const char* filterName() const final { return "FEFlood"; }
    51 
    5250    void platformApplySoftware() override;
    5351
     
    6260} // namespace WebCore
    6361
     62SPECIALIZE_TYPE_TRAITS_FILTER_EFFECT(FEFlood)
  • trunk/Source/WebCore/platform/graphics/filters/FEGaussianBlur.cpp

    r284857 r285543  
    8181
    8282FEGaussianBlur::FEGaussianBlur(Filter& filter, float x, float y, EdgeModeType edgeMode)
    83     : FilterEffect(filter, Type::GaussianBlur)
     83    : FilterEffect(filter, FilterEffect::Type::FEGaussianBlur)
    8484    , m_stdX(x)
    8585    , m_stdY(y)
  • trunk/Source/WebCore/platform/graphics/filters/FEGaussianBlur.h

    r285185 r285543  
    4848    FEGaussianBlur(Filter&, float, float, EdgeModeType);
    4949
    50     const char* filterName() const final { return "FEGaussianBlur"; }
    51 
    5250    static const int s_minimalRectDimension = 100 * 100; // Empirical data limit for parallel jobs
    5351
     
    8179} // namespace WebCore
    8280
     81SPECIALIZE_TYPE_TRAITS_FILTER_EFFECT(FEGaussianBlur)
  • trunk/Source/WebCore/platform/graphics/filters/FELighting.h

    r284857 r285543  
    131131    FELighting(Filter&, LightingType, const Color&, float, float, float, float, float, float, Ref<LightSource>&&, Type);
    132132
    133     const char* filterName() const final { return "FELighting"; }
    134 
    135133    bool drawLighting(Uint8ClampedArray&, int, int);
    136134
  • trunk/Source/WebCore/platform/graphics/filters/FEMerge.cpp

    r264805 r285543  
    3030
    3131FEMerge::FEMerge(Filter& filter)
    32     : FilterEffect(filter, Type::Merge)
     32    : FilterEffect(filter, FilterEffect::Type::FEMerge)
    3333{
    3434}
  • trunk/Source/WebCore/platform/graphics/filters/FEMerge.h

    r225366 r285543  
    3434    FEMerge(Filter&);
    3535
    36     const char* filterName() const final { return "FEMerge"; }
    37 
    3836    void platformApplySoftware() override;
    3937
     
    4341} // namespace WebCore
    4442
     43SPECIALIZE_TYPE_TRAITS_FILTER_EFFECT(FEMerge)
  • trunk/Source/WebCore/platform/graphics/filters/FEMorphology.cpp

    r284857 r285543  
    3737
    3838FEMorphology::FEMorphology(Filter& filter, MorphologyOperatorType type, float radiusX, float radiusY)
    39     : FilterEffect(filter, Type::Morphology)
     39    : FilterEffect(filter, FilterEffect::Type::FEMorphology)
    4040    , m_type(type)
    4141    , m_radiusX(radiusX)
  • trunk/Source/WebCore/platform/graphics/filters/FEMorphology.h

    r225366 r285543  
    4949    FEMorphology(Filter&, MorphologyOperatorType, float radiusX, float radiusY);
    5050
    51     const char* filterName() const final { return "FEMorphology"; }
    52 
    5351    void platformApplySoftware() override;
    5452
     
    8785} // namespace WebCore
    8886
     87SPECIALIZE_TYPE_TRAITS_FILTER_EFFECT(FEMorphology)
  • trunk/Source/WebCore/platform/graphics/filters/FEOffset.cpp

    r264805 r285543  
    3232
    3333FEOffset::FEOffset(Filter& filter, float dx, float dy)
    34     : FilterEffect(filter, Type::Offset)
     34    : FilterEffect(filter, FilterEffect::Type::FEOffset)
    3535    , m_dx(dx)
    3636    , m_dy(dy)
  • trunk/Source/WebCore/platform/graphics/filters/FEOffset.h

    r225366 r285543  
    4040    FEOffset(Filter&, float dx, float dy);
    4141
    42     const char* filterName() const final { return "FEOffset"; }
    43 
    4442    void platformApplySoftware() override;
    4543   
     
    5452} // namespace WebCore
    5553
     54SPECIALIZE_TYPE_TRAITS_FILTER_EFFECT(FEOffset)
  • trunk/Source/WebCore/platform/graphics/filters/FESpecularLighting.cpp

    r264805 r285543  
    2929
    3030FESpecularLighting::FESpecularLighting(Filter& filter, const Color& lightingColor, float surfaceScale, float specularConstant, float specularExponent, float kernelUnitLengthX, float kernelUnitLengthY, Ref<LightSource>&& lightSource)
    31     : FELighting(filter, SpecularLighting, lightingColor, surfaceScale, 0, specularConstant, specularExponent, kernelUnitLengthX, kernelUnitLengthY, WTFMove(lightSource), Type::SpecularLighting)
     31    : FELighting(filter, SpecularLighting, lightingColor, surfaceScale, 0, specularConstant, specularExponent, kernelUnitLengthX, kernelUnitLengthY, WTFMove(lightSource), FilterEffect::Type::FESpecularLighting)
    3232{
    3333}
     
    3737    return adoptRef(*new FESpecularLighting(filter, lightingColor, surfaceScale, specularConstant, specularExponent, kernelUnitLengthX, kernelUnitLengthY, WTFMove(lightSource)));
    3838}
    39 
    40 FESpecularLighting::~FESpecularLighting() = default;
    4139
    4240bool FESpecularLighting::setSpecularConstant(float specularConstant)
  • trunk/Source/WebCore/platform/graphics/filters/FESpecularLighting.h

    r225366 r285543  
    2929public:
    3030    static Ref<FESpecularLighting> create(Filter&, const Color&, float, float, float, float, float, Ref<LightSource>&&);
    31     virtual ~FESpecularLighting();
    3231
    3332    float specularConstant() const { return m_specularConstant; }
     
    4544} // namespace WebCore
    4645
     46SPECIALIZE_TYPE_TRAITS_FILTER_EFFECT(FESpecularLighting)
  • trunk/Source/WebCore/platform/graphics/filters/FETile.cpp

    r277986 r285543  
    3333
    3434FETile::FETile(Filter& filter)
    35     : FilterEffect(filter, Type::Tile)
     35    : FilterEffect(filter, FilterEffect::Type::FETile)
    3636{
    3737}
     
    5959    FloatPoint inMaxEffectLocation = tileRect.location();
    6060    FloatPoint maxEffectLocation = maxEffectRect().location();
    61     if (in->filterEffectType() == FilterEffectTypeSourceInput) {
     61    if (in->filterType() == FilterEffect::Type::SourceGraphic || in->filterType() == FilterEffect::Type::SourceAlpha) {
    6262        Filter& filter = this->filter();
    6363        tileRect = filter.filterRegion();
  • trunk/Source/WebCore/platform/graphics/filters/FETile.h

    r225366 r285543  
    3434    FETile(Filter&);
    3535
    36     const char* filterName() const final { return "FETile"; }
    37 
    38     FilterEffectType filterEffectType() const override { return FilterEffectTypeTile; }
    39 
    4036    void platformApplySoftware() override;
    4137
     
    4743} // namespace WebCore
    4844
     45SPECIALIZE_TYPE_TRAITS_FILTER_EFFECT(FETile)
  • trunk/Source/WebCore/platform/graphics/filters/FETurbulence.cpp

    r284857 r285543  
    5050
    5151FETurbulence::FETurbulence(Filter& filter, TurbulenceType type, float baseFrequencyX, float baseFrequencyY, int numOctaves, float seed, bool stitchTiles)
    52     : FilterEffect(filter, Type::Turbulence)
     52    : FilterEffect(filter, FilterEffect::Type::FETurbulence)
    5353    , m_type(type)
    5454    , m_baseFrequencyX(baseFrequencyX)
  • trunk/Source/WebCore/platform/graphics/filters/FETurbulence.h

    r285185 r285543  
    106106    FETurbulence(Filter&, TurbulenceType, float, float, int, float, bool);
    107107
    108     const char* filterName() const final { return "FETurbulence"; }
    109 
    110108    void platformApplySoftware() override;
    111109    void determineAbsolutePaintRect() override { setAbsolutePaintRect(enclosingIntRect(maxEffectRect())); }
     
    130128} // namespace WebCore
    131129
     130SPECIALIZE_TYPE_TRAITS_FILTER_EFFECT(FETurbulence)
  • trunk/Source/WebCore/platform/graphics/filters/Filter.h

    r269323 r285543  
    22 * Copyright (C) 2009 Dirk Schulze <krit@webkit.org>
    33 * Copyright (C) 2013 Google Inc. All rights reserved.
     4 * Copyright (C) 2021 Apple Inc.  All rights reserved.
    45 *
    56 * This library is free software; you can redistribute it and/or
     
    2223
    2324#include "AffineTransform.h"
     25#include "FilterFunction.h"
    2426#include "FloatRect.h"
    2527#include "GraphicsTypes.h"
    2628#include "ImageBuffer.h"
    27 #include <wtf/RefCounted.h>
    2829
    2930namespace WebCore {
     
    3132class FilterEffect;
    3233
    33 class Filter : public RefCounted<Filter> {
     34class Filter : public FilterFunction {
    3435public:
    35     Filter(const AffineTransform& absoluteTransform, float filterScale = 1)
    36         : m_absoluteTransform(absoluteTransform)
    37         , m_filterScale(filterScale)
    38     { }
    39     virtual ~Filter() = default;
    40 
    4136    void setSourceImage(RefPtr<ImageBuffer>&& sourceImage) { m_sourceImage = WTFMove(sourceImage); }
    4237    ImageBuffer* sourceImage() { return m_sourceImage.get(); }
     
    6358
    6459protected:
    65     explicit Filter(const FloatSize& filterResolution)
    66         : m_filterResolution(filterResolution)
     60    Filter(Filter::Type filterType, const AffineTransform& absoluteTransform, float filterScale = 1)
     61        : FilterFunction(filterType)
     62        , m_absoluteTransform(absoluteTransform)
     63        , m_filterScale(filterScale)
     64    {
     65    }
     66
     67    Filter(Filter::Type filterType, const FloatSize& filterResolution)
     68        : FilterFunction(filterType)
     69        , m_filterResolution(filterResolution)
    6770    {
    6871    }
  • trunk/Source/WebCore/platform/graphics/filters/FilterEffect.cpp

    r279847 r285543  
    4646namespace WebCore {
    4747
    48 FilterEffect::FilterEffect(Filter& filter, Type type)
    49     : m_filter(filter)
    50     , m_filterEffectClassType(type)
    51 {
    52 }
    53 
    54 FilterEffect::~FilterEffect() = default;
     48FilterEffect::FilterEffect(Filter& filter, FilterEffect::Type type)
     49    : FilterFunction(type)
     50    , m_filter(filter)
     51{
     52}
    5553
    5654void FilterEffect::determineAbsolutePaintRect()
     
    111109
    112110    // After calling determineFilterPrimitiveSubregion on the target effect, reset the subregion again for <feTile>.
    113     if (filterEffectType() == FilterEffectTypeTile)
     111    if (filterType() == FilterEffect::Type::FETile)
    114112        subregion = m_filter.filterRegionInUserSpace();
    115113
     
    573571ImageBuffer* FilterEffect::createImageBufferResult()
    574572{
    575     LOG(Filters, "FilterEffect %s %p createImageBufferResult %dx%d", filterName(), this, m_absolutePaintRect.size().width(), m_absolutePaintRect.size().height());
     573    LOG(Filters, "FilterEffect %s %p createImageBufferResult %dx%d", filterName().characters8(), this, m_absolutePaintRect.size().width(), m_absolutePaintRect.size().height());
    576574
    577575    // Only one result type is allowed.
     
    587585std::optional<PixelBuffer>& FilterEffect::createUnmultipliedImageResult()
    588586{
    589     LOG(Filters, "FilterEffect %s %p createUnmultipliedImageResult", filterName(), this);
     587    LOG(Filters, "FilterEffect %s %p createUnmultipliedImageResult", filterName().characters8(), this);
    590588
    591589    // Only one result type is allowed.
     
    606604std::optional<PixelBuffer>& FilterEffect::createPremultipliedImageResult()
    607605{
    608     LOG(Filters, "FilterEffect %s %p createPremultipliedImageResult", filterName(), this);
     606    LOG(Filters, "FilterEffect %s %p createPremultipliedImageResult", filterName().characters8(), this);
    609607
    610608    // Only one result type is allowed.
  • trunk/Source/WebCore/platform/graphics/filters/FilterEffect.h

    r283605 r285543  
    2525#include "AlphaPremultiplication.h"
    2626#include "DestinationColorSpace.h"
     27#include "FilterFunction.h"
    2728#include "FloatRect.h"
    2829#include "IntRect.h"
     
    3132#include <JavaScriptCore/Forward.h>
    3233#include <wtf/MathExtras.h>
    33 #include <wtf/RefCounted.h>
    3434#include <wtf/RefPtr.h>
    3535#include <wtf/Vector.h>
     
    4747typedef Vector<RefPtr<FilterEffect>> FilterEffectVector;
    4848
    49 enum FilterEffectType {
    50     FilterEffectTypeUnknown,
    51     FilterEffectTypeImage,
    52     FilterEffectTypeTile,
    53     FilterEffectTypeSourceInput
    54 };
    55 
    56 class FilterEffect : public RefCounted<FilterEffect> {
     49class FilterEffect : public FilterFunction {
    5750public:
    58     enum class Type : uint8_t {
    59         Blend,
    60         ColorMatrix,
    61         ComponentTransfer,
    62         Composite,
    63         ConvolveMatrix,
    64         DiffuseLighting,
    65         DisplacementMap,
    66         DropShadow,
    67         Flood,
    68         GaussianBlur,
    69         Image,
    70         Lighting,
    71         Merge,
    72         Morphology,
    73         Offset,
    74         SpecularLighting,
    75         Tile,
    76         Turbulence,
    77         SourceAlpha,
    78         SourceGraphic
    79     };
    80     virtual ~FilterEffect();
    81 
    8251    void clearResult();
    8352    void clearResultsRecursive();
     
    12695    virtual void determineAbsolutePaintRect();
    12796
    128     virtual FilterEffectType filterEffectType() const { return FilterEffectTypeUnknown; }
    129 
    13097    virtual IntOutsets outsets() const { return IntOutsets(); }
    13198
     
    157124    FloatPoint mapPointFromUserSpaceToBuffer(FloatPoint) const;
    158125   
    159     Type filterEffectClassType() const { return m_filterEffectClassType; }
    160 
    161126    Filter& filter() { return m_filter; }
    162127    const Filter& filter() const { return m_filter; }
     
    184149    FilterEffect(Filter&, Type);
    185150   
    186     virtual const char* filterName() const = 0;
    187 
    188151    ImageBuffer* createImageBufferResult();
    189152    std::optional<PixelBuffer>& createUnmultipliedImageResult();
     
    249212#endif
    250213    DestinationColorSpace m_resultColorSpace { DestinationColorSpace::SRGB() };
    251    
    252     const Type m_filterEffectClassType;
    253214};
    254215
     
    257218} // namespace WebCore
    258219
     220SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::FilterEffect)
     221    static bool isType(const WebCore::FilterFunction& function) { return function.isFilterEffect(); }
     222SPECIALIZE_TYPE_TRAITS_END()
     223
     224#define SPECIALIZE_TYPE_TRAITS_FILTER_EFFECT(ClassName) \
     225SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::ClassName) \
     226    static bool isType(const WebCore::FilterEffect& effect) { return effect.filterType() == WebCore::FilterEffect::Type::ClassName; } \
     227SPECIALIZE_TYPE_TRAITS_END()
  • trunk/Source/WebCore/platform/graphics/filters/SourceAlpha.cpp

    r264805 r285543  
    2424#include "Filter.h"
    2525#include "GraphicsContext.h"
    26 #include <wtf/NeverDestroyed.h>
    27 #include <wtf/StdLibExtras.h>
    2826#include <wtf/text/TextStream.h>
    29 #include <wtf/text/WTFString.h>
    3027
    3128namespace WebCore {
     
    3633}
    3734
    38 const AtomString& SourceAlpha::effectName()
     35SourceAlpha::SourceAlpha(FilterEffect& sourceEffect)
     36    : FilterEffect(sourceEffect.filter(), FilterEffect::Type::SourceAlpha)
    3937{
    40     static MainThreadNeverDestroyed<const AtomString> s_effectName("SourceAlpha", AtomString::ConstructFromLiteral);
    41     return s_effectName;
     38    setOperatingColorSpace(sourceEffect.operatingColorSpace());
     39    inputEffects().append(&sourceEffect);
    4240}
    4341
     
    7068}
    7169
    72 SourceAlpha::SourceAlpha(FilterEffect& sourceEffect)
    73     : FilterEffect(sourceEffect.filter(), Type::SourceAlpha)
    74 {
    75     setOperatingColorSpace(sourceEffect.operatingColorSpace());
    76     inputEffects().append(&sourceEffect);
    77 }
    78 
    7970} // namespace WebCore
  • trunk/Source/WebCore/platform/graphics/filters/SourceAlpha.h

    r246490 r285543  
    1818 */
    1919
    20 #ifndef SourceAlpha_h
    21 #define SourceAlpha_h
     20#pragma once
    2221
    2322#include "FilterEffect.h"
     
    2928    static Ref<SourceAlpha> create(FilterEffect&);
    3029
    31     static const AtomString& effectName();
     30    static AtomString effectName() { return FilterEffect::sourceAlphaName(); }
    3231
    3332private:
    3433    explicit SourceAlpha(FilterEffect&);
    35     FilterEffectType filterEffectType() const override { return FilterEffectTypeSourceInput; }
    36 
    37     const char* filterName() const final { return "SourceAlpha"; }
    3834
    3935    void platformApplySoftware() override;
     
    4440} //namespace WebCore
    4541
    46 #endif // SourceAlpha_h
     42SPECIALIZE_TYPE_TRAITS_FILTER_EFFECT(SourceAlpha)
  • trunk/Source/WebCore/platform/graphics/filters/SourceGraphic.cpp

    r261013 r285543  
    2323#include "Filter.h"
    2424#include "GraphicsContext.h"
    25 #include <wtf/NeverDestroyed.h>
    26 #include <wtf/StdLibExtras.h>
    2725#include <wtf/text/TextStream.h>
    28 #include <wtf/text/WTFString.h>
    2926
    3027namespace WebCore {
     
    3330{
    3431    return adoptRef(*new SourceGraphic(filter));
    35 }
    36 
    37 const AtomString& SourceGraphic::effectName()
    38 {
    39     static MainThreadNeverDestroyed<const AtomString> s_effectName("SourceGraphic", AtomString::ConstructFromLiteral);
    40     return s_effectName;
    4132}
    4233
  • trunk/Source/WebCore/platform/graphics/filters/SourceGraphic.h

    r277986 r285543  
    1919 */
    2020
    21 #ifndef SourceGraphic_h
    22 #define SourceGraphic_h
     21#pragma once
    2322
    2423#include "FilterEffect.h"
    25 #include "Filter.h"
    2624
    2725namespace WebCore {
     
    3129    static Ref<SourceGraphic> create(Filter&);
    3230
    33     static const AtomString& effectName();
     31    static AtomString effectName() { return FilterEffect::sourceGraphicName(); }
    3432
    3533private:
    3634    SourceGraphic(Filter& filter)
    37         : FilterEffect(filter, Type::SourceGraphic)
     35        : FilterEffect(filter, FilterEffect::Type::SourceGraphic)
    3836    {
    3937        setOperatingColorSpace(DestinationColorSpace::SRGB());
    4038    }
    4139
    42     const char* filterName() const final { return "SourceGraphic"; }
    43 
    4440    void determineAbsolutePaintRect() override;
    4541    void platformApplySoftware() override;
    4642    WTF::TextStream& externalRepresentation(WTF::TextStream&, RepresentationType) const override;
    47 
    48     FilterEffectType filterEffectType() const override { return FilterEffectTypeSourceInput; }
    4943};
    5044
    5145} //namespace WebCore
    5246
    53 SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::SourceGraphic)
    54     static bool isType(const WebCore::FilterEffect& effect) { return effect.filterEffectClassType() == WebCore::FilterEffect::Type::SourceGraphic; }
    55 SPECIALIZE_TYPE_TRAITS_END()
    56 
    57 
    58 #endif // SourceGraphic_h
     47SPECIALIZE_TYPE_TRAITS_FILTER_EFFECT(SourceGraphic)
  • trunk/Source/WebCore/platform/mediastream/mac/RealtimeIncomingAudioSourceCocoa.cpp

    r285027 r285543  
    3434#include "CAAudioStreamDescription.h"
    3535#include "LibWebRTCAudioFormat.h"
     36#include "LibWebRTCAudioModule.h"
    3637#include "Logging.h"
    3738#include <pal/avfoundation/MediaTimeAVFoundation.h>
  • trunk/Source/WebCore/rendering/CSSFilter.cpp

    r285090 r285543  
    6161
    6262CSSFilter::CSSFilter()
    63     : Filter(FloatSize { 1, 1 })
     63    : Filter(Filter::Type::CSSFilter, FloatSize { 1, 1 })
    6464    , m_sourceGraphic(SourceGraphic::create(*this))
    6565{
  • trunk/Source/WebCore/svg/graphics/filters/SVGFEImage.cpp

    r285481 r285543  
    4343
    4444FEImage::FEImage(Filter& filter, SourceImage&& sourceImage, const FloatRect& sourceImageRect, const SVGPreserveAspectRatioValue& preserveAspectRatio)
    45     : FilterEffect(filter, Type::Image)
     45    : FilterEffect(filter, Type::FEImage)
    4646    , m_sourceImage(WTFMove(sourceImage))
    4747    , m_sourceImageRect(sourceImageRect)
  • trunk/Source/WebCore/svg/graphics/filters/SVGFEImage.h

    r285481 r285543  
    2525
    2626#include "FilterEffect.h"
    27 #include "RenderingResourceIdentifier.h"
    2827#include "SVGPreserveAspectRatioValue.h"
    2928
     
    3534class FEImage final : public FilterEffect {
    3635public:
    37     using SourceImage = std::variant<
    38         Ref<Image>,
    39         Ref<ImageBuffer>
    40     >;
     36    using SourceImage = std::variant<Ref<Image>, Ref<ImageBuffer>>;
    4137
    4238    static Ref<FEImage> create(Filter&, Ref<Image>&&, const SVGPreserveAspectRatioValue&);
     
    4844private:
    4945    FEImage(Filter&, SourceImage&&, const FloatRect& sourceImageRect, const SVGPreserveAspectRatioValue&);
    50 
    51     const char* filterName() const final { return "FEImage"; }
    5246
    5347    void platformApplySoftware() final;
     
    6155
    6256} // namespace WebCore
     57
     58SPECIALIZE_TYPE_TRAITS_FILTER_EFFECT(FEImage)
  • trunk/Source/WebCore/svg/graphics/filters/SVGFilter.cpp

    r226981 r285543  
    2626
    2727SVGFilter::SVGFilter(const AffineTransform& absoluteTransform, const FloatRect& absoluteSourceDrawingRegion, const FloatRect& targetBoundingBox, const FloatRect& filterRegion, bool effectBBoxMode)
    28     : Filter(absoluteTransform)
     28    : Filter(Filter::Type::CSSFilter, absoluteTransform)
    2929    , m_absoluteSourceDrawingRegion(absoluteSourceDrawingRegion)
    3030    , m_targetBoundingBox(targetBoundingBox)
  • trunk/Source/WebCore/svg/graphics/filters/SVGFilter.h

    r235644 r285543  
    5858SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::SVGFilter)
    5959    static bool isType(const WebCore::Filter& filter) { return filter.isSVGFilter(); }
     60    static bool isType(const WebCore::FilterFunction& function) { return function.isSVGFilter(); }
    6061SPECIALIZE_TYPE_TRAITS_END()
  • trunk/Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp

    r257199 r285543  
    2222
    2323#include "FilterEffect.h"
     24#include "ImageBuffer.h"
    2425#include "SourceAlpha.h"
    2526#include "SourceGraphic.h"
Note: See TracChangeset for help on using the changeset viewer.