Name Description Size Coverage
crashtests -
DOMSVGAngle.cpp 4036 79 %
DOMSVGAngle.h Generic ctor for DOMSVGAngle objects that are created for an attribute. 2201 100 %
DOMSVGAnimatedAngle.cpp 1000 100 %
DOMSVGAnimatedAngle.h 1379 100 %
DOMSVGAnimatedBoolean.cpp 812 100 %
DOMSVGAnimatedBoolean.h 1509 100 %
DOMSVGAnimatedEnumeration.cpp 793 100 %
DOMSVGAnimatedEnumeration.h 1285 100 %
DOMSVGAnimatedInteger.cpp 812 100 %
DOMSVGAnimatedInteger.h 1232 100 %
DOMSVGAnimatedLength.cpp 1083 100 %
DOMSVGAnimatedLength.h 1362 100 %
DOMSVGAnimatedLengthList.cpp static 4645 100 %
DOMSVGAnimatedLengthList.h 9318 100 %
DOMSVGAnimatedNumber.cpp 806 100 %
DOMSVGAnimatedNumber.h 1218 100 %
DOMSVGAnimatedNumberList.cpp static 4643 100 %
DOMSVGAnimatedNumberList.h Class DOMSVGAnimatedNumberList This class is used to create the DOM tearoff objects that wrap internal SVGAnimatedNumberList objects. See the architecture comment in DOMSVGAnimatedLengthList.h (that's LENGTH list). The comment for that class largly applies to this one too and will go a long way to helping you understand the architecture here. This class is strongly intertwined with DOMSVGNumberList and DOMSVGNumber. Our DOMSVGNumberList base and anim vals are friends and take care of nulling out our pointers to them when they die (making our pointers to them true weak refs). 5051 100 %
DOMSVGAnimatedString.cpp 806 100 %
DOMSVGAnimatedString.h 1964 100 %
DOMSVGAnimatedTransformList.cpp static 4394 100 %
DOMSVGAnimatedTransformList.h Class DOMSVGAnimatedTransformList This class is used to create the DOM tearoff objects that wrap internal SVGAnimatedTransformList objects. See the architecture comment in DOMSVGAnimatedLengthList.h (that's LENGTH list). The comment for that class largly applies to this one too and will go a long way to helping you understand the architecture here. This class is strongly intertwined with DOMSVGTransformList and DOMSVGTransform. Our DOMSVGTransformList base and anim vals are friends and take care of nulling out our pointers to them when they die (making our pointers to them true weak refs). 5016 100 %
DOMSVGLength.cpp 17182 92 %
DOMSVGLength.h Class DOMSVGLength This class creates the DOM objects that wrap internal SVGLength objects that are in an SVGLengthList. It is also used to create the objects returned by SVGSVGElement.createSVGLength(). For the DOM wrapper classes for non-list SVGLength, see SVGAnimatedLength.h. See the architecture comment in DOMSVGAnimatedLengthList.h. This class is strongly intertwined with DOMSVGAnimatedLengthList and DOMSVGLengthList. We are a friend of DOMSVGLengthList, and are responsible for nulling out our DOMSVGLengthList's pointer to us when we die, making it a real weak pointer. When objects of this type are in a DOMSVGLengthList they belong to an attribute. While they belong to an attribute, the objects' values come from their corresponding internal SVGLength objects in the internal SVGLengthList objects for the attribute. Getting and setting values of a DOMSVGLength requires reading and writing to its internal SVGLength. However, if the DOMSVGLength is detached from its DOMSVGLengthList then it first makes a copy of its internal SVGLength's value and unit so that it doesn't appear to "lose" its value from script's perspective on being removed from the list. This means that these DOM tearoffs have space to store these values, even though they're not used in the common case. Objects of this type are also used to reflect the baseVal and animVal of a single, non-list SVGLength attribute. Getting and settings values of the DOMSVGLength in this case requires reading and writing to the corresponding SVGAnimatedLength object. This class also stores its current list index, attribute enum, and whether it belongs to a baseVal or animVal list. This is so that objects of this type can find their corresponding internal SVGLength. To use these classes for <length> attributes as well as <list-of-length> attributes, we would need to take a bit from mListIndex and use that to indicate whether the object belongs to a list or non-list attribute, then if-else as appropriate. The bug for doing that work is: https://bugzilla.mozilla.org/show_bug.cgi?id=571734 8442 100 %
DOMSVGLengthList.cpp 12002 93 %
DOMSVGLengthList.h Class DOMSVGLengthList This class is used to create the DOM tearoff objects that wrap internal SVGLengthList objects. See the architecture comment in DOMSVGAnimatedLengthList.h. This class is strongly intertwined with DOMSVGAnimatedLengthList and DOMSVGLength. We are a friend of DOMSVGAnimatedLengthList, and are responsible for nulling out our DOMSVGAnimatedLengthList's pointer to us when we die, essentially making its pointer to us a weak pointer. Similarly, our DOMSVGLength items are friends of us and responsible for nulling out our pointers to them. Our DOM items are created lazily on demand as and when script requests them. 7280 100 %
DOMSVGNumber.cpp 4583 97 %
DOMSVGNumber.h Class DOMSVGNumber This class creates the DOM objects that wrap internal SVGNumber objects that are in an SVGNumberList. It is also used to create the objects returned by SVGSVGElement.createSVGNumber(). For the DOM wrapper classes for non-list SVGNumber, see SVGAnimatedNumber.h. See the architecture comment in DOMSVGAnimatedNumberList.h. See the comment in DOMSVGLength.h (yes, LENGTH), which applies here too. 5300 100 %
DOMSVGNumberList.cpp 11619 93 %
DOMSVGNumberList.h Class DOMSVGNumberList This class is used to create the DOM tearoff objects that wrap internal SVGNumberList objects. See the architecture comment in DOMSVGAnimatedNumberList.h. This class is strongly intertwined with DOMSVGAnimatedNumberList and DOMSVGNumber. We are a friend of DOMSVGAnimatedNumberList, and are responsible for nulling out our DOMSVGAnimatedNumberList's pointer to us when we die, essentially making its pointer to us a weak pointer. Similarly, our DOMSVGNumber items are friends of us and responsible for nulling out our pointers to them. Our DOM items are created lazily on demand as and when script requests them. 6940 95 %
DOMSVGPoint.cpp 6879 94 %
DOMSVGPoint.h Class DOMSVGPoint This class creates the DOM objects that wrap internal SVGPoint objects that are in an SVGPointList. It is also used to create the objects returned by SVGSVGElement.createSVGPoint() and other functions that return DOM SVGPoint objects. See the architecture comment in DOMSVGPointList.h for an overview of the important points regarding these DOM wrapper structures. See the architecture comment in DOMSVGLength.h (yes, LENGTH) for an overview of the important points regarding how this specific class works. 6730 100 %
DOMSVGPointList.cpp static 14196 95 %
DOMSVGPointList.h Class DOMSVGPointList This class is used to create the DOM tearoff objects that wrap internal SVGPointList objects. See the architecture comment in DOMSVGAnimatedLengthList.h first (that's LENGTH list), then continue reading the remainder of this comment. The architecture of this class is very similar to that of DOMSVGLengthList except that, since there is no nsIDOMSVGAnimatedPointList interface in SVG, we have no parent DOMSVGAnimatedPointList (unlike DOMSVGLengthList which has a parent DOMSVGAnimatedLengthList class). (There is an SVGAnimatedPoints interface, but that is quite different to DOMSVGAnimatedLengthList, since it is inherited by elements rather than elements having members of that type.) As a consequence, much of the logic that would otherwise be in DOMSVGAnimatedPointList (and is in DOMSVGAnimatedLengthList) is contained in this class. This class is strongly intertwined with DOMSVGPoint. Our DOMSVGPoint items are friends of us and responsible for nulling out our pointers to them when they die. Our DOM items are created lazily on demand as and when script requests them. 9836 94 %
DOMSVGStringList.cpp static 6989 94 %
DOMSVGStringList.h Class DOMSVGStringList This class is used to create the DOM tearoff objects that wrap internal SVGPathData objects. See the architecture comment in DOMSVGAnimatedLengthList.h first (that's LENGTH list), then continue reading the remainder of this comment. The architecture of this class is similar to that of DOMSVGLengthList except for two important aspects: First, since there is no nsIDOMSVGAnimatedStringList interface in SVG, we have no parent DOMSVGAnimatedStringList (unlike DOMSVGLengthList which has a parent DOMSVGAnimatedLengthList class). As a consequence, much of the logic that would otherwise be in DOMSVGAnimatedStringList (and is in DOMSVGAnimatedLengthList) is contained in this class. Second, since there is no nsIDOMSVGString interface in SVG, we have no DOMSVGString items to maintain. As far as script is concerned, objects of this class contain a list of strings, not a list of mutable objects like the other SVG list types. As a result, unlike the other SVG list types, this class does not create its items lazily on demand and store them so it can return the same objects each time. It simply returns a new string each time any given item is requested. 4767 100 %
DOMSVGTransform.cpp 9668 98 %
DOMSVGTransform.h DOM wrapper for an SVG transform. See DOMSVGLength.h. 5969 100 %
DOMSVGTransformList.cpp 13196 94 %
DOMSVGTransformList.h Class DOMSVGTransformList This class is used to create the DOM tearoff objects that wrap internal SVGTransformList objects. See the architecture comment in DOMSVGAnimatedTransformList.h. 7171 96 %
moz.build 7676 -
SVGAElement.cpp 9177 87 %
SVGAElement.h 3738 100 %
SVGAnimatedBoolean.cpp Implementation 5243 94 %
SVGAnimatedBoolean.h 2463 100 %
SVGAnimatedClass.cpp aSrcElement 2939 76 %
SVGAnimatedClass.h 2298 100 %
SVGAnimatedClassOrString.cpp 2074 95 %
SVGAnimatedClassOrString.h 1812 -
SVGAnimatedEnumeration.cpp aSrcElement 6243 95 %
SVGAnimatedEnumeration.h 4210 100 %
SVGAnimatedInteger.cpp Implementation 5086 93 %
SVGAnimatedInteger.h 3738 100 %
SVGAnimatedIntegerPair.cpp Implementation 7467 98 %
SVGAnimatedIntegerPair.h 4681 100 %
SVGAnimatedLength.cpp Helper functions 22413 87 %
SVGAnimatedLength.h 12482 100 %
SVGAnimatedLengthList.cpp aSrcElement 7634 98 %
SVGAnimatedLengthList.h Class SVGAnimatedLengthList This class is very different to the SVG DOM interface of the same name found in the SVG specification. This is a lightweight internal class - see DOMSVGAnimatedLengthList for the heavier DOM class that wraps instances of this class and implements the SVG specification's SVGAnimatedLengthList DOM interface. Except where noted otherwise, this class' methods take care of keeping the appropriate DOM wrappers in sync (see the comment in DOMSVGAnimatedLengthList::InternalBaseValListWillChangeTo) so that their consumers don't need to concern themselves with that. 4355 89 %
SVGAnimatedNumber.cpp Implementation 5430 89 %
SVGAnimatedNumber.h 3836 100 %
SVGAnimatedNumberList.cpp aSrcElement 6321 98 %
SVGAnimatedNumberList.h Class SVGAnimatedNumberList This class is very different to the SVG DOM interface of the same name found in the SVG specification. This is a lightweight internal class - see DOMSVGAnimatedNumberList for the heavier DOM class that wraps instances of this class and implements the SVG specification's SVGAnimatedNumberList DOM interface. Except where noted otherwise, this class' methods take care of keeping the appropriate DOM wrappers in sync (see the comment in DOMSVGAnimatedNumberList::InternalBaseValListWillChangeTo) so that their consumers don't need to concern themselves with that. 4499 88 %
SVGAnimatedNumberPair.cpp 7511 97 %
SVGAnimatedNumberPair.h 4899 100 %
SVGAnimatedOrient.cpp Helper functions 15428 93 %
SVGAnimatedOrient.h 5472 100 %
SVGAnimatedPathSegList.cpp 11740 51 %
SVGAnimatedPathSegList.h Class SVGAnimatedPathSegList Despite the fact that no SVGAnimatedPathSegList interface or objects exist in the SVG specification (unlike e.g. SVGAnimated*Length*List), we nevertheless have this internal class. (Note that there is an SVGAnimatedPathData interface, but that's quite different to SVGAnimatedLengthList since it is inherited by elements, as opposed to elements having members of that type.) The reason that we have this class is to provide a single locked down point of entry to the SVGPathData objects, which helps ensure that the DOM wrappers for SVGPathData objects' are always kept in sync. This is vitally important (see the comment in DOMSVGPathSegList::InternalListWillChangeTo) and frees consumers from having to know or worry about wrappers (or forget about them!) for the most part. 4513 100 %
SVGAnimatedPointList.cpp 6727 98 %
SVGAnimatedPointList.h Class SVGAnimatedPointList Despite the fact that no SVGAnimatedPointList interface or objects exist in the SVG specification (unlike e.g. SVGAnimated*Length*List), we nevertheless have this internal class. (Note that there is an SVGAnimatedPoints interface, but that's quite different to SVGAnimatedLengthList since it is inherited by elements, as opposed to elements having members of that type.) The reason that we have this class is to provide a single locked down point of entry to the SVGPointList objects, which helps ensure that the DOM wrappers for SVGPointList objects' are always kept in sync. This is vitally important (see the comment in DOMSVGPointList::InternalListWillChangeTo) and frees consumers from having to know or worry about wrappers (or forget about them!) for the most part. 4313 88 %
SVGAnimatedPreserveAspectRatio.cpp Implementation 7943 95 %
SVGAnimatedPreserveAspectRatio.h 4998 94 %
SVGAnimatedRect.cpp 1319 100 %
SVGAnimatedRect.h 1470 75 %
SVGAnimatedString.cpp Implementation 3837 95 %
SVGAnimatedString.h 4539 100 %
SVGAnimatedTransformList.cpp 10907 92 %
SVGAnimatedTransformList.h Class SVGAnimatedTransformList This class is very different to the SVG DOM interface of the same name found in the SVG specification. This is a lightweight internal class - see DOMSVGAnimatedTransformList for the heavier DOM class that wraps instances of this class and implements the SVG specification's SVGAnimatedTransformList DOM interface. Except where noted otherwise, this class' methods take care of keeping the appropriate DOM wrappers in sync (see the comment in DOMSVGAnimatedTransformList::InternalBaseValListWillChangeTo) so that their consumers don't need to concern themselves with that. 5878 100 %
SVGAnimatedViewBox.cpp Implementation of SVGViewBox methods 9140 95 %
SVGAnimatedViewBox.h Returns true if the corresponding "viewBox" attribute defined a rectangle with finite values and nonnegative width/height. Returns false if the viewBox was set to an invalid string, or if any of the four rect values were too big to store in a float, or the width/height are negative. 5481 93 %
SVGAnimateElement.cpp 1267 100 %
SVGAnimateElement.h 1327 100 %
SVGAnimateMotionElement.cpp 1783 100 %
SVGAnimateMotionElement.h 1945 100 %
SVGAnimateTransformElement.cpp 2171 100 %
SVGAnimateTransformElement.h 1694 100 %
SVGAnimationElement.cpp 13100 92 %
SVGAnimationElement.h Helper that provides a reference to the element with the ID that is referenced by the animation element's 'href' attribute, if any, and that will notify the animation element if the element that that ID identifies changes to a different element (or none). (If the 'href' attribute is not specified, then the animation target is the parent element and this helper is not used.) 5457 94 %
SVGArcConverter.cpp 5310 100 %
SVGArcConverter.h 1000 -
SVGAttrTearoffTable.h Global hashmap to associate internal SVG data types (e.g. SVGAnimatedLength) with DOM tear-off objects (e.g. DOMSVGLength). This allows us to always return the same object for subsequent requests for DOM objects. We don't keep an owning reference to the tear-off objects so they are responsible for removing themselves from this table when they die. 2803 88 %
SVGAttrValueWrapper.cpp static 3044 100 %
SVGAttrValueWrapper.h Utility wrapper for handling SVG types used inside nsAttrValue so that these types don't need to be exported outside the SVG module. 2071 -
SVGCircleElement.cpp virtual 5878 94 %
SVGCircleElement.h 2313 50 %
SVGClipPathElement.cpp 1818 100 %
SVGClipPathElement.h 1740 100 %
SVGComponentTransferFunctionElement.h 5903 100 %
SVGContentUtils.cpp 32173 92 %
SVGContentUtils.h Functions generally used by SVG Content classes. Functions here should not generally depend on layout methods/classes e.g. SVGUtils 11989 78 %
SVGDataParser.cpp 924 95 %
SVGDataParser.h 1024 -
SVGDefsElement.cpp 1069 100 %
SVGDefsElement.h 1218 50 %
SVGDescElement.cpp 1069 83 %
SVGDescElement.h 1135 100 %
SVGDocument.cpp 1857 94 %
SVGDocument.h 1117 100 %
SVGElement.cpp 77057 97 %
SVGElement.h SVGElement is the base class for all SVG content elements. It implements all the common DOM interfaces and handles attributes. 23283 90 %
SVGElementFactory.cpp 3854 100 %
SVGElementFactory.h 1741 -
SVGEllipseElement.cpp virtual 6487 89 %
SVGEllipseElement.h 2368 50 %
SVGFEBlendElement.cpp 4500 92 %
SVGFEBlendElement.h 2362 100 %
SVGFEColorMatrixElement.cpp 5091 88 %
SVGFEColorMatrixElement.h 2691 100 %
SVGFEComponentTransferElement.cpp 3477 82 %
SVGFEComponentTransferElement.h 2206 100 %
SVGFECompositeElement.cpp 5562 82 %
SVGFECompositeElement.h 2889 100 %
SVGFEConvolveMatrixElement.cpp 9935 97 %
SVGFEConvolveMatrixElement.h 4267 100 %
SVGFEDiffuseLightingElement.cpp 3203 72 %
SVGFEDiffuseLightingElement.h 2079 100 %
SVGFEDisplacementMapElement.cpp 5283 89 %
SVGFEDisplacementMapElement.h 3209 85 %
SVGFEDistantLightElement.cpp 2441 96 %
SVGFEDistantLightElement.h 1890 100 %
SVGFEDropShadowElement.cpp 5622 78 %
SVGFEDropShadowElement.h 2903 100 %
SVGFEFloodElement.cpp 2873 97 %
SVGFEFloodElement.h 2058 100 %
SVGFEGaussianBlurElement.cpp 4329 91 %
SVGFEGaussianBlurElement.h 2561 100 %
SVGFEImageElement.cpp aForce = 15258 81 %
SVGFEImageElement.h 5051 50 %
SVGFEMergeElement.cpp 2182 95 %
SVGFEMergeElement.h 1875 100 %
SVGFEMergeNodeElement.cpp 1723 73 %
SVGFEMergeNodeElement.h 1822 100 %
SVGFEMorphologyElement.cpp 5429 91 %
SVGFEMorphologyElement.h 2892 100 %
SVGFEOffsetElement.cpp 3680 92 %
SVGFEOffsetElement.h 2379 100 %
SVGFEPointLightElement.cpp 2783 81 %
SVGFEPointLightElement.h 1884 100 %
SVGFESpecularLightingElement.cpp 3742 74 %
SVGFESpecularLightingElement.h 2211 100 %
SVGFESpotLightElement.cpp 4729 87 %
SVGFESpotLightElement.h 2331 100 %
SVGFETileElement.cpp 2722 70 %
SVGFETileElement.h 2102 100 %
SVGFETurbulenceElement.cpp 7695 99 %
SVGFETurbulenceElement.h 3253 100 %
SVGFilterElement.cpp virtual 4335 81 %
SVGFilterElement.h 2488 100 %
SVGFilters.cpp virtual 15918 90 %
SVGFilters.h Base class for filter primitive elements Children of those elements e.g. feMergeNode derive from SVGFilterPrimitiveChildElement instead 8342 96 %
SVGForeignObjectElement.cpp virtual 4373 91 %
SVGForeignObjectElement.h 2048 100 %
SVGFragmentIdentifier.cpp 7445 86 %
SVGFragmentIdentifier.h Implements support for parsing SVG fragment identifiers http://www.w3.org/TR/SVG/linking.html#SVGFragmentIdentifiers 1789 -
SVGGElement.cpp 1037 100 %
SVGGElement.h 1087 100 %
SVGGeometryElement.cpp 9985 99 %
SVGGeometryElement.h Causes this element to discard any Path object that GetOrBuildPath may have cached. 9935 98 %
SVGGeometryProperty.cpp 2207 95 %
SVGGeometryProperty.h 10030 85 %
SVGGradientElement.cpp 8105 95 %
SVGGradientElement.h 5015 100 %
SVGGraphicsElement.cpp 5750 89 %
SVGGraphicsElement.h 1920 100 %
SVGImageElement.cpp aAlwaysLoad = 12304 92 %
SVGImageElement.h 4930 44 %
SVGIntegerPairSMILType.cpp 3646 83 %
SVGIntegerPairSMILType.h 1629 100 %
SVGLength.cpp static 11629 92 %
SVGLength.h This SVGLength class is currently used for SVGLength *list* attributes only. The class that is currently used for <length> attributes is SVGAnimatedLength. The member mUnit should always be valid, but the member mValue may be numeric_limits<float>::quiet_NaN() under one circumstances (see the comment in SetValueAndUnit below). Even if mValue is valid, some methods may return numeric_limits<float>::quiet_NaN() if they involve a unit conversion that fails - see comments below. The DOM wrapper class for this class is DOMSVGLength. 5184 100 %
SVGLengthList.cpp 2130 88 %
SVGLengthList.h ATTENTION! WARNING! WATCH OUT!! Consumers that modify objects of this type absolutely MUST keep the DOM wrappers for those lists (if any) in sync!! That's why this class is so locked down. The DOM wrapper class for this class is DOMSVGLengthList. 12408 99 %
SVGLengthListSMILType.cpp static 11254 67 %
SVGLengthListSMILType.h When this method initializes the SVGLengthListAndInfo for its SMILValue argument, it has to blindly set its mCanZeroPadList to true despite the fact that some attributes can't be zero-padded. (See the explaination that follows.) SVGAnimatedLengthList::SMILAnimatedLengthList's GetBaseValue() and ValueFromString() methods then override this for the SMILValue objects that they create to set this flag to the appropriate value for the attribute in question. The reason that we default to setting the mCanZeroPadList to true is because the SMIL engine creates "zero" valued SMILValue objects for intermediary calculations, and may pass such a SMILValue (along with a SMILValue from an animation element - that is a SMILValue created by SVGAnimatedLengthList::SMILAnimatedLengthList's GetBaseValue() or ValueFromString() methods) into the Add(), ComputeDistance() or Interpolate() methods below. Even in the case of animation of list attributes that may *not* be padded with zeros (such as 'x' and 'y' on the <text> element), we need to allow zero-padding of these "zero" valued SMILValue's lists. One reason for this is illustrated by the following example: <text x="2 4">foo <animate by="2 2" .../> </text> In this example there are two SMIL animation layers to be sandwiched: the base layer, and the layer created for the <animate> element. The SMIL engine calculates the result of each layer *independently*, before compositing the results together. Thus for the <animate> sandwich layer the SMIL engine interpolates between a "zero" SMILValue that it creates (since there is no explicit "from") and the "2 2", before the result of that interpolation is added to the "2 4" from the base layer. Clearly for the interpolation between the "zero" SMILValue and "2 2" to work, the "zero" SMILValue's SVGLengthListAndInfo must be zero paddable - hence why this method always sets mCanZeroPadList to true. (Since the Add(), ComputeDistance() and Interpolate() methods may be passed two input SMILValue objects for which CanZeroPadList() returns opposite values, these methods must be careful what they set the flag to on the SMILValue that they output. If *either* of the input SMILValues has an SVGLengthListAndInfo for which CanZeroPadList() returns false, then they must set the flag to false on the output SMILValue too. If the methods failed to do that, then when the result SMILValue objects from each sandwich layer are composited together, we could end up allowing animation between lists of different length when we should not!) 4478 -
SVGLengthSMILType.cpp 3874 100 %
SVGLengthSMILType.h 1589 100 %
SVGLengthUnits.inc clang-format off 2285 -
SVGLineElement.cpp 7905 99 %
SVGLineElement.h 2254 100 %
SVGMarkerElement.cpp virtual 7389 99 %
SVGMarkerElement.h 3221 100 %
SVGMaskElement.cpp virtual 3647 82 %
SVGMaskElement.h 2119 100 %
SVGMatrix.cpp 5275 85 %
SVGMatrix.h Notes on transforms in Mozilla and the SVG code. It's important to note that the matrix convention used in the SVG standard is the opposite convention to the one used in the Mozilla code or, more specifically, the convention used in Thebes code (code using gfxMatrix). Whereas the SVG standard uses the column vector convention, Thebes code uses the row vector convention. Thus, whereas in the SVG standard you have [M1][M2][M3]|p|, in Thebes you have |p|'[M3]'[M2]'[M1]'. In other words, the following are equivalent: / a1 c1 tx1 \ / a2 c2 tx2 \ / a3 c3 tx3 \ / x \ SVG: | b1 d1 ty1 | | b2 d2 ty2 | | b3 d3 ty3 | | y | \ 0 0 1 / \ 0 0 1 / \ 0 0 1 / \ 1 / / a3 b3 0 \ / a2 b2 0 \ / a1 b1 0 \ Thebes: [ x y 1 ] | c3 d3 0 | | c2 d2 0 | | c1 d1 0 | \ tx3 ty3 1 / \ tx2 ty2 1 / \ tx1 ty1 1 / Because the Thebes representation of a transform is the transpose of the SVG representation, our transform order must be reversed when representing SVG transforms using gfxMatrix in the SVG code. Since the SVG implementation stores and obtains matrices in SVG order, to do this we must pre-multiply gfxMatrix objects that represent SVG transforms instead of post-multiplying them as we would for matrices using SVG's column vector convention. Pre-multiplying may look wrong if you're only familiar with the SVG convention, but in that case hopefully the above explanation clears things up. 5130 100 %
SVGMetadataElement.cpp 1164 86 %
SVGMetadataElement.h 1197 100 %
SVGMotionSMILAnimationFunction.cpp Returns the first <mpath> child of the given element 14353 85 %
SVGMotionSMILAnimationFunction.h 3586 100 %
SVGMotionSMILAttr.cpp representation of a dummy attribute targeted by <animateMotion> element 1502 80 %
SVGMotionSMILAttr.h representation of a dummy attribute targeted by <animateMotion> element 1773 100 %
SVGMotionSMILPathUtils.cpp 4245 92 %
SVGMotionSMILPathUtils.h Helper class to help with generating anonymous path elements for <animateMotion> elements to use. 3689 100 %
SVGMotionSMILType.cpp implementation of nsISMILType for use by <animateMotion> element 18649 87 %
SVGMotionSMILType.h implementation of SMILType for use by <animateMotion> element 2691 -
SVGMPathElement.cpp 4485 100 %
SVGMPathElement.h 2256 100 %
SVGNumberList.cpp 1952 91 %
SVGNumberList.h ATTENTION! WARNING! WATCH OUT!! Consumers that modify objects of this type absolutely MUST keep the DOM wrappers for those lists (if any) in sync!! That's why this class is so locked down. The DOM wrapper class for this class is DOMSVGNumberList. 6661 98 %
SVGNumberListSMILType.cpp The "identity" number list for a given number list attribute (the effective number list that is used if an attribute value is not specified) varies widely for different number list attributes, and can depend on the value of other attributes on the same element: http://www.w3.org/TR/SVG11/filters.html#feColorMatrixValuesAttribute http://www.w3.org/TR/SVG11/filters.html#feComponentTransferTableValuesAttribute http://www.w3.org/TR/SVG11/filters.html#feConvolveMatrixElementKernelMatrixAttribute http://www.w3.org/TR/SVG11/text.html#TextElementRotateAttribute Note that we don't need to worry about that variation here, however. The way that the SMIL engine creates and composites sandwich layers together allows us to treat "identity" SMILValue objects as a number list of zeros. Such identity SMILValues are identified by the fact that their # SVGNumberListAndInfo has not been given an element yet. 7565 94 %
SVGNumberListSMILType.h 1705 -
SVGNumberPairSMILType.cpp static 3727 82 %
SVGNumberPairSMILType.h 1546 -
SVGOrientSMILType.cpp static 5647 86 %
SVGOrientSMILType.h This SMILType class is a special case for the 'orient' attribute on SVG's 'marker' element. orient = "auto | auto-start-reverse | <angle>" Unusually, this attribute doesn't have just a single corresponding DOM property, but rather is split into two properties: 'orientType' (of type DOMSVGAnimatedEnumeration) and 'orientAngle' (of type DOMSVGAnimatedAngle). If 'orientType.animVal' is SVG_MARKER_ORIENT_ANGLE, then 'orientAngle.animVal' contains the angle that is being used. The lacuna value is 0. 2066 -
SVGPathData.cpp static 28819 97 %
SVGPathData.h Returns true, except on OOM, in which case returns false. 6891 100 %
SVGPathElement.cpp 13019 80 %
SVGPathElement.h Note: This function maps d attribute to CSS d property, and we don't flush style in this function because some callers don't need it, so if the caller needs style to be flushed (e.g. DOM APIs), the caller should flush style before calling this. 3508 100 %
SVGPathSegListSMILType.cpp 4596 98 %
SVGPathSegListSMILType.h 1787 100 %
SVGPathSegment.cpp 4840 95 %
SVGPathSegment.h 1571 100 %
SVGPathSegUtils.cpp static 15104 94 %
SVGPathSegUtils.h Code that works with path segments can use an instance of this class to store/provide information about the start of the current subpath and the last path segment (if any). 4383 100 %
SVGPatternElement.cpp virtual 5589 89 %
SVGPatternElement.h 3403 100 %
SVGPoint.h This class is currently used for point list attributes. The DOM wrapper class for this class is DOMSVGPoint. 2064 100 %
SVGPointList.cpp 3019 96 %
SVGPointList.h ATTENTION! WARNING! WATCH OUT!! Consumers that modify objects of this type absolutely MUST keep the DOM wrappers for those lists (if any) in sync!! That's why this class is so locked down. The DOM wrapper class for this class is DOMSVGPointList. 7113 98 %
SVGPointListSMILType.cpp static 6386 94 %
SVGPointListSMILType.h 1697 -
SVGPolyElement.cpp virtual 3975 85 %
SVGPolyElement.h 1701 100 %
SVGPolygonElement.cpp 2831 92 %
SVGPolygonElement.h 1368 50 %
SVGPolylineElement.cpp 1915 91 %
SVGPolylineElement.h 1291 100 %
SVGPreserveAspectRatio.cpp static 4498 92 %
SVGPreserveAspectRatio.h 3950 96 %
SVGRect.cpp 3800 89 %
SVGRect.h Generic ctor for objects that are created for an attribute. 2616 94 %
SVGRectElement.cpp virtual 9611 90 %
SVGRectElement.h 2536 50 %
SVGScriptElement.cpp 7985 96 %
SVGScriptElement.h 3265 38 %
SVGSetElement.cpp 1227 100 %
SVGSetElement.h 1299 100 %
SVGStopElement.cpp 1559 90 %
SVGStopElement.h 1391 100 %
SVGStringList.cpp 1681 86 %
SVGStringList.h The DOM wrapper class for this class is DOMSVGStringList. 4011 95 %
SVGStyleElement.cpp 7618 87 %
SVGStyleElement.h Common method to call from the various mutation observer methods. aContent is a content node that's either the one that changed or its parent; we should only respond to the change if aContent is non-anonymous. 3474 100 %
SVGSVGElement.cpp 21026 95 %
SVGSVGElement.h Send appropriate events and updates if our root translate has changed. 9568 100 %
SVGSwitchElement.cpp 3092 97 %
SVGSwitchElement.h 2259 100 %
SVGSymbolElement.cpp 1778 79 %
SVGSymbolElement.h 1405 100 %
SVGTagList.inc This file contains the list of all SVG tags. It is designed to be used as inline input to SVGElementFactory.cpp through the magic of C preprocessing. Additionally, it is consumed by the self-regeneration code in ElementName.java from which nsHtml5ElementName.cpp/h is translated. See parser/html/java/README.txt. If you edit this list, you need to re-run ElementName.java self-regeneration and the HTML parser Java to C++ translation. All entries must be enclosed in the macro SVG_TAG or SVG_FROM_PARSER_TAG which will have cruel and unusual things done to them. SVG_FROM_PARSER_TAG is used where the element creation method takes a FromParser argument, and SVG_TAG where it does not. It is recommended (but not strictly necessary) to keep all entries in alphabetical order. The first argument to SVG_TAG is both the enum identifier of the property and the atom name. The second argument is the "creator" method of the form NS_New$TAGNAMEElement, that will be used by SVGElementFactory.cpp to create a content object for a tag of that type. **** 3250 100 %
SVGTests.cpp 8192 99 %
SVGTests.h Find the active switch child using BCP 47 rules. 3028 100 %
SVGTextContentElement.cpp 6885 95 %
SVGTextContentElement.h 2647 100 %
SVGTextElement.cpp 1401 100 %
SVGTextElement.h 1536 100 %
SVGTextPathElement.cpp 4677 88 %
SVGTextPathElement.h TEXTLENGTH, 2859 100 %
SVGTextPositioningElement.cpp 2509 100 %
SVGTextPositioningElement.h 1719 100 %
SVGTitleElement.cpp 2868 93 %
SVGTitleElement.h 1766 100 %
SVGTransform.cpp 6251 86 %
SVGTransform.h The DOM wrapper class for this class is DOMSVGTransform. 5162 100 %
SVGTransformableElement.cpp 2400 100 %
SVGTransformableElement.h 2081 90 %
SVGTransformList.cpp 2001 97 %
SVGTransformList.h ATTENTION! WARNING! WATCH OUT!! Consumers that modify objects of this type absolutely MUST keep the DOM wrappers for those lists (if any) in sync!! That's why this class is so locked down. The DOM wrapper class for this class is DOMSVGTransformList. 4449 100 %
SVGTransformListParser.cpp 5012 92 %
SVGTransformListParser.h 1512 100 %
SVGTransformListSMILType.cpp 13225 97 %
SVGTransformListSMILType.h 4811 100 %
SVGTSpanElement.cpp 1413 100 %
SVGTSpanElement.h 1551 100 %
SVGUseElement.cpp 22301 93 %
SVGUseElement.h Helper that provides a reference to the element with the ID that is referenced by the 'use' element's 'href' attribute, and that will update the 'use' element if the element that that ID identifies changes to a different element (or none). 6228 100 %
SVGViewBoxSMILType.cpp static 5010 96 %
SVGViewBoxSMILType.h 1528 -
SVGViewElement.cpp 2642 58 %
SVGViewElement.h 2313 67 %
SVGViewportElement.cpp 11400 100 %
SVGViewportElement.h Returns true if this element has a base/anim value for its "viewBox" attribute that defines a viewBox rectangle with finite values, or if there is a view element overriding this element's viewBox and it has a valid viewBox. Note that this does not check whether we need to synthesize a viewBox, so you must call ShouldSynthesizeViewBox() if you need to chck that too. Note also that this method does not pay attention to whether the width or height values of the viewBox rect are positive! 6178 100 %
test -