Bug 460551 - overrideCTM is no longer necessary. r+sr=roc

This commit is contained in:
Robert Longson 2008-10-18 09:19:01 +01:00
parent fa24c1568e
commit d58d86bd7a
18 changed files with 12 additions and 196 deletions

View File

@ -51,8 +51,8 @@ class nsIDOMSVGMatrix;
class nsSVGRenderState;
#define NS_ISVGCHILDFRAME_IID \
{ 0x8b80b2a0, 0x2e1f, 0x4775, \
{ 0xab, 0x47, 0xbe, 0xeb, 0x4b, 0x81, 0x63, 0x6d } }
{ 0x91253119, 0x4fe4, 0x4628, \
{ 0xaf, 0x25, 0x4e, 0x4b, 0x43, 0x5f, 0x66, 0xf2 } }
class nsISVGChildFrame : public nsISupports {
public:
@ -100,12 +100,6 @@ public:
NS_IMETHOD SetMatrixPropagation(PRBool aPropagate)=0;
virtual PRBool GetMatrixPropagation()=0;
// Set the current transformation matrix to a particular matrix.
// Value is only used if matrix propagation is prevented
// (SetMatrixPropagation()). nsnull aCTM means identity transform.
NS_IMETHOD SetOverrideCTM(nsIDOMSVGMatrix *aCTM)=0;
virtual already_AddRefed<nsIDOMSVGMatrix> GetOverrideCTM()=0;
// XXX move this function into interface nsISVGLocatableMetrics
NS_IMETHOD GetBBox(nsIDOMSVGRect **_retval)=0; // bbox in local coords

View File

@ -155,12 +155,7 @@ nsSVGAFrame::GetCanvasTM()
{
if (!GetMatrixPropagation()) {
nsIDOMSVGMatrix *retval;
if (mOverrideCTM) {
retval = mOverrideCTM;
NS_ADDREF(retval);
} else {
NS_NewSVGMatrix(&retval);
}
NS_NewSVGMatrix(&retval);
return retval;
}

View File

@ -112,8 +112,6 @@ public:
NS_IMETHOD NotifyRedrawUnsuspended();
NS_IMETHOD SetMatrixPropagation(PRBool aPropagate);
virtual PRBool GetMatrixPropagation();
NS_IMETHOD SetOverrideCTM(nsIDOMSVGMatrix *aCTM) { return NS_ERROR_FAILURE; }
virtual already_AddRefed<nsIDOMSVGMatrix> GetOverrideCTM() { return nsnull; }
NS_IMETHOD GetBBox(nsIDOMSVGRect **_retval);
NS_IMETHOD_(PRBool) IsDisplayContainer() { return PR_TRUE; }
NS_IMETHOD_(PRBool) HasValidCoveredRect() { return PR_FALSE; }

View File

@ -196,7 +196,6 @@ nsAutoFilterInstance::~nsAutoFilterInstance()
if (!mTarget)
return;
mTarget->SetOverrideCTM(nsnull);
mTarget->SetMatrixPropagation(PR_TRUE);
mTarget->NotifySVGChanged(nsISVGChildFrame::SUPPRESS_INVALIDATION |
nsISVGChildFrame::TRANSFORM_CHANGED);

View File

@ -481,21 +481,6 @@ nsSVGForeignObjectFrame::GetMatrixPropagation()
return (GetStateBits() & NS_STATE_SVG_PROPAGATE_TRANSFORM) != 0;
}
NS_IMETHODIMP
nsSVGForeignObjectFrame::SetOverrideCTM(nsIDOMSVGMatrix *aCTM)
{
mOverrideCTM = aCTM;
return NS_OK;
}
already_AddRefed<nsIDOMSVGMatrix>
nsSVGForeignObjectFrame::GetOverrideCTM()
{
nsIDOMSVGMatrix *matrix = mOverrideCTM.get();
NS_IF_ADDREF(matrix);
return matrix;
}
NS_IMETHODIMP
nsSVGForeignObjectFrame::GetBBox(nsIDOMSVGRect **_retval)
{
@ -543,12 +528,7 @@ nsSVGForeignObjectFrame::GetCanvasTM()
{
if (!GetMatrixPropagation()) {
nsIDOMSVGMatrix *retval;
if (mOverrideCTM) {
retval = mOverrideCTM;
NS_ADDREF(retval);
} else {
NS_NewSVGMatrix(&retval);
}
NS_NewSVGMatrix(&retval);
return retval;
}

View File

@ -130,8 +130,6 @@ public:
NS_IMETHOD NotifyRedrawUnsuspended();
NS_IMETHOD SetMatrixPropagation(PRBool aPropagate);
virtual PRBool GetMatrixPropagation();
NS_IMETHOD SetOverrideCTM(nsIDOMSVGMatrix *aCTM);
virtual already_AddRefed<nsIDOMSVGMatrix> GetOverrideCTM();
NS_IMETHOD GetBBox(nsIDOMSVGRect **_retval);
NS_IMETHOD_(PRBool) IsDisplayContainer() { return PR_TRUE; }
NS_IMETHOD_(PRBool) HasValidCoveredRect() { return PR_FALSE; }
@ -163,7 +161,6 @@ protected:
PRBool IsDisabled() const { return mRect.width <= 0 || mRect.height <= 0; }
nsCOMPtr<nsIDOMSVGMatrix> mCanvasTM;
nsCOMPtr<nsIDOMSVGMatrix> mOverrideCTM;
// Damage area due to in-this-doc invalidation
nsRegion mSameDocDirtyRegion;
// Damage area due to cross-doc invalidation

View File

@ -80,32 +80,12 @@ nsSVGGFrame::NotifySVGChanged(PRUint32 aFlags)
nsSVGGFrameBase::NotifySVGChanged(aFlags);
}
NS_IMETHODIMP
nsSVGGFrame::SetOverrideCTM(nsIDOMSVGMatrix *aCTM)
{
mOverrideCTM = aCTM;
return NS_OK;
}
already_AddRefed<nsIDOMSVGMatrix>
nsSVGGFrame::GetOverrideCTM()
{
nsIDOMSVGMatrix *matrix = mOverrideCTM.get();
NS_IF_ADDREF(matrix);
return matrix;
}
already_AddRefed<nsIDOMSVGMatrix>
nsSVGGFrame::GetCanvasTM()
{
if (!GetMatrixPropagation()) {
nsIDOMSVGMatrix *retval;
if (mOverrideCTM) {
retval = mOverrideCTM;
NS_ADDREF(retval);
} else {
NS_NewSVGMatrix(&retval);
}
NS_NewSVGMatrix(&retval);
return retval;
}

View File

@ -73,14 +73,11 @@ public:
// nsISVGChildFrame interface:
virtual void NotifySVGChanged(PRUint32 aFlags);
NS_IMETHOD SetOverrideCTM(nsIDOMSVGMatrix *aCTM);
virtual already_AddRefed<nsIDOMSVGMatrix> GetOverrideCTM();
// nsSVGContainerFrame methods:
virtual already_AddRefed<nsIDOMSVGMatrix> GetCanvasTM();
nsCOMPtr<nsIDOMSVGMatrix> mCanvasTM;
nsCOMPtr<nsIDOMSVGMatrix> mOverrideCTM;
};
#endif

View File

@ -127,8 +127,6 @@ public:
NS_IMETHOD NotifyRedrawUnsuspended();
NS_IMETHOD SetMatrixPropagation(PRBool aPropagate);
virtual PRBool GetMatrixPropagation();
NS_IMETHOD SetOverrideCTM(nsIDOMSVGMatrix *aCTM) { return NS_ERROR_FAILURE; }
virtual already_AddRefed<nsIDOMSVGMatrix> GetOverrideCTM() { return nsnull; }
NS_IMETHOD_(PRBool) IsDisplayContainer() { return PR_FALSE; }
NS_IMETHOD_(PRBool) HasValidCoveredRect() { return PR_TRUE; }

View File

@ -166,26 +166,9 @@ nsSVGGradientFrame::GetGradientTransform(nsSVGGeometryFrame *aSource)
"Unknown gradientUnits type");
// objectBoundingBox is the default anyway
nsISVGChildFrame *frame = nsnull;
if (aSource) {
if (callerType == nsGkAtoms::svgGlyphFrame)
CallQueryInterface(aSource->GetParent(), &frame);
else
CallQueryInterface(aSource, &frame);
}
nsCOMPtr<nsIDOMSVGRect> rect;
if (frame) {
nsCOMPtr<nsIDOMSVGMatrix> matrix = frame->GetOverrideCTM();
frame->SetMatrixPropagation(PR_FALSE);
frame->SetOverrideCTM(nsnull);
frame->NotifySVGChanged(nsISVGChildFrame::SUPPRESS_INVALIDATION |
nsISVGChildFrame::TRANSFORM_CHANGED);
frame->GetBBox(getter_AddRefs(rect));
frame->SetMatrixPropagation(PR_TRUE);
frame->SetOverrideCTM(matrix);
frame->NotifySVGChanged(nsISVGChildFrame::SUPPRESS_INVALIDATION |
nsISVGChildFrame::TRANSFORM_CHANGED);
}
nsIFrame *frame = (callerType == nsGkAtoms::svgGlyphFrame) ?
aSource->GetParent() : aSource;
nsCOMPtr<nsIDOMSVGRect> rect = nsSVGUtils::GetBBox(frame);
if (rect) {
float x, y, width, height;
rect->GetX(&x);

View File

@ -85,8 +85,6 @@ public:
// nsISVGChildFrame interface:
NS_IMETHOD PaintSVG(nsSVGRenderState *aContext, nsIntRect *aDirtyRect);
virtual void NotifySVGChanged(PRUint32 aFlags);
NS_IMETHOD SetOverrideCTM(nsIDOMSVGMatrix *aCTM);
virtual already_AddRefed<nsIDOMSVGMatrix> GetOverrideCTM();
NS_IMETHOD_(nsIFrame*) GetFrameForPoint(const nsPoint &aPoint);
// nsSVGContainerFrame methods:
@ -109,7 +107,6 @@ public:
protected:
nsCOMPtr<nsIDOMSVGMatrix> mCanvasTM;
nsCOMPtr<nsIDOMSVGMatrix> mOverrideCTM;
};
//----------------------------------------------------------------------
@ -225,21 +222,6 @@ nsSVGInnerSVGFrame::NotifySVGChanged(PRUint32 aFlags)
nsSVGInnerSVGFrameBase::NotifySVGChanged(aFlags);
}
NS_IMETHODIMP
nsSVGInnerSVGFrame::SetOverrideCTM(nsIDOMSVGMatrix *aCTM)
{
mOverrideCTM = aCTM;
return NS_OK;
}
already_AddRefed<nsIDOMSVGMatrix>
nsSVGInnerSVGFrame::GetOverrideCTM()
{
nsIDOMSVGMatrix *matrix = mOverrideCTM.get();
NS_IF_ADDREF(matrix);
return matrix;
}
NS_IMETHODIMP_(nsIFrame*)
nsSVGInnerSVGFrame::GetFrameForPoint(const nsPoint &aPoint)
{
@ -329,12 +311,7 @@ nsSVGInnerSVGFrame::GetCanvasTM()
{
if (!GetMatrixPropagation()) {
nsIDOMSVGMatrix *retval;
if (mOverrideCTM) {
retval = mOverrideCTM;
NS_ADDREF(retval);
} else {
NS_NewSVGMatrix(&retval);
}
NS_NewSVGMatrix(&retval);
return retval;
}

View File

@ -337,21 +337,6 @@ nsSVGPathGeometryFrame::GetMatrixPropagation()
return (GetStateBits() & NS_STATE_SVG_PROPAGATE_TRANSFORM) != 0;
}
NS_IMETHODIMP
nsSVGPathGeometryFrame::SetOverrideCTM(nsIDOMSVGMatrix *aCTM)
{
mOverrideCTM = aCTM;
return NS_OK;
}
already_AddRefed<nsIDOMSVGMatrix>
nsSVGPathGeometryFrame::GetOverrideCTM()
{
nsIDOMSVGMatrix *matrix = mOverrideCTM.get();
NS_IF_ADDREF(matrix);
return matrix;
}
NS_IMETHODIMP
nsSVGPathGeometryFrame::GetBBox(nsIDOMSVGRect **_retval)
{
@ -373,11 +358,6 @@ nsSVGPathGeometryFrame::GetCanvasTM(nsIDOMSVGMatrix * *aCTM)
*aCTM = nsnull;
if (!GetMatrixPropagation()) {
if (mOverrideCTM) {
*aCTM = mOverrideCTM;
NS_ADDREF(*aCTM);
return NS_OK;
}
return NS_NewSVGMatrix(aCTM);
}

View File

@ -111,8 +111,6 @@ protected:
NS_IMETHOD NotifyRedrawUnsuspended();
NS_IMETHOD SetMatrixPropagation(PRBool aPropagate);
virtual PRBool GetMatrixPropagation();
NS_IMETHOD SetOverrideCTM(nsIDOMSVGMatrix *aCTM);
virtual already_AddRefed<nsIDOMSVGMatrix> GetOverrideCTM();
NS_IMETHOD GetBBox(nsIDOMSVGRect **_retval);
NS_IMETHOD_(PRBool) IsDisplayContainer() { return PR_FALSE; }
NS_IMETHOD_(PRBool) HasValidCoveredRect() { return PR_TRUE; }
@ -154,8 +152,6 @@ private:
* @param aFrame should be the first continuation
*/
static MarkerProperties GetMarkerProperties(nsSVGPathGeometryFrame *aFrame);
nsCOMPtr<nsIDOMSVGMatrix> mOverrideCTM;
};
#endif // __NS_SVGPATHGEOMETRYFRAME_H__

View File

@ -99,24 +99,6 @@ nsSVGTSpanFrame::AttributeChanged(PRInt32 aNameSpaceID,
return NS_OK;
}
//----------------------------------------------------------------------
// nsISVGChildFrame methods
NS_IMETHODIMP
nsSVGTSpanFrame::SetOverrideCTM(nsIDOMSVGMatrix *aCTM)
{
mOverrideCTM = aCTM;
return NS_OK;
}
already_AddRefed<nsIDOMSVGMatrix>
nsSVGTSpanFrame::GetOverrideCTM()
{
nsIDOMSVGMatrix *matrix = mOverrideCTM.get();
NS_IF_ADDREF(matrix);
return matrix;
}
//----------------------------------------------------------------------
// nsSVGContainerFrame methods:
@ -125,12 +107,7 @@ nsSVGTSpanFrame::GetCanvasTM()
{
if (!GetMatrixPropagation()) {
nsIDOMSVGMatrix *retval;
if (mOverrideCTM) {
retval = mOverrideCTM;
NS_ADDREF(retval);
} else {
NS_NewSVGMatrix(&retval);
}
NS_NewSVGMatrix(&retval);
return retval;
}

View File

@ -79,10 +79,6 @@ public:
return MakeFrameName(NS_LITERAL_STRING("SVGTSpan"), aResult);
}
#endif
// nsISVGChildFrame interface:
NS_IMETHOD SetOverrideCTM(nsIDOMSVGMatrix *aCTM);
virtual already_AddRefed<nsIDOMSVGMatrix> GetOverrideCTM();
// nsSVGContainerFrame methods:
virtual already_AddRefed<nsIDOMSVGMatrix> GetCanvasTM();
@ -94,9 +90,6 @@ public:
NS_IMETHOD_(nsISVGGlyphFragmentLeaf *) GetFirstGlyphFragment();
NS_IMETHOD_(nsISVGGlyphFragmentLeaf *) GetNextGlyphFragment();
NS_IMETHOD_(void) SetWhitespaceHandling(PRUint8 aWhitespaceHandling);
protected:
nsCOMPtr<nsIDOMSVGMatrix> mOverrideCTM;
};
#endif

