LibWeb: Add an SVG::AttributeNames namespace

There are a whole bunch of SVG attributes, and we shouldn't mix them in
with the HTML attributes. This patch adds some of them to the new
namespace, but there are more to be added. :^)
This commit is contained in:
Andreas Kling 2021-09-15 00:26:16 +02:00
parent 53d24fbd65
commit 8949b0def6
3 changed files with 114 additions and 0 deletions

View file

@ -221,6 +221,7 @@ set(SOURCES
Page/Page.cpp
Painting/BorderPainting.cpp
Painting/StackingContext.cpp
SVG/AttributeNames.cpp
SVG/SVGElement.cpp
SVG/SVGGeometryElement.cpp
SVG/SVGGraphicsElement.cpp

View file

@ -0,0 +1,29 @@
/*
* Copyright (c) 2021, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <LibWeb/SVG/AttributeNames.h>
namespace Web::SVG::AttributeNames {
#define __ENUMERATE_SVG_ATTRIBUTE(name) FlyString name;
ENUMERATE_SVG_ATTRIBUTES(__ENUMERATE_SVG_ATTRIBUTE)
#undef __ENUMERATE_SVG_ATTRIBUTE
[[gnu::constructor]] static void initialize()
{
static bool s_initialized = false;
if (s_initialized)
return;
#define __ENUMERATE_SVG_ATTRIBUTE(name) \
name = #name;
ENUMERATE_SVG_ATTRIBUTES(__ENUMERATE_SVG_ATTRIBUTE)
#undef __ENUMERATE_SVG_ATTRIBUTE
s_initialized = true;
}
}

View file

@ -0,0 +1,84 @@
/*
* Copyright (c) 2021, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/FlyString.h>
namespace Web::SVG::AttributeNames {
#define ENUMERATE_SVG_ATTRIBUTES(E) \
E(attributeName) \
E(attributeType) \
E(baseFrequency) \
E(baseProfile) \
E(calcMode) \
E(clipPathUnits) \
E(contentScriptType) \
E(contentStyleType) \
E(diffuseConstant) \
E(edgeMode) \
E(filterUnits) \
E(glyphRef) \
E(gradientTransform) \
E(gradientUnits) \
E(height) \
E(kernelMatrix) \
E(kernelUnitLength) \
E(keyPoints) \
E(keySplines) \
E(keyTimes) \
E(lengthAdjust) \
E(limitingConeAngle) \
E(markerHeight) \
E(markerUnits) \
E(markerWidth) \
E(maskContentUnits) \
E(maskUnits) \
E(numOctaves) \
E(pathLength) \
E(patternContentUnits) \
E(patternTransform) \
E(patternUnits) \
E(pointsAtX) \
E(pointsAtY) \
E(pointsAtZ) \
E(preserveAlpha) \
E(preserveAspectRatio) \
E(primitiveUnits) \
E(refX) \
E(refY) \
E(repeatCount) \
E(repeatDur) \
E(requiredExtensions) \
E(requiredFeatures) \
E(specularConstant) \
E(specularExponent) \
E(spreadMethod) \
E(startOffset) \
E(stdDeviation) \
E(stitchTiles) \
E(surfaceScale) \
E(systemLanguage) \
E(tableValues) \
E(targetX) \
E(targetY) \
E(textLength) \
E(version) \
E(viewBox) \
E(viewTarget) \
E(width) \
E(x) \
E(xChannelSelector) \
E(y) \
E(yChannelSelector) \
E(zoomAndPan)
#define __ENUMERATE_SVG_ATTRIBUTE(name) extern FlyString name;
ENUMERATE_SVG_ATTRIBUTES(__ENUMERATE_SVG_ATTRIBUTE)
#undef __ENUMERATE_SVG_ATTRIBUTE
}