зеркало из https://github.com/mozilla/gecko-dev.git
55 строки
2.1 KiB
C++
55 строки
2.1 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/. */
|
|
|
|
#include "SVGGeometryProperty.h"
|
|
#include "SVGCircleElement.h"
|
|
#include "SVGEllipseElement.h"
|
|
#include "SVGForeignObjectElement.h"
|
|
#include "SVGImageElement.h"
|
|
#include "SVGRectElement.h"
|
|
#include "SVGUseElement.h"
|
|
|
|
namespace mozilla::dom::SVGGeometryProperty {
|
|
|
|
nsCSSPropertyID AttrEnumToCSSPropId(const SVGElement* aElement,
|
|
uint8_t aAttrEnum) {
|
|
// This is a very trivial function only applied to a few elements,
|
|
// so we want to avoid making it virtual.
|
|
if (aElement->IsSVGElement(nsGkAtoms::rect)) {
|
|
return SVGRectElement::GetCSSPropertyIdForAttrEnum(aAttrEnum);
|
|
}
|
|
if (aElement->IsSVGElement(nsGkAtoms::circle)) {
|
|
return SVGCircleElement::GetCSSPropertyIdForAttrEnum(aAttrEnum);
|
|
}
|
|
if (aElement->IsSVGElement(nsGkAtoms::ellipse)) {
|
|
return SVGEllipseElement::GetCSSPropertyIdForAttrEnum(aAttrEnum);
|
|
}
|
|
if (aElement->IsSVGElement(nsGkAtoms::image)) {
|
|
return SVGImageElement::GetCSSPropertyIdForAttrEnum(aAttrEnum);
|
|
}
|
|
if (aElement->IsSVGElement(nsGkAtoms::foreignObject)) {
|
|
return SVGForeignObjectElement::GetCSSPropertyIdForAttrEnum(aAttrEnum);
|
|
}
|
|
if (aElement->IsSVGElement(nsGkAtoms::use)) {
|
|
return SVGUseElement::GetCSSPropertyIdForAttrEnum(aAttrEnum);
|
|
}
|
|
return eCSSProperty_UNKNOWN;
|
|
}
|
|
|
|
bool IsNonNegativeGeometryProperty(nsCSSPropertyID aProp) {
|
|
return aProp == eCSSProperty_r || aProp == eCSSProperty_rx ||
|
|
aProp == eCSSProperty_ry || aProp == eCSSProperty_width ||
|
|
aProp == eCSSProperty_height;
|
|
}
|
|
|
|
bool ElementMapsLengthsToStyle(SVGElement const* aElement) {
|
|
return aElement->IsAnyOfSVGElements(nsGkAtoms::rect, nsGkAtoms::circle,
|
|
nsGkAtoms::ellipse, nsGkAtoms::image,
|
|
nsGkAtoms::foreignObject, nsGkAtoms::use);
|
|
}
|
|
|
|
} // namespace mozilla::dom::SVGGeometryProperty
|