View File

@ -212,21 +212,6 @@ nsSVGTextFrame::NotifyRedrawUnsuspended()
return nsSVGTextFrameBase::NotifyRedrawUnsuspended();
}
NS_IMETHODIMP
nsSVGTextFrame::SetOverrideCTM(nsIDOMSVGMatrix *aCTM)
{
mOverrideCTM = aCTM;
return NS_OK;
}
already_AddRefed<nsIDOMSVGMatrix>
nsSVGTextFrame::GetOverrideCTM()
{
nsIDOMSVGMatrix *matrix = mOverrideCTM.get();
NS_IF_ADDREF(matrix);
return matrix;
}
NS_IMETHODIMP
nsSVGTextFrame::PaintSVG(nsSVGRenderState* aContext, nsIntRect *aDirtyRect)
{
@ -277,12 +262,7 @@ nsSVGTextFrame::GetCanvasTM()
{
if (!GetMatrixPropagation()) {
nsIDOMSVGMatrix *retval;
if (mOverrideCTM) {
retval = mOverrideCTM;
NS_ADDREF(retval);
} else {
NS_NewSVGMatrix(&retval);
}
NS_NewSVGMatrix(&retval);
return retval;
}

View File

@ -74,8 +74,6 @@ public:
#endif
// nsISVGChildFrame interface:
NS_IMETHOD SetOverrideCTM(nsIDOMSVGMatrix *aCTM);
virtual already_AddRefed<nsIDOMSVGMatrix> GetOverrideCTM();
virtual void NotifySVGChanged(PRUint32 aFlags);
NS_IMETHOD NotifyRedrawSuspended();
NS_IMETHOD NotifyRedrawUnsuspended();
@ -112,7 +110,6 @@ private:
void UpdateGlyphPositioning(PRBool aForceGlobalTransform);
nsCOMPtr<nsIDOMSVGMatrix> mCanvasTM;
nsCOMPtr<nsIDOMSVGMatrix> mOverrideCTM;
enum UpdateState { unsuspended, suspended };
UpdateState mMetricsState;

View File

@ -155,12 +155,7 @@ nsSVGUseFrame::GetCanvasTM()
{
if (!GetMatrixPropagation()) {
nsIDOMSVGMatrix *retval;
if (mOverrideCTM) {
retval = mOverrideCTM;
NS_ADDREF(retval);
} else {
NS_NewSVGMatrix(&retval);
}
NS_NewSVGMatrix(&retval);
return retval;
}