Bug 832153: Move SVGMaskElement to mozilla::dom r=bz

--HG--
rename : content/svg/content/src/nsSVGMaskElement.cpp => content/svg/content/src/SVGMaskElement.cpp
rename : content/svg/content/src/nsSVGMaskElement.h => content/svg/content/src/SVGMaskElement.h
This commit is contained in:
David Zbarsky 2013-01-23 15:59:06 -05:00
Родитель ac17d44f05
Коммит 8bad5d1a74
4 изменённых файлов: 63 добавлений и 45 удалений

Просмотреть файл

@ -50,7 +50,6 @@ CPPSRCS = \
nsSVGIntegerPair.cpp \
nsSVGLength2.cpp \
nsSVGMarkerElement.cpp \
nsSVGMaskElement.cpp \
nsSVGNumber2.cpp \
nsSVGNumberPair.cpp \
nsSVGPathDataParser.cpp \
@ -95,6 +94,7 @@ CPPSRCS = \
SVGLengthListSMILType.cpp \
SVGLineElement.cpp \
SVGLocatableElement.cpp \
SVGMaskElement.cpp \
SVGMatrix.cpp \
SVGMetadataElement.cpp \
SVGMotionSMILType.cpp \
@ -177,6 +177,7 @@ EXPORTS_mozilla/dom = \
SVGImageElement.h \
SVGLineElement.h \
SVGLocatableElement.h \
SVGMaskElement.h \
SVGMatrix.h \
SVGMetadataElement.h \
SVGMPathElement.h \

Просмотреть файл

