nsresult nsFilterInstance::BuildPrimitivesForFilter(const nsStyleFilter& aFilter) { NS_ASSERTION(mUserSpaceToFilterSpaceScale.width > 0.0f && mFilterSpaceToUserSpaceScale.height > 0.0f, "scale factors between spaces should be positive values"); if (aFilter.GetType() == NS_STYLE_FILTER_URL) { // Build primitives for an SVG filter. nsSVGFilterInstance svgFilterInstance(aFilter, mTargetContent, mMetrics, mTargetBBox, mUserSpaceToFilterSpaceScale, mFilterSpaceToUserSpaceScale); if (!svgFilterInstance.IsInitialized()) { return NS_ERROR_FAILURE; } return svgFilterInstance.BuildPrimitives(mPrimitiveDescriptions, mInputImages); } // Build primitives for a CSS filter. // If we don't have a frame, use opaque black for shadows with unspecified // shadow colors. nscolor shadowFallbackColor = mTargetFrame ? mTargetFrame->StyleColor()->mColor : NS_RGB(0,0,0); nsCSSFilterInstance cssFilterInstance(aFilter, shadowFallbackColor, mTargetBBoxInFilterSpace, mFrameSpaceInCSSPxToFilterSpaceTransform); return cssFilterInstance.BuildPrimitives(mPrimitiveDescriptions); }
nsresult nsFilterInstance::BuildPrimitivesForFilter(const nsStyleFilter& aFilter) { NS_ASSERTION(mUserSpaceToFilterSpaceScale.width > 0.0f && mFilterSpaceToUserSpaceScale.height > 0.0f, "scale factors between spaces should be positive values"); if (aFilter.GetType() == NS_STYLE_FILTER_URL) { // Build primitives for an SVG filter. nsSVGFilterInstance svgFilterInstance(aFilter, mTargetFrame, mTargetBBox, mUserSpaceToFilterSpaceScale, mFilterSpaceToUserSpaceScale); if (!svgFilterInstance.IsInitialized()) { return NS_ERROR_FAILURE; } return svgFilterInstance.BuildPrimitives(mPrimitiveDescriptions, mInputImages); } // Build primitives for a CSS filter. nsCSSFilterInstance cssFilterInstance(aFilter, mTargetFrame, mTargetBBoxInFilterSpace, mFrameSpaceInCSSPxToFilterSpaceTransform); return cssFilterInstance.BuildPrimitives(mPrimitiveDescriptions); }
nsresult nsFilterInstance::BuildPrimitivesForFilter(const nsStyleFilter& aFilter) { if (aFilter.GetType() == NS_STYLE_FILTER_URL) { // Build primitives for an SVG filter. nsSVGFilterInstance svgFilterInstance(aFilter, mTargetFrame, mTargetBBox); if (!svgFilterInstance.IsInitialized()) { return NS_ERROR_FAILURE; } // For now, we use the last SVG filter region as the overall filter region // for the filter chain. Eventually, we will compute the overall filter // using all of the generated FilterPrimitiveDescriptions. mFilterRegion = svgFilterInstance.GetFilterRegion(); mFilterSpaceBounds = svgFilterInstance.GetFilterSpaceBounds(); return svgFilterInstance.BuildPrimitives(mPrimitiveDescriptions, mInputImages); } // Eventually, we will build primitives for CSS filters, too. return NS_ERROR_FAILURE; }