void SVGFEMorphologyElement::GetRXY(int32_t *aRX, int32_t *aRY, const nsSVGFilterInstance& aInstance) { // Subtract an epsilon here because we don't want a value that's just // slightly larger than an integer to round up to the next integer; it's // probably meant to be the integer it's close to, modulo machine precision // issues. *aRX = NSToIntCeil(aInstance.GetPrimitiveNumber(SVGContentUtils::X, &mNumberPairAttributes[RADIUS], nsSVGNumberPair::eFirst) - MORPHOLOGY_EPSILON); *aRY = NSToIntCeil(aInstance.GetPrimitiveNumber(SVGContentUtils::Y, &mNumberPairAttributes[RADIUS], nsSVGNumberPair::eSecond) - MORPHOLOGY_EPSILON); }
nsresult SVGFEGaussianBlurElement::GetDXY(uint32_t *aDX, uint32_t *aDY, const nsSVGFilterInstance& aInstance) { float stdX = aInstance.GetPrimitiveNumber(SVGContentUtils::X, &mNumberPairAttributes[STD_DEV], nsSVGNumberPair::eFirst); float stdY = aInstance.GetPrimitiveNumber(SVGContentUtils::Y, &mNumberPairAttributes[STD_DEV], nsSVGNumberPair::eSecond); if (stdX < 0 || stdY < 0) return NS_ERROR_FAILURE; // If the box size is greater than twice the temporary surface size // in an axis, then each pixel will be set to the average of all the // other pixel values. *aDX = GetBlurBoxSize(stdX); *aDY = GetBlurBoxSize(stdY); return NS_OK; }