| 1 | // Copyright 2019 the Resvg Authors |
| 2 | // SPDX-License-Identifier: Apache-2.0 OR MIT |
| 3 | |
| 4 | // This file is autogenerated. Do not edit it! |
| 5 | // See ./codegen for details. |
| 6 | |
| 7 | /// An element ID. |
| 8 | #[allow (missing_docs)] |
| 9 | #[derive (Clone, Copy, PartialEq)] |
| 10 | pub enum EId { |
| 11 | A, |
| 12 | Circle, |
| 13 | ClipPath, |
| 14 | Defs, |
| 15 | Ellipse, |
| 16 | FeBlend, |
| 17 | FeColorMatrix, |
| 18 | FeComponentTransfer, |
| 19 | FeComposite, |
| 20 | FeConvolveMatrix, |
| 21 | FeDiffuseLighting, |
| 22 | FeDisplacementMap, |
| 23 | FeDistantLight, |
| 24 | FeDropShadow, |
| 25 | FeFlood, |
| 26 | FeFuncA, |
| 27 | FeFuncB, |
| 28 | FeFuncG, |
| 29 | FeFuncR, |
| 30 | FeGaussianBlur, |
| 31 | FeImage, |
| 32 | FeMerge, |
| 33 | FeMergeNode, |
| 34 | FeMorphology, |
| 35 | FeOffset, |
| 36 | FePointLight, |
| 37 | FeSpecularLighting, |
| 38 | FeSpotLight, |
| 39 | FeTile, |
| 40 | FeTurbulence, |
| 41 | Filter, |
| 42 | G, |
| 43 | Image, |
| 44 | Line, |
| 45 | LinearGradient, |
| 46 | Marker, |
| 47 | Mask, |
| 48 | Path, |
| 49 | Pattern, |
| 50 | Polygon, |
| 51 | Polyline, |
| 52 | RadialGradient, |
| 53 | Rect, |
| 54 | Stop, |
| 55 | Style, |
| 56 | Svg, |
| 57 | Switch, |
| 58 | Symbol, |
| 59 | Text, |
| 60 | TextPath, |
| 61 | Tref, |
| 62 | Tspan, |
| 63 | Use |
| 64 | } |
| 65 | |
| 66 | static ELEMENTS: Map<EId> = Map { |
| 67 | key: 732231254413039614, |
| 68 | disps: &[ |
| 69 | (0, 12), |
| 70 | (1, 11), |
| 71 | (10, 26), |
| 72 | (2, 42), |
| 73 | (1, 19), |
| 74 | (0, 5), |
| 75 | (1, 13), |
| 76 | (8, 50), |
| 77 | (0, 0), |
| 78 | (1, 0), |
| 79 | (7, 45), |
| 80 | ], |
| 81 | entries: &[ |
| 82 | ("feFlood" , EId::FeFlood), |
| 83 | ("radialGradient" , EId::RadialGradient), |
| 84 | ("feImage" , EId::FeImage), |
| 85 | ("stop" , EId::Stop), |
| 86 | ("fePointLight" , EId::FePointLight), |
| 87 | ("feConvolveMatrix" , EId::FeConvolveMatrix), |
| 88 | ("feComposite" , EId::FeComposite), |
| 89 | ("clipPath" , EId::ClipPath), |
| 90 | ("feMerge" , EId::FeMerge), |
| 91 | ("defs" , EId::Defs), |
| 92 | ("mask" , EId::Mask), |
| 93 | ("svg" , EId::Svg), |
| 94 | ("symbol" , EId::Symbol), |
| 95 | ("linearGradient" , EId::LinearGradient), |
| 96 | ("feSpecularLighting" , EId::FeSpecularLighting), |
| 97 | ("feFuncB" , EId::FeFuncB), |
| 98 | ("filter" , EId::Filter), |
| 99 | ("feFuncG" , EId::FeFuncG), |
| 100 | ("circle" , EId::Circle), |
| 101 | ("g" , EId::G), |
| 102 | ("tref" , EId::Tref), |
| 103 | ("feFuncA" , EId::FeFuncA), |
| 104 | ("image" , EId::Image), |
| 105 | ("text" , EId::Text), |
| 106 | ("line" , EId::Line), |
| 107 | ("pattern" , EId::Pattern), |
| 108 | ("use" , EId::Use), |
| 109 | ("feDropShadow" , EId::FeDropShadow), |
| 110 | ("feSpotLight" , EId::FeSpotLight), |
| 111 | ("marker" , EId::Marker), |
| 112 | ("style" , EId::Style), |
| 113 | ("switch" , EId::Switch), |
| 114 | ("tspan" , EId::Tspan), |
| 115 | ("feColorMatrix" , EId::FeColorMatrix), |
| 116 | ("feOffset" , EId::FeOffset), |
| 117 | ("path" , EId::Path), |
| 118 | ("feGaussianBlur" , EId::FeGaussianBlur), |
| 119 | ("feTile" , EId::FeTile), |
| 120 | ("feTurbulence" , EId::FeTurbulence), |
| 121 | ("feMergeNode" , EId::FeMergeNode), |
| 122 | ("feMorphology" , EId::FeMorphology), |
| 123 | ("a" , EId::A), |
| 124 | ("textPath" , EId::TextPath), |
| 125 | ("ellipse" , EId::Ellipse), |
| 126 | ("feComponentTransfer" , EId::FeComponentTransfer), |
| 127 | ("feDistantLight" , EId::FeDistantLight), |
| 128 | ("polyline" , EId::Polyline), |
| 129 | ("polygon" , EId::Polygon), |
| 130 | ("feBlend" , EId::FeBlend), |
| 131 | ("feDisplacementMap" , EId::FeDisplacementMap), |
| 132 | ("feDiffuseLighting" , EId::FeDiffuseLighting), |
| 133 | ("rect" , EId::Rect), |
| 134 | ("feFuncR" , EId::FeFuncR), |
| 135 | ], |
| 136 | }; |
| 137 | |
| 138 | impl EId { |
| 139 | pub(crate) fn from_str(text: &str) -> Option<EId> { |
| 140 | ELEMENTS.get(key:text).cloned() |
| 141 | } |
| 142 | |
| 143 | /// Returns the original string. |
| 144 | #[inline (never)] |
| 145 | pub fn to_str(self) -> &'static str { |
| 146 | ELEMENTS.key(&self) |
| 147 | } |
| 148 | } |
| 149 | |
| 150 | impl std::fmt::Debug for EId { |
| 151 | fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { |
| 152 | write!(f, " {}" , self.to_str()) |
| 153 | } |
| 154 | } |
| 155 | |
| 156 | impl std::fmt::Display for EId { |
| 157 | fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { |
| 158 | write!(f, " {:?}" , self) |
| 159 | } |
| 160 | } |
| 161 | |
| 162 | /// An attribute ID. |
| 163 | #[allow (missing_docs)] |
| 164 | #[derive (Clone, Copy, PartialEq)] |
| 165 | pub enum AId { |
| 166 | AlignmentBaseline, |
| 167 | Amplitude, |
| 168 | Azimuth, |
| 169 | BackgroundColor, |
| 170 | BaseFrequency, |
| 171 | BaselineShift, |
| 172 | Bias, |
| 173 | Class, |
| 174 | Clip, |
| 175 | ClipPath, |
| 176 | ClipRule, |
| 177 | ClipPathUnits, |
| 178 | Color, |
| 179 | ColorInterpolation, |
| 180 | ColorInterpolationFilters, |
| 181 | ColorProfile, |
| 182 | ColorRendering, |
| 183 | Cx, |
| 184 | Cy, |
| 185 | D, |
| 186 | DiffuseConstant, |
| 187 | Direction, |
| 188 | Display, |
| 189 | Divisor, |
| 190 | DominantBaseline, |
| 191 | Dx, |
| 192 | Dy, |
| 193 | EdgeMode, |
| 194 | Elevation, |
| 195 | EnableBackground, |
| 196 | Exponent, |
| 197 | Fill, |
| 198 | FillOpacity, |
| 199 | FillRule, |
| 200 | Filter, |
| 201 | FilterUnits, |
| 202 | FloodColor, |
| 203 | FloodOpacity, |
| 204 | Font, |
| 205 | FontFamily, |
| 206 | FontFeatureSettings, |
| 207 | FontKerning, |
| 208 | FontSize, |
| 209 | FontSizeAdjust, |
| 210 | FontStretch, |
| 211 | FontStyle, |
| 212 | FontSynthesis, |
| 213 | FontVariant, |
| 214 | FontVariantCaps, |
| 215 | FontVariantEastAsian, |
| 216 | FontVariantLigatures, |
| 217 | FontVariantNumeric, |
| 218 | FontVariantPosition, |
| 219 | FontWeight, |
| 220 | Fr, |
| 221 | Fx, |
| 222 | Fy, |
| 223 | GlyphOrientationHorizontal, |
| 224 | GlyphOrientationVertical, |
| 225 | GradientTransform, |
| 226 | GradientUnits, |
| 227 | Height, |
| 228 | Href, |
| 229 | Id, |
| 230 | ImageRendering, |
| 231 | In, |
| 232 | In2, |
| 233 | InlineSize, |
| 234 | Intercept, |
| 235 | Isolation, |
| 236 | K1, |
| 237 | K2, |
| 238 | K3, |
| 239 | K4, |
| 240 | KernelMatrix, |
| 241 | KernelUnitLength, |
| 242 | Kerning, |
| 243 | LengthAdjust, |
| 244 | LetterSpacing, |
| 245 | LightingColor, |
| 246 | LimitingConeAngle, |
| 247 | LineHeight, |
| 248 | MarkerEnd, |
| 249 | MarkerMid, |
| 250 | MarkerStart, |
| 251 | MarkerHeight, |
| 252 | MarkerUnits, |
| 253 | MarkerWidth, |
| 254 | Mask, |
| 255 | MaskBorder, |
| 256 | MaskBorderMode, |
| 257 | MaskBorderOutset, |
| 258 | MaskBorderRepeat, |
| 259 | MaskBorderSlice, |
| 260 | MaskBorderSource, |
| 261 | MaskBorderWidth, |
| 262 | MaskClip, |
| 263 | MaskComposite, |
| 264 | MaskImage, |
| 265 | MaskMode, |
| 266 | MaskOrigin, |
| 267 | MaskPosition, |
| 268 | MaskSize, |
| 269 | MaskType, |
| 270 | MaskContentUnits, |
| 271 | MaskUnits, |
| 272 | MixBlendMode, |
| 273 | Mode, |
| 274 | NumOctaves, |
| 275 | Offset, |
| 276 | Opacity, |
| 277 | Operator, |
| 278 | Order, |
| 279 | Orient, |
| 280 | Overflow, |
| 281 | PaintOrder, |
| 282 | Path, |
| 283 | PathLength, |
| 284 | PatternContentUnits, |
| 285 | PatternTransform, |
| 286 | PatternUnits, |
| 287 | Points, |
| 288 | PointsAtX, |
| 289 | PointsAtY, |
| 290 | PointsAtZ, |
| 291 | PreserveAlpha, |
| 292 | PreserveAspectRatio, |
| 293 | PrimitiveUnits, |
| 294 | R, |
| 295 | Radius, |
| 296 | RefX, |
| 297 | RefY, |
| 298 | RequiredExtensions, |
| 299 | RequiredFeatures, |
| 300 | Result, |
| 301 | Rotate, |
| 302 | Rx, |
| 303 | Ry, |
| 304 | Scale, |
| 305 | Seed, |
| 306 | ShapeImageThreshold, |
| 307 | ShapeInside, |
| 308 | ShapeMargin, |
| 309 | ShapePadding, |
| 310 | ShapeRendering, |
| 311 | ShapeSubtract, |
| 312 | Side, |
| 313 | Slope, |
| 314 | Space, |
| 315 | SpecularConstant, |
| 316 | SpecularExponent, |
| 317 | SpreadMethod, |
| 318 | StartOffset, |
| 319 | StdDeviation, |
| 320 | StitchTiles, |
| 321 | StopColor, |
| 322 | StopOpacity, |
| 323 | Stroke, |
| 324 | StrokeDasharray, |
| 325 | StrokeDashoffset, |
| 326 | StrokeLinecap, |
| 327 | StrokeLinejoin, |
| 328 | StrokeMiterlimit, |
| 329 | StrokeOpacity, |
| 330 | StrokeWidth, |
| 331 | Style, |
| 332 | SurfaceScale, |
| 333 | SystemLanguage, |
| 334 | TableValues, |
| 335 | TargetX, |
| 336 | TargetY, |
| 337 | TextAlign, |
| 338 | TextAlignLast, |
| 339 | TextAnchor, |
| 340 | TextDecoration, |
| 341 | TextDecorationColor, |
| 342 | TextDecorationFill, |
| 343 | TextDecorationLine, |
| 344 | TextDecorationStroke, |
| 345 | TextDecorationStyle, |
| 346 | TextIndent, |
| 347 | TextOrientation, |
| 348 | TextOverflow, |
| 349 | TextRendering, |
| 350 | TextUnderlinePosition, |
| 351 | TextLength, |
| 352 | Transform, |
| 353 | TransformBox, |
| 354 | TransformOrigin, |
| 355 | Type, |
| 356 | UnicodeBidi, |
| 357 | UnicodeRange, |
| 358 | Values, |
| 359 | VectorEffect, |
| 360 | ViewBox, |
| 361 | Visibility, |
| 362 | WhiteSpace, |
| 363 | Width, |
| 364 | WordSpacing, |
| 365 | WritingMode, |
| 366 | X, |
| 367 | X1, |
| 368 | X2, |
| 369 | XChannelSelector, |
| 370 | Y, |
| 371 | Y1, |
| 372 | Y2, |
| 373 | YChannelSelector, |
| 374 | Z |
| 375 | } |
| 376 | |
| 377 | static ATTRIBUTES: Map<AId> = Map { |
| 378 | key: 3347381344252206323, |
| 379 | disps: &[ |
| 380 | (0, 111), |
| 381 | (0, 2), |
| 382 | (0, 45), |
| 383 | (0, 5), |
| 384 | (0, 1), |
| 385 | (2, 56), |
| 386 | (0, 5), |
| 387 | (2, 99), |
| 388 | (13, 198), |
| 389 | (0, 61), |
| 390 | (0, 52), |
| 391 | (1, 29), |
| 392 | (0, 21), |
| 393 | (0, 70), |
| 394 | (0, 164), |
| 395 | (2, 60), |
| 396 | (3, 52), |
| 397 | (0, 1), |
| 398 | (0, 86), |
| 399 | (0, 10), |
| 400 | (0, 0), |
| 401 | (0, 4), |
| 402 | (2, 175), |
| 403 | (6, 59), |
| 404 | (1, 14), |
| 405 | (0, 13), |
| 406 | (3, 175), |
| 407 | (1, 10), |
| 408 | (2, 76), |
| 409 | (0, 53), |
| 410 | (0, 24), |
| 411 | (123, 202), |
| 412 | (0, 14), |
| 413 | (0, 30), |
| 414 | (0, 62), |
| 415 | (0, 98), |
| 416 | (11, 193), |
| 417 | (8, 79), |
| 418 | (0, 17), |
| 419 | (22, 5), |
| 420 | (36, 106), |
| 421 | (1, 1), |
| 422 | ], |
| 423 | entries: &[ |
| 424 | ("mask-border-source" , AId::MaskBorderSource), |
| 425 | ("stop-opacity" , AId::StopOpacity), |
| 426 | ("stroke-linejoin" , AId::StrokeLinejoin), |
| 427 | ("dominant-baseline" , AId::DominantBaseline), |
| 428 | ("spreadMethod" , AId::SpreadMethod), |
| 429 | ("order" , AId::Order), |
| 430 | ("stroke" , AId::Stroke), |
| 431 | ("stitchTiles" , AId::StitchTiles), |
| 432 | ("height" , AId::Height), |
| 433 | ("font-size" , AId::FontSize), |
| 434 | ("background-color" , AId::BackgroundColor), |
| 435 | ("tableValues" , AId::TableValues), |
| 436 | ("x1" , AId::X1), |
| 437 | ("y" , AId::Y), |
| 438 | ("width" , AId::Width), |
| 439 | ("text-indent" , AId::TextIndent), |
| 440 | ("fill-opacity" , AId::FillOpacity), |
| 441 | ("word-spacing" , AId::WordSpacing), |
| 442 | ("cy" , AId::Cy), |
| 443 | ("scale" , AId::Scale), |
| 444 | ("x2" , AId::X2), |
| 445 | ("lengthAdjust" , AId::LengthAdjust), |
| 446 | ("glyph-orientation-horizontal" , AId::GlyphOrientationHorizontal), |
| 447 | ("opacity" , AId::Opacity), |
| 448 | ("mask-border" , AId::MaskBorder), |
| 449 | ("font-stretch" , AId::FontStretch), |
| 450 | ("stroke-dashoffset" , AId::StrokeDashoffset), |
| 451 | ("fill" , AId::Fill), |
| 452 | ("space" , AId::Space), |
| 453 | ("baseline-shift" , AId::BaselineShift), |
| 454 | ("text-align-last" , AId::TextAlignLast), |
| 455 | ("font-variant-east-asian" , AId::FontVariantEastAsian), |
| 456 | ("mask-border-mode" , AId::MaskBorderMode), |
| 457 | ("font-variant-caps" , AId::FontVariantCaps), |
| 458 | ("gradientUnits" , AId::GradientUnits), |
| 459 | ("exponent" , AId::Exponent), |
| 460 | ("text-decoration-color" , AId::TextDecorationColor), |
| 461 | ("refX" , AId::RefX), |
| 462 | ("enable-background" , AId::EnableBackground), |
| 463 | ("mask-border-width" , AId::MaskBorderWidth), |
| 464 | ("numOctaves" , AId::NumOctaves), |
| 465 | ("kerning" , AId::Kerning), |
| 466 | ("mix-blend-mode" , AId::MixBlendMode), |
| 467 | ("mask-clip" , AId::MaskClip), |
| 468 | ("mask-mode" , AId::MaskMode), |
| 469 | ("type" , AId::Type), |
| 470 | ("class" , AId::Class), |
| 471 | ("font" , AId::Font), |
| 472 | ("mask-border-repeat" , AId::MaskBorderRepeat), |
| 473 | ("stroke-miterlimit" , AId::StrokeMiterlimit), |
| 474 | ("text-decoration-stroke" , AId::TextDecorationStroke), |
| 475 | ("z" , AId::Z), |
| 476 | ("dx" , AId::Dx), |
| 477 | ("clip-path" , AId::ClipPath), |
| 478 | ("markerHeight" , AId::MarkerHeight), |
| 479 | ("text-underline-position" , AId::TextUnderlinePosition), |
| 480 | ("stdDeviation" , AId::StdDeviation), |
| 481 | ("id" , AId::Id), |
| 482 | ("paint-order" , AId::PaintOrder), |
| 483 | ("elevation" , AId::Elevation), |
| 484 | ("specularConstant" , AId::SpecularConstant), |
| 485 | ("result" , AId::Result), |
| 486 | ("font-size-adjust" , AId::FontSizeAdjust), |
| 487 | ("mask-origin" , AId::MaskOrigin), |
| 488 | ("direction" , AId::Direction), |
| 489 | ("font-variant-numeric" , AId::FontVariantNumeric), |
| 490 | ("startOffset" , AId::StartOffset), |
| 491 | ("maskUnits" , AId::MaskUnits), |
| 492 | ("font-variant" , AId::FontVariant), |
| 493 | ("text-orientation" , AId::TextOrientation), |
| 494 | ("amplitude" , AId::Amplitude), |
| 495 | ("rx" , AId::Rx), |
| 496 | ("mask-type" , AId::MaskType), |
| 497 | ("filter" , AId::Filter), |
| 498 | ("in" , AId::In), |
| 499 | ("display" , AId::Display), |
| 500 | ("seed" , AId::Seed), |
| 501 | ("unicode-range" , AId::UnicodeRange), |
| 502 | ("color-profile" , AId::ColorProfile), |
| 503 | ("x" , AId::X), |
| 504 | ("href" , AId::Href), |
| 505 | ("font-feature-settings" , AId::FontFeatureSettings), |
| 506 | ("fill-rule" , AId::FillRule), |
| 507 | ("fr" , AId::Fr), |
| 508 | ("font-variant-ligatures" , AId::FontVariantLigatures), |
| 509 | ("text-decoration-style" , AId::TextDecorationStyle), |
| 510 | ("radius" , AId::Radius), |
| 511 | ("xChannelSelector" , AId::XChannelSelector), |
| 512 | ("orient" , AId::Orient), |
| 513 | ("isolation" , AId::Isolation), |
| 514 | ("gradientTransform" , AId::GradientTransform), |
| 515 | ("transform-box" , AId::TransformBox), |
| 516 | ("pointsAtY" , AId::PointsAtY), |
| 517 | ("text-decoration-line" , AId::TextDecorationLine), |
| 518 | ("requiredFeatures" , AId::RequiredFeatures), |
| 519 | ("patternContentUnits" , AId::PatternContentUnits), |
| 520 | ("shape-padding" , AId::ShapePadding), |
| 521 | ("text-overflow" , AId::TextOverflow), |
| 522 | ("clipPathUnits" , AId::ClipPathUnits), |
| 523 | ("azimuth" , AId::Azimuth), |
| 524 | ("line-height" , AId::LineHeight), |
| 525 | ("viewBox" , AId::ViewBox), |
| 526 | ("preserveAspectRatio" , AId::PreserveAspectRatio), |
| 527 | ("path" , AId::Path), |
| 528 | ("k4" , AId::K4), |
| 529 | ("systemLanguage" , AId::SystemLanguage), |
| 530 | ("stroke-width" , AId::StrokeWidth), |
| 531 | ("specularExponent" , AId::SpecularExponent), |
| 532 | ("writing-mode" , AId::WritingMode), |
| 533 | ("transform-origin" , AId::TransformOrigin), |
| 534 | ("stroke-linecap" , AId::StrokeLinecap), |
| 535 | ("points" , AId::Points), |
| 536 | ("style" , AId::Style), |
| 537 | ("pointsAtZ" , AId::PointsAtZ), |
| 538 | ("targetX" , AId::TargetX), |
| 539 | ("font-synthesis" , AId::FontSynthesis), |
| 540 | ("maskContentUnits" , AId::MaskContentUnits), |
| 541 | ("text-align" , AId::TextAlign), |
| 542 | ("cx" , AId::Cx), |
| 543 | ("alignment-baseline" , AId::AlignmentBaseline), |
| 544 | ("font-kerning" , AId::FontKerning), |
| 545 | ("requiredExtensions" , AId::RequiredExtensions), |
| 546 | ("clip-rule" , AId::ClipRule), |
| 547 | ("mask-border-outset" , AId::MaskBorderOutset), |
| 548 | ("primitiveUnits" , AId::PrimitiveUnits), |
| 549 | ("textLength" , AId::TextLength), |
| 550 | ("text-decoration-fill" , AId::TextDecorationFill), |
| 551 | ("fy" , AId::Fy), |
| 552 | ("mask-size" , AId::MaskSize), |
| 553 | ("k3" , AId::K3), |
| 554 | ("marker-start" , AId::MarkerStart), |
| 555 | ("mode" , AId::Mode), |
| 556 | ("k1" , AId::K1), |
| 557 | ("refY" , AId::RefY), |
| 558 | ("y1" , AId::Y1), |
| 559 | ("shape-rendering" , AId::ShapeRendering), |
| 560 | ("operator" , AId::Operator), |
| 561 | ("mask-image" , AId::MaskImage), |
| 562 | ("marker-end" , AId::MarkerEnd), |
| 563 | ("rotate" , AId::Rotate), |
| 564 | ("limitingConeAngle" , AId::LimitingConeAngle), |
| 565 | ("surfaceScale" , AId::SurfaceScale), |
| 566 | ("intercept" , AId::Intercept), |
| 567 | ("font-variant-position" , AId::FontVariantPosition), |
| 568 | ("clip" , AId::Clip), |
| 569 | ("fx" , AId::Fx), |
| 570 | ("visibility" , AId::Visibility), |
| 571 | ("shape-margin" , AId::ShapeMargin), |
| 572 | ("font-style" , AId::FontStyle), |
| 573 | ("y2" , AId::Y2), |
| 574 | ("dy" , AId::Dy), |
| 575 | ("yChannelSelector" , AId::YChannelSelector), |
| 576 | ("ry" , AId::Ry), |
| 577 | ("color-rendering" , AId::ColorRendering), |
| 578 | ("white-space" , AId::WhiteSpace), |
| 579 | ("patternUnits" , AId::PatternUnits), |
| 580 | ("shape-subtract" , AId::ShapeSubtract), |
| 581 | ("markerWidth" , AId::MarkerWidth), |
| 582 | ("d" , AId::D), |
| 583 | ("shape-inside" , AId::ShapeInside), |
| 584 | ("preserveAlpha" , AId::PreserveAlpha), |
| 585 | ("shape-image-threshold" , AId::ShapeImageThreshold), |
| 586 | ("image-rendering" , AId::ImageRendering), |
| 587 | ("marker-mid" , AId::MarkerMid), |
| 588 | ("filterUnits" , AId::FilterUnits), |
| 589 | ("bias" , AId::Bias), |
| 590 | ("mask-border-slice" , AId::MaskBorderSlice), |
| 591 | ("pointsAtX" , AId::PointsAtX), |
| 592 | ("kernelMatrix" , AId::KernelMatrix), |
| 593 | ("color-interpolation" , AId::ColorInterpolation), |
| 594 | ("glyph-orientation-vertical" , AId::GlyphOrientationVertical), |
| 595 | ("color" , AId::Color), |
| 596 | ("patternTransform" , AId::PatternTransform), |
| 597 | ("kernelUnitLength" , AId::KernelUnitLength), |
| 598 | ("markerUnits" , AId::MarkerUnits), |
| 599 | ("font-weight" , AId::FontWeight), |
| 600 | ("overflow" , AId::Overflow), |
| 601 | ("stop-color" , AId::StopColor), |
| 602 | ("r" , AId::R), |
| 603 | ("k2" , AId::K2), |
| 604 | ("text-anchor" , AId::TextAnchor), |
| 605 | ("inline-size" , AId::InlineSize), |
| 606 | ("unicode-bidi" , AId::UnicodeBidi), |
| 607 | ("font-family" , AId::FontFamily), |
| 608 | ("color-interpolation-filters" , AId::ColorInterpolationFilters), |
| 609 | ("slope" , AId::Slope), |
| 610 | ("baseFrequency" , AId::BaseFrequency), |
| 611 | ("transform" , AId::Transform), |
| 612 | ("text-rendering" , AId::TextRendering), |
| 613 | ("divisor" , AId::Divisor), |
| 614 | ("edgeMode" , AId::EdgeMode), |
| 615 | ("letter-spacing" , AId::LetterSpacing), |
| 616 | ("flood-color" , AId::FloodColor), |
| 617 | ("in2" , AId::In2), |
| 618 | ("side" , AId::Side), |
| 619 | ("mask-composite" , AId::MaskComposite), |
| 620 | ("offset" , AId::Offset), |
| 621 | ("values" , AId::Values), |
| 622 | ("vector-effect" , AId::VectorEffect), |
| 623 | ("mask" , AId::Mask), |
| 624 | ("pathLength" , AId::PathLength), |
| 625 | ("lighting-color" , AId::LightingColor), |
| 626 | ("mask-position" , AId::MaskPosition), |
| 627 | ("stroke-dasharray" , AId::StrokeDasharray), |
| 628 | ("text-decoration" , AId::TextDecoration), |
| 629 | ("stroke-opacity" , AId::StrokeOpacity), |
| 630 | ("targetY" , AId::TargetY), |
| 631 | ("flood-opacity" , AId::FloodOpacity), |
| 632 | ("diffuseConstant" , AId::DiffuseConstant), |
| 633 | ], |
| 634 | }; |
| 635 | |
| 636 | impl AId { |
| 637 | pub(crate) fn from_str(text: &str) -> Option<AId> { |
| 638 | ATTRIBUTES.get(key:text).cloned() |
| 639 | } |
| 640 | |
| 641 | /// Returns the original string. |
| 642 | #[inline (never)] |
| 643 | pub fn to_str(self) -> &'static str { |
| 644 | ATTRIBUTES.key(&self) |
| 645 | } |
| 646 | } |
| 647 | |
| 648 | impl std::fmt::Debug for AId { |
| 649 | fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { |
| 650 | write!(f, " {}" , self.to_str()) |
| 651 | } |
| 652 | } |
| 653 | |
| 654 | impl std::fmt::Display for AId { |
| 655 | fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { |
| 656 | write!(f, " {:?}" , self) |
| 657 | } |
| 658 | } |
| 659 | |
| 660 | // A stripped down `phf` crate fork. |
| 661 | // |
| 662 | // https://github.com/sfackler/rust-phf |
| 663 | |
| 664 | struct Map<V: 'static> { |
| 665 | pub key: u64, |
| 666 | pub disps: &'static [(u32, u32)], |
| 667 | pub entries: &'static [(&'static str, V)], |
| 668 | } |
| 669 | |
| 670 | impl<V: PartialEq> Map<V> { |
| 671 | fn get(&self, key: &str) -> Option<&V> { |
| 672 | let hash: u64 = hash(x:key, self.key); |
| 673 | let index: u32 = get_index(hash, self.disps, self.entries.len()); |
| 674 | let entry: &(&'static str, V) = &self.entries[index as usize]; |
| 675 | let b: &'static str = entry.0; |
| 676 | if b == key { |
| 677 | Some(&entry.1) |
| 678 | } else { |
| 679 | None |
| 680 | } |
| 681 | } |
| 682 | |
| 683 | fn key(&self, value: &V) -> &'static str { |
| 684 | self.entries.iter().find(|kv: &&(&str, V)| kv.1 == *value).unwrap().0 |
| 685 | } |
| 686 | } |
| 687 | |
| 688 | #[inline ] |
| 689 | fn hash(x: &str, key: u64) -> u64 { |
| 690 | use std::hash::Hasher; |
| 691 | |
| 692 | let mut hasher: SipHasher13 = siphasher::sip::SipHasher13::new_with_keys(key0:0, key1:key); |
| 693 | hasher.write(x.as_bytes()); |
| 694 | hasher.finish() |
| 695 | } |
| 696 | |
| 697 | #[inline ] |
| 698 | fn get_index(hash: u64, disps: &[(u32, u32)], len: usize) -> u32 { |
| 699 | let (g: u32, f1: u32, f2: u32) = split(hash); |
| 700 | let (d1: u32, d2: u32) = disps[(g % (disps.len() as u32)) as usize]; |
| 701 | displace(f1, f2, d1, d2) % (len as u32) |
| 702 | } |
| 703 | |
| 704 | #[inline ] |
| 705 | fn split(hash: u64) -> (u32, u32, u32) { |
| 706 | const BITS: u32 = 21; |
| 707 | const MASK: u64 = (1 << BITS) - 1; |
| 708 | |
| 709 | ((hash & MASK) as u32, |
| 710 | ((hash >> BITS) & MASK) as u32, |
| 711 | ((hash >> (2 * BITS)) & MASK) as u32) |
| 712 | } |
| 713 | |
| 714 | #[inline ] |
| 715 | fn displace(f1: u32, f2: u32, d1: u32, d2: u32) -> u32 { |
| 716 | d2 + f1 * d1 + f2 |
| 717 | } |
| 718 | |