Bug 584322 - feDisplacementMap seems to be adding an offset. r=roc, a=dbaron

This commit is contained in:
Robert Longson 2010-08-14 20:42:18 -04:00
parent 49275c8275
commit 011cb3e886
3 changed files with 20 additions and 15 deletions

View File

@ -1068,7 +1068,7 @@ public:
virtual nsXPCClassInfo* GetClassInfo();
protected:
virtual PRBool OperatesOnPremultipledAlpha() { return PR_FALSE; }
virtual PRBool OperatesOnPremultipledAlpha(PRInt32) { return PR_FALSE; }
virtual EnumAttributesInfo GetEnumInfo();
virtual StringAttributesInfo GetStringInfo();
@ -1695,7 +1695,7 @@ public:
virtual nsXPCClassInfo* GetClassInfo();
protected:
virtual PRBool OperatesOnPremultipledAlpha() { return PR_FALSE; }
virtual PRBool OperatesOnPremultipledAlpha(PRInt32) { return PR_FALSE; }
virtual StringAttributesInfo GetStringInfo();
@ -2715,7 +2715,7 @@ public:
virtual nsXPCClassInfo* GetClassInfo();
protected:
virtual PRBool OperatesOnSRGB(nsSVGFilterInstance*,
PRUint32, Image*) { return PR_TRUE; }
PRInt32, Image*) { return PR_TRUE; }
virtual StringAttributesInfo GetStringInfo();
@ -3898,7 +3898,7 @@ public:
virtual nsXPCClassInfo* GetClassInfo();
protected:
virtual PRBool OperatesOnPremultipledAlpha() {
virtual PRBool OperatesOnPremultipledAlpha(PRInt32) {
return !mBooleanAttributes[PRESERVEALPHA].GetAnimValue();
}
@ -5354,7 +5354,7 @@ private:
protected:
virtual PRBool OperatesOnSRGB(nsSVGFilterInstance*,
PRUint32, Image*) { return PR_TRUE; }
PRInt32, Image*) { return PR_TRUE; }
virtual nsSVGPreserveAspectRatio *GetPreserveAspectRatio();
virtual StringAttributesInfo GetStringInfo();
@ -5689,13 +5689,16 @@ public:
virtual nsXPCClassInfo* GetClassInfo();
protected:
virtual PRBool OperatesOnSRGB(nsSVGFilterInstance* aInstance,
PRUint32 aInput, Image* aImage) {
if (aInput == 0 && aImage)
PRInt32 aInput, Image* aImage) {
if (aInput == 0)
return aImage->mColorModel.mColorSpace == ColorModel::SRGB;
return nsSVGFEDisplacementMapElementBase::OperatesOnSRGB(aInstance,
aInput, aImage);
}
virtual PRBool OperatesOnPremultipledAlpha(PRInt32 aInput) {
return !(aInput == 1);
}
virtual NumberAttributesInfo GetNumberInfo();
virtual EnumAttributesInfo GetEnumInfo();

View File

@ -119,21 +119,21 @@ protected:
public:
ColorModel
GetInputColorModel(nsSVGFilterInstance* aInstance, PRUint32 aInputIndex,
GetInputColorModel(nsSVGFilterInstance* aInstance, PRInt32 aInputIndex,
Image* aImage) {
return ColorModel(
(OperatesOnSRGB(aInstance, aInputIndex, aImage) ?
ColorModel::SRGB : ColorModel::LINEAR_RGB),
(OperatesOnPremultipledAlpha() ?
(OperatesOnPremultipledAlpha(aInputIndex) ?
ColorModel::PREMULTIPLIED : ColorModel::UNPREMULTIPLIED));
}
ColorModel
GetOutputColorModel(nsSVGFilterInstance* aInstance) {
return ColorModel(
(OperatesOnSRGB(aInstance, 0, nsnull) ?
(OperatesOnSRGB(aInstance, -1, nsnull) ?
ColorModel::SRGB : ColorModel::LINEAR_RGB),
(OperatesOnPremultipledAlpha() ?
(OperatesOnPremultipledAlpha(-1) ?
ColorModel::PREMULTIPLIED : ColorModel::UNPREMULTIPLIED));
}
@ -199,13 +199,13 @@ public:
operator nsISupports*() { return static_cast<nsIContent*>(this); }
protected:
virtual PRBool OperatesOnPremultipledAlpha() { return PR_TRUE; }
virtual PRBool OperatesOnPremultipledAlpha(PRInt32) { return PR_TRUE; }
// Called either with aImage non-null, in which case this is
// Called either with aInputIndex >=0 in which case this is
// testing whether the input 'aInputIndex' should be SRGB, or
// if aImage is null returns true if the output will be SRGB
// if aInputIndex is -1 returns true if the output will be SRGB
virtual PRBool OperatesOnSRGB(nsSVGFilterInstance* aInstance,
PRUint32 aInputIndex, Image* aImage) {
PRInt32 aInputIndex, Image* aImage) {
nsIFrame* frame = GetPrimaryFrame();
if (!frame) return PR_FALSE;

View File

@ -72,6 +72,8 @@ fails == filter-marked-line-01.svg pass.svg # bug 477704
== feConvolveMatrix-bias-01.svg feConvolveMatrix-bias-01-ref.svg
== feConvolveMatrix-order-01.svg feConvolveMatrix-order-01-ref.svg
== feDisplacementMap-alpha-01.svg pass.svg
== feMorphology-radius-negative-01.svg pass.svg
== feMorphology-radius-negative-02.svg pass.svg
== feMorphology-radius-zero-01.svg pass.svg