gecko-dev/dom/svg/SVGEllipseElement.h
violet b081f29f41 Bug 1383650 - Add conversion utilities to get CSS counterpart of SVG unit and AttrEnum r=longsonr
We need some utilities to convert SVG unit and attrenum to CSS unit and property id.
This is useful when we need to pass parsed geometry property directly to CSS.

Differential Revision: https://phabricator.services.mozilla.com/D30777

--HG--
extra : moz-landing-system : lando
2019-05-16 13:21:21 +00:00

71 lines
2.3 KiB
C++

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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 mozilla_dom_SVGEllipseElement_h
#define mozilla_dom_SVGEllipseElement_h
#include "nsCSSPropertyID.h"
#include "SVGAnimatedLength.h"
#include "SVGGeometryElement.h"
nsresult NS_NewSVGEllipseElement(
nsIContent** aResult, already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo);
namespace mozilla {
class ComputedStyle;
namespace dom {
typedef SVGGeometryElement SVGEllipseElementBase;
class SVGEllipseElement final : public SVGEllipseElementBase {
protected:
explicit SVGEllipseElement(
already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo);
virtual JSObject* WrapNode(JSContext* cx,
JS::Handle<JSObject*> aGivenProto) override;
friend nsresult(::NS_NewSVGEllipseElement(
nsIContent** aResult,
already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo));
public:
NS_IMETHOD_(bool) IsAttributeMapped(const nsAtom* aAttribute) const override;
// nsSVGSVGElement methods:
virtual bool HasValidDimensions() const override;
// SVGGeometryElement methods:
virtual bool GetGeometryBounds(
Rect* aBounds, const StrokeOptions& aStrokeOptions,
const Matrix& aToBoundsSpace,
const Matrix* aToNonScalingStrokeSpace = nullptr) override;
virtual already_AddRefed<Path> BuildPath(PathBuilder* aBuilder) override;
virtual nsresult Clone(dom::NodeInfo*, nsINode** aResult) const override;
static bool IsLengthChangedViaCSS(const ComputedStyle& aNewStyle,
const ComputedStyle& aOldStyle);
static nsCSSPropertyID GetCSSPropertyIdForAttrEnum(uint8_t aAttrEnum);
// WebIDL
already_AddRefed<DOMSVGAnimatedLength> Cx();
already_AddRefed<DOMSVGAnimatedLength> Cy();
already_AddRefed<DOMSVGAnimatedLength> Rx();
already_AddRefed<DOMSVGAnimatedLength> Ry();
protected:
virtual LengthAttributesInfo GetLengthInfo() override;
enum { CX, CY, RX, RY };
SVGAnimatedLength mLengthAttributes[4];
static LengthInfo sLengthInfo[4];
};
} // namespace dom
} // namespace mozilla
#endif // mozilla_dom_SVGEllipseElement_h