RawPtr<FilterEffect> SVGFESpecularLightingElement::build(SVGFilterBuilder* filterBuilder, Filter* filter) { FilterEffect* input1 = filterBuilder->getEffectById(AtomicString(m_in1->currentValue()->value())); ASSERT(input1); LayoutObject* layoutObject = this->layoutObject(); if (!layoutObject) return nullptr; ASSERT(layoutObject->style()); Color color = layoutObject->style()->svgStyle().lightingColor(); const SVGFELightElement* lightNode = SVGFELightElement::findLightElement(*this); RefPtr<LightSource> lightSource = lightNode ? lightNode->lightSource(filter) : nullptr; RawPtr<FilterEffect> effect = FESpecularLighting::create(filter, color, m_surfaceScale->currentValue()->value(), m_specularConstant->currentValue()->value(), m_specularExponent->currentValue()->value(), lightSource.release()); effect->inputEffects().append(input1); return effect.release(); }