@ -7,13 +7,18 @@
#include "nsCOMPtr.h"
#include "nsGkAtoms.h"
#include "nsSVGMaskElement.h"
#include "mozilla/dom/SVGMaskElement.h"
using namespace mozilla;
DOMCI_NODE_DATA(SVGMaskElement, mozilla::dom::SVGMaskElement)
NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(Mask)
namespace mozilla {
namespace dom {
//--------------------- Masks ------------------------
nsSVGElement::LengthInfo nsSVGMaskElement::sLengthInfo[4] =
nsSVGElement::LengthInfo SVGMaskElement::sLengthInfo[4] =
{
{ &nsGkAtoms::x, -10, nsIDOMSVGLength::SVG_LENGTHTYPE_PERCENTAGE, SVGContentUtils::X },
{ &nsGkAtoms::y, -10, nsIDOMSVGLength::SVG_LENGTHTYPE_PERCENTAGE, SVGContentUtils::Y },
@ -21,7 +26,7 @@ nsSVGElement::LengthInfo nsSVGMaskElement::sLengthInfo[4] =
{ &nsGkAtoms::height, 120, nsIDOMSVGLength::SVG_LENGTHTYPE_PERCENTAGE, SVGContentUtils::Y },
};
nsSVGElement::EnumInfo nsSVGMaskElement::sEnumInfo[2] =
nsSVGElement::EnumInfo SVGMaskElement::sEnumInfo[2] =
{
{ &nsGkAtoms::maskUnits,
sSVGUnitTypesMap,
@ -33,71 +38,67 @@ nsSVGElement::EnumInfo nsSVGMaskElement::sEnumInfo[2] =
}
};
NS_IMPL_NS_NEW_SVG_ELEMENT(Mask)
//----------------------------------------------------------------------
// nsISupports methods
NS_IMPL_ADDREF_INHERITED(nsSVGMaskElement,nsSVGMaskElementBase)
NS_IMPL_RELEASE_INHERITED(nsSVGMaskElement,nsSVGMaskElementBase)
NS_IMPL_ADDREF_INHERITED(SVGMaskElement,SVGMaskElementBase)
NS_IMPL_RELEASE_INHERITED(SVGMaskElement,SVGMaskElementBase)
DOMCI_NODE_DATA(SVGMaskElement, nsSVGMaskElement)
NS_INTERFACE_TABLE_HEAD(nsSVGMaskElement)
NS_NODE_INTERFACE_TABLE5(nsSVGMaskElement, nsIDOMNode, nsIDOMElement,
NS_INTERFACE_TABLE_HEAD(SVGMaskElement)
NS_NODE_INTERFACE_TABLE5(SVGMaskElement, nsIDOMNode, nsIDOMElement,
nsIDOMSVGElement,
nsIDOMSVGMaskElement, nsIDOMSVGUnitTypes)
NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(SVGMaskElement)
NS_INTERFACE_MAP_END_INHERITING(nsSVGMaskElementBase)
NS_INTERFACE_MAP_END_INHERITING(SVGMaskElementBase)
//----------------------------------------------------------------------
// Implementation
nsSVGMaskElement::nsSVGMaskElement(already_AddRefed<nsINodeInfo> aNodeInfo)
: nsSVGMaskElementBase(aNodeInfo)
SVGMaskElement::SVGMaskElement(already_AddRefed<nsINodeInfo> aNodeInfo)
: SVGMaskElementBase(aNodeInfo)
{
}
//----------------------------------------------------------------------
// nsIDOMNode method
NS_IMPL_ELEMENT_CLONE_WITH_INIT(nsSVGMaskElement)
NS_IMPL_ELEMENT_CLONE_WITH_INIT(SVGMaskElement)
//----------------------------------------------------------------------
// nsIDOMSVGMaskElement methods
/* readonly attribute nsIDOMSVGAnimatedEnumeration maskUnits; */
NS_IMETHODIMP nsSVGMaskElement::GetMaskUnits(nsIDOMSVGAnimatedEnumeration * *aMaskUnits)
NS_IMETHODIMP SVGMaskElement::GetMaskUnits(nsIDOMSVGAnimatedEnumeration * *aMaskUnits)
{
return mEnumAttributes[MASKUNITS].ToDOMAnimatedEnum(aMaskUnits, this);
}
/* readonly attribute nsIDOMSVGAnimatedEnumeration maskContentUnits; */
NS_IMETHODIMP nsSVGMaskElement::GetMaskContentUnits(nsIDOMSVGAnimatedEnumeration * *aMaskUnits)
NS_IMETHODIMP SVGMaskElement::GetMaskContentUnits(nsIDOMSVGAnimatedEnumeration * *aMaskUnits)
{
return mEnumAttributes[MASKCONTENTUNITS].ToDOMAnimatedEnum(aMaskUnits, this);
}
/* readonly attribute nsIDOMSVGAnimatedLength x; */
NS_IMETHODIMP nsSVGMaskElement::GetX(nsIDOMSVGAnimatedLength * *aX)
NS_IMETHODIMP SVGMaskElement::GetX(nsIDOMSVGAnimatedLength * *aX)
{
return mLengthAttributes[X].ToDOMAnimatedLength(aX, this);
}
/* readonly attribute nsIDOMSVGAnimatedLength y; */
NS_IMETHODIMP nsSVGMaskElement::GetY(nsIDOMSVGAnimatedLength * *aY)
NS_IMETHODIMP SVGMaskElement::GetY(nsIDOMSVGAnimatedLength * *aY)
{
return mLengthAttributes[Y].ToDOMAnimatedLength(aY, this);
}
/* readonly attribute nsIDOMSVGAnimatedLength width; */
NS_IMETHODIMP nsSVGMaskElement::GetWidth(nsIDOMSVGAnimatedLength * *aWidth)
NS_IMETHODIMP SVGMaskElement::GetWidth(nsIDOMSVGAnimatedLength * *aWidth)
{
return mLengthAttributes[WIDTH].ToDOMAnimatedLength(aWidth, this);
}
/* readonly attribute nsIDOMSVGAnimatedLength height; */
NS_IMETHODIMP nsSVGMaskElement::GetHeight(nsIDOMSVGAnimatedLength * *aHeight)
NS_IMETHODIMP SVGMaskElement::GetHeight(nsIDOMSVGAnimatedLength * *aHeight)
{
return mLengthAttributes[HEIGHT].ToDOMAnimatedLength(aHeight, this);
}
@ -106,7 +107,7 @@ NS_IMETHODIMP nsSVGMaskElement::GetHeight(nsIDOMSVGAnimatedLength * *aHeight)
// nsSVGElement methods
/* virtual */ bool
nsSVGMaskElement::HasValidDimensions() const
SVGMaskElement::HasValidDimensions() const
{
return (!mLengthAttributes[WIDTH].IsExplicitlySet() ||
mLengthAttributes[WIDTH].GetAnimValInSpecifiedUnits() > 0) &&
@ -115,14 +116,14 @@ nsSVGMaskElement::HasValidDimensions() const
}
nsSVGElement::LengthAttributesInfo
nsSVGMaskElement::GetLengthInfo()
SVGMaskElement::GetLengthInfo()
{
return LengthAttributesInfo(mLengthAttributes, sLengthInfo,
ArrayLength(sLengthInfo));
}
nsSVGElement::EnumAttributesInfo
nsSVGMaskElement::GetEnumInfo()
SVGMaskElement::GetEnumInfo()
{
return EnumAttributesInfo(mEnumAttributes, sEnumInfo,
ArrayLength(sEnumInfo));
@ -132,7 +133,7 @@ nsSVGMaskElement::GetEnumInfo()
// nsIContent methods
NS_IMETHODIMP_(bool)
nsSVGMaskElement::IsAttributeMapped(const nsIAtom* name) const
SVGMaskElement::IsAttributeMapped(const nsIAtom* name) const
{
static const MappedAttributeEntry* const map[] = {
sFEFloodMap,
@ -147,5 +148,8 @@ nsSVGMaskElement::IsAttributeMapped(const nsIAtom* name) const
};
return FindAttributeDependence(name, map) ||
nsSVGMaskElementBase::IsAttributeMapped(name);
SVGMaskElementBase::IsAttributeMapped(name);
}
} // namespace dom
} // namespace mozilla

Просмотреть файл

@ -3,8 +3,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef __NS_SVGMASKELEMENT_H__
#define __NS_SVGMASKELEMENT_H__
#ifndef mozilla_dom_SVGMaskElement_h
#define mozilla_dom_SVGMaskElement_h
#include "nsIDOMSVGMaskElement.h"
#include "nsIDOMSVGUnitTypes.h"
@ -12,20 +12,28 @@
#include "nsSVGLength2.h"
#include "nsSVGElement.h"
class nsSVGMaskFrame;
nsresult NS_NewSVGMaskElement(nsIContent **aResult,
already_AddRefed<nsINodeInfo> aNodeInfo);
namespace mozilla {
namespace dom {
//--------------------- Masks ------------------------
typedef nsSVGElement nsSVGMaskElementBase;
typedef nsSVGElement SVGMaskElementBase;
class nsSVGMaskElement : public nsSVGMaskElementBase,
public nsIDOMSVGMaskElement,
public nsIDOMSVGUnitTypes
class SVGMaskElement MOZ_FINAL : public SVGMaskElementBase,
public nsIDOMSVGMaskElement,
public nsIDOMSVGUnitTypes
{
friend class nsSVGMaskFrame;
friend class ::nsSVGMaskFrame;
protected:
friend nsresult NS_NewSVGMaskElement(nsIContent **aResult,
already_AddRefed<nsINodeInfo> aNodeInfo);
nsSVGMaskElement(already_AddRefed<nsINodeInfo> aNodeInfo);
friend nsresult (::NS_NewSVGMaskElement(nsIContent **aResult,
already_AddRefed<nsINodeInfo> aNodeInfo));
SVGMaskElement(already_AddRefed<nsINodeInfo> aNodeInfo);
public:
// interfaces:
@ -63,4 +71,7 @@ protected:
static EnumInfo sEnumInfo[2];
};
#endif
} // namespace dom
} // namespace mozilla
#endif // mozilla_dom_SVGMaskElement_h

Просмотреть файл

@ -11,7 +11,9 @@
#include "gfxImageSurface.h"
#include "nsRenderingContext.h"
#include "nsSVGEffects.h"
#include "nsSVGMaskElement.h"
#include "mozilla/dom/SVGMaskElement.h"
using namespace mozilla::dom;
//----------------------------------------------------------------------
// Implementation
@ -39,17 +41,17 @@ nsSVGMaskFrame::ComputeMaskAlpha(nsRenderingContext *aContext,
}
AutoMaskReferencer maskRef(this);
nsSVGMaskElement *mask = static_cast<nsSVGMaskElement*>(mContent);
SVGMaskElement *mask = static_cast<SVGMaskElement*>(mContent);
uint16_t units =
mask->mEnumAttributes[nsSVGMaskElement::MASKUNITS].GetAnimValue();
mask->mEnumAttributes[SVGMaskElement::MASKUNITS].GetAnimValue();
gfxRect bbox;
if (units == nsIDOMSVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX) {
bbox = nsSVGUtils::GetBBox(aParent);
}
gfxRect maskArea = nsSVGUtils::GetRelativeRect(units,
&mask->mLengthAttributes[nsSVGMaskElement::X], bbox, aParent);
&mask->mLengthAttributes[SVGMaskElement::X], bbox, aParent);
gfxContext *gfx = aContext->ThebesContext();
@ -201,11 +203,11 @@ nsSVGMaskFrame::GetCanvasTM(uint32_t aFor)
{
NS_ASSERTION(mMaskParentMatrix, "null parent matrix");
nsSVGMaskElement *mask = static_cast<nsSVGMaskElement*>(mContent);
SVGMaskElement *mask = static_cast<SVGMaskElement*>(mContent);
return nsSVGUtils::AdjustMatrixForUnits(
mMaskParentMatrix ? *mMaskParentMatrix : gfxMatrix(),
&mask->mEnumAttributes[nsSVGMaskElement::MASKCONTENTUNITS],
&mask->mEnumAttributes[SVGMaskElement::MASKCONTENTUNITS],
mMaskParent);
}