1 // SPDX-License-Identifier: GPL-2.0-or-later 2 #ifndef SEEN_SP_STYLE_ENUMS_H 3 #define SEEN_SP_STYLE_ENUMS_H 4 5 /** \file 6 * SPStyle enums: named public enums that correspond to SVG property values. 7 */ 8 /* Authors: 9 * Lauris Kaplinski <lauris@kaplinski.com> 10 * Jon A. Cruz <jon@joncruz.org> 11 * 12 * Copyright (C) 2010 Jon A. Cruz 13 * Copyright (C) 2001-2002 Lauris Kaplinski 14 * Copyright (C) 2001 Ximian, Inc. 15 * 16 * Released under GNU GPL v2+, read the file 'COPYING' for more information. 17 */ 18 19 #include <cstdint> 20 21 /* fill-rule */ 22 /* clip-rule */ 23 enum SPWindRule : std::uint_least8_t { 24 SP_WIND_RULE_NONZERO, 25 SP_WIND_RULE_INTERSECT, 26 SP_WIND_RULE_EVENODD, 27 SP_WIND_RULE_POSITIVE 28 }; 29 30 31 32 /* stroke-linejoin */ 33 enum SPStrokeJoinType : std::uint_least8_t { 34 SP_STROKE_LINEJOIN_MITER, 35 SP_STROKE_LINEJOIN_ROUND, 36 SP_STROKE_LINEJOIN_BEVEL 37 }; 38 39 /* stroke-linecap */ 40 enum SPStrokeCapType : std::uint_least8_t { 41 SP_STROKE_LINECAP_BUTT, 42 SP_STROKE_LINECAP_ROUND, 43 SP_STROKE_LINECAP_SQUARE 44 }; 45 46 47 /* SPFontStyle */ 48 enum SPCSSFontSize : std::int_least8_t { 49 SP_CSS_FONT_SIZE_XX_SMALL, 50 SP_CSS_FONT_SIZE_X_SMALL, 51 SP_CSS_FONT_SIZE_SMALL, 52 SP_CSS_FONT_SIZE_MEDIUM, 53 SP_CSS_FONT_SIZE_LARGE, 54 SP_CSS_FONT_SIZE_X_LARGE, 55 SP_CSS_FONT_SIZE_XX_LARGE, 56 SP_CSS_FONT_SIZE_SMALLER, 57 SP_CSS_FONT_SIZE_LARGER 58 }; 59 60 enum SPCSSFontStyle : std::uint_least8_t { 61 SP_CSS_FONT_STYLE_NORMAL, 62 SP_CSS_FONT_STYLE_ITALIC, 63 SP_CSS_FONT_STYLE_OBLIQUE 64 }; 65 66 enum SPCSSFontVariant : std::uint_least8_t { 67 SP_CSS_FONT_VARIANT_NORMAL, 68 SP_CSS_FONT_VARIANT_SMALL_CAPS 69 }; 70 71 enum SPCSSFontWeight : std::int_least8_t { 72 SP_CSS_FONT_WEIGHT_100, 73 SP_CSS_FONT_WEIGHT_200, 74 SP_CSS_FONT_WEIGHT_300, 75 SP_CSS_FONT_WEIGHT_400, 76 SP_CSS_FONT_WEIGHT_500, 77 SP_CSS_FONT_WEIGHT_600, 78 SP_CSS_FONT_WEIGHT_700, 79 SP_CSS_FONT_WEIGHT_800, 80 SP_CSS_FONT_WEIGHT_900, 81 SP_CSS_FONT_WEIGHT_NORMAL, 82 SP_CSS_FONT_WEIGHT_BOLD, 83 SP_CSS_FONT_WEIGHT_LIGHTER, 84 SP_CSS_FONT_WEIGHT_BOLDER 85 }; 86 87 enum SPCSSFontStretch : std::int_least8_t { 88 SP_CSS_FONT_STRETCH_ULTRA_CONDENSED, 89 SP_CSS_FONT_STRETCH_EXTRA_CONDENSED, 90 SP_CSS_FONT_STRETCH_CONDENSED, 91 SP_CSS_FONT_STRETCH_SEMI_CONDENSED, 92 SP_CSS_FONT_STRETCH_NORMAL, 93 SP_CSS_FONT_STRETCH_SEMI_EXPANDED, 94 SP_CSS_FONT_STRETCH_EXPANDED, 95 SP_CSS_FONT_STRETCH_EXTRA_EXPANDED, 96 SP_CSS_FONT_STRETCH_ULTRA_EXPANDED, 97 SP_CSS_FONT_STRETCH_NARROWER, 98 SP_CSS_FONT_STRETCH_WIDER 99 }; 100 101 // Can select more than one 102 enum SPCSSFontVariantLigatures : std::uint_least8_t { 103 SP_CSS_FONT_VARIANT_LIGATURES_NONE = 0, 104 SP_CSS_FONT_VARIANT_LIGATURES_COMMON = 1, 105 SP_CSS_FONT_VARIANT_LIGATURES_DISCRETIONARY = 2, 106 SP_CSS_FONT_VARIANT_LIGATURES_HISTORICAL = 4, 107 SP_CSS_FONT_VARIANT_LIGATURES_CONTEXTUAL = 8, 108 SP_CSS_FONT_VARIANT_LIGATURES_NORMAL = 9, // Special case 109 SP_CSS_FONT_VARIANT_LIGATURES_NOCOMMON = 16, 110 SP_CSS_FONT_VARIANT_LIGATURES_NODISCRETIONARY = 32, 111 SP_CSS_FONT_VARIANT_LIGATURES_NOHISTORICAL = 64, 112 SP_CSS_FONT_VARIANT_LIGATURES_NOCONTEXTUAL = 128 113 }; 114 115 enum SPCSSFontVariantPosition : std::uint_least8_t { 116 SP_CSS_FONT_VARIANT_POSITION_NORMAL = 1, 117 SP_CSS_FONT_VARIANT_POSITION_SUB = 2, 118 SP_CSS_FONT_VARIANT_POSITION_SUPER = 4 119 }; 120 121 enum SPCSSFontVariantCaps : std::uint_least8_t { 122 SP_CSS_FONT_VARIANT_CAPS_NORMAL = 1, 123 SP_CSS_FONT_VARIANT_CAPS_SMALL = 2, 124 SP_CSS_FONT_VARIANT_CAPS_ALL_SMALL = 4, 125 SP_CSS_FONT_VARIANT_CAPS_PETITE = 8, 126 SP_CSS_FONT_VARIANT_CAPS_ALL_PETITE = 16, 127 SP_CSS_FONT_VARIANT_CAPS_UNICASE = 32, 128 SP_CSS_FONT_VARIANT_CAPS_TITLING = 64 129 }; 130 131 // Can select more than one (see spec) 132 enum SPCSSFontVariantNumeric : std::uint_least8_t { 133 SP_CSS_FONT_VARIANT_NUMERIC_NORMAL = 0, 134 SP_CSS_FONT_VARIANT_NUMERIC_LINING_NUMS = 1, 135 SP_CSS_FONT_VARIANT_NUMERIC_OLDSTYLE_NUMS = 2, 136 SP_CSS_FONT_VARIANT_NUMERIC_PROPORTIONAL_NUMS = 4, 137 SP_CSS_FONT_VARIANT_NUMERIC_TABULAR_NUMS = 8, 138 SP_CSS_FONT_VARIANT_NUMERIC_DIAGONAL_FRACTIONS = 16, 139 SP_CSS_FONT_VARIANT_NUMERIC_STACKED_FRACTIONS = 32, 140 SP_CSS_FONT_VARIANT_NUMERIC_ORDINAL = 64, 141 SP_CSS_FONT_VARIANT_NUMERIC_SLASHED_ZERO = 128 142 }; 143 144 // Quite complicated... (see spec) 145 enum SPCSSFontVariantAlternates : std::uint_least8_t { 146 SP_CSS_FONT_VARIANT_ALTERNATES_NORMAL, 147 SP_CSS_FONT_VARIANT_ALTERNATES_HISTORICAL_FORMS, 148 SP_CSS_FONT_VARIANT_ALTERNATES_STYLISTIC, 149 SP_CSS_FONT_VARIANT_ALTERNATES_STYLESET, 150 SP_CSS_FONT_VARIANT_ALTERNATES_CHARACTER_VARIANT, 151 SP_CSS_FONT_VARIANT_ALTERNATES_SWASH, 152 SP_CSS_FONT_VARIANT_ALTERNATES_ORNAMENTS, 153 SP_CSS_FONT_VARIANT_ALTERNATES_ANNOTATION 154 }; 155 156 // Can select more than one (see spec) 157 enum SPCSSFontVariantEastAsian : std::uint_least16_t { 158 SP_CSS_FONT_VARIANT_EAST_ASIAN_NORMAL = 0, 159 SP_CSS_FONT_VARIANT_EAST_ASIAN_JIS78 = 1, 160 SP_CSS_FONT_VARIANT_EAST_ASIAN_JIS83 = 2, 161 SP_CSS_FONT_VARIANT_EAST_ASIAN_JIS90 = 4, 162 SP_CSS_FONT_VARIANT_EAST_ASIAN_JIS04 = 8, 163 SP_CSS_FONT_VARIANT_EAST_ASIAN_SIMPLIFIED = 16, 164 SP_CSS_FONT_VARIANT_EAST_ASIAN_TRADITIONAL = 32, 165 SP_CSS_FONT_VARIANT_EAST_ASIAN_FULL_WIDTH = 64, 166 SP_CSS_FONT_VARIANT_EAST_ASIAN_PROPORTIONAL_WIDTH = 128, 167 SP_CSS_FONT_VARIANT_EAST_ASIAN_RUBY = 256 168 }; 169 170 enum SPCSSTextAlign : std::uint_least8_t { 171 SP_CSS_TEXT_ALIGN_START, 172 SP_CSS_TEXT_ALIGN_END, 173 SP_CSS_TEXT_ALIGN_LEFT, 174 SP_CSS_TEXT_ALIGN_RIGHT, 175 SP_CSS_TEXT_ALIGN_CENTER, 176 SP_CSS_TEXT_ALIGN_JUSTIFY 177 // also <string> is allowed, but only within table calls 178 }; 179 180 enum SPCSSTextTransform : std::uint_least8_t { 181 SP_CSS_TEXT_TRANSFORM_CAPITALIZE, 182 SP_CSS_TEXT_TRANSFORM_UPPERCASE, 183 SP_CSS_TEXT_TRANSFORM_LOWERCASE, 184 SP_CSS_TEXT_TRANSFORM_NONE 185 }; 186 187 enum SPCSSDirection : std::uint_least8_t { 188 SP_CSS_DIRECTION_LTR, 189 SP_CSS_DIRECTION_RTL 190 }; 191 192 enum SPCSSWritingMode : std::uint_least8_t { 193 SP_CSS_WRITING_MODE_LR_TB, 194 SP_CSS_WRITING_MODE_RL_TB, 195 SP_CSS_WRITING_MODE_TB_RL, 196 SP_CSS_WRITING_MODE_TB_LR 197 }; 198 199 // CSS WRITING MODES 3 200 enum SPCSSTextOrientation : std::uint_least8_t { 201 SP_CSS_TEXT_ORIENTATION_MIXED, 202 SP_CSS_TEXT_ORIENTATION_UPRIGHT, 203 SP_CSS_TEXT_ORIENTATION_SIDEWAYS 204 }; 205 206 enum SPTextAnchor : std::uint_least8_t { 207 SP_CSS_TEXT_ANCHOR_START, 208 SP_CSS_TEXT_ANCHOR_MIDDLE, 209 SP_CSS_TEXT_ANCHOR_END 210 }; 211 212 enum SPWhiteSpace : std::uint_least8_t { 213 SP_CSS_WHITE_SPACE_NORMAL, 214 SP_CSS_WHITE_SPACE_PRE, 215 SP_CSS_WHITE_SPACE_NOWRAP, 216 SP_CSS_WHITE_SPACE_PREWRAP, 217 SP_CSS_WHITE_SPACE_PRELINE 218 }; 219 220 // Not complete list 221 enum SPCSSBaseline : std::uint_least8_t { 222 SP_CSS_BASELINE_AUTO, 223 SP_CSS_BASELINE_ALPHABETIC, 224 SP_CSS_BASELINE_IDEOGRAPHIC, 225 SP_CSS_BASELINE_HANGING, 226 SP_CSS_BASELINE_MATHEMATICAL, 227 SP_CSS_BASELINE_CENTRAL, 228 SP_CSS_BASELINE_MIDDLE, 229 SP_CSS_BASELINE_TEXT_BEFORE_EDGE, 230 SP_CSS_BASELINE_TEXT_AFTER_EDGE, 231 SP_CSS_BASELINE_SIZE // Size of enum, keep last. 232 }; 233 234 enum SPCSSBaselineShift : std::uint_least8_t { 235 SP_CSS_BASELINE_SHIFT_BASELINE, 236 SP_CSS_BASELINE_SHIFT_SUB, 237 SP_CSS_BASELINE_SHIFT_SUPER 238 }; 239 240 enum SPVisibility : std::uint_least8_t { 241 SP_CSS_VISIBILITY_HIDDEN, 242 SP_CSS_VISIBILITY_COLLAPSE, 243 SP_CSS_VISIBILITY_VISIBLE 244 }; 245 246 enum SPOverflow : std::uint_least8_t { 247 SP_CSS_OVERFLOW_VISIBLE, 248 SP_CSS_OVERFLOW_HIDDEN, 249 SP_CSS_OVERFLOW_SCROLL, 250 SP_CSS_OVERFLOW_AUTO 251 }; 252 253 /// \todo more display types 254 enum SPCSSDisplay : std::uint_least8_t { 255 SP_CSS_DISPLAY_NONE, 256 SP_CSS_DISPLAY_INLINE, 257 SP_CSS_DISPLAY_BLOCK, 258 SP_CSS_DISPLAY_LIST_ITEM, 259 SP_CSS_DISPLAY_RUN_IN, 260 SP_CSS_DISPLAY_COMPACT, 261 SP_CSS_DISPLAY_MARKER, 262 SP_CSS_DISPLAY_TABLE, 263 SP_CSS_DISPLAY_INLINE_TABLE, 264 SP_CSS_DISPLAY_TABLE_ROW_GROUP, 265 SP_CSS_DISPLAY_TABLE_HEADER_GROUP, 266 SP_CSS_DISPLAY_TABLE_FOOTER_GROUP, 267 SP_CSS_DISPLAY_TABLE_ROW, 268 SP_CSS_DISPLAY_TABLE_COLUMN_GROUP, 269 SP_CSS_DISPLAY_TABLE_COLUMN, 270 SP_CSS_DISPLAY_TABLE_CELL, 271 SP_CSS_DISPLAY_TABLE_CAPTION 272 }; 273 274 enum SPIsolation : std::uint_least8_t { 275 SP_CSS_ISOLATION_AUTO, 276 SP_CSS_ISOLATION_ISOLATE 277 }; 278 279 enum SPBlendMode : std::uint_least8_t { 280 SP_CSS_BLEND_NORMAL, 281 SP_CSS_BLEND_MULTIPLY, 282 SP_CSS_BLEND_SCREEN, 283 SP_CSS_BLEND_DARKEN, 284 SP_CSS_BLEND_LIGHTEN, 285 SP_CSS_BLEND_OVERLAY, 286 SP_CSS_BLEND_COLORDODGE, 287 SP_CSS_BLEND_COLORBURN, 288 SP_CSS_BLEND_HARDLIGHT, 289 SP_CSS_BLEND_SOFTLIGHT, 290 SP_CSS_BLEND_DIFFERENCE, 291 SP_CSS_BLEND_EXCLUSION, 292 SP_CSS_BLEND_HUE, 293 SP_CSS_BLEND_SATURATION, 294 SP_CSS_BLEND_COLOR, 295 SP_CSS_BLEND_LUMINOSITY, 296 SP_CSS_BLEND_ENDMODE 297 }; 298 299 enum SPEnableBackground : std::uint_least8_t { 300 SP_CSS_BACKGROUND_ACCUMULATE, 301 SP_CSS_BACKGROUND_NEW 302 }; 303 304 enum SPColorInterpolation : std::uint_least8_t { 305 SP_CSS_COLOR_INTERPOLATION_AUTO, 306 SP_CSS_COLOR_INTERPOLATION_SRGB, 307 SP_CSS_COLOR_INTERPOLATION_LINEARRGB 308 }; 309 310 enum SPColorRendering : std::uint_least8_t { 311 SP_CSS_COLOR_RENDERING_AUTO, 312 SP_CSS_COLOR_RENDERING_OPTIMIZESPEED, 313 SP_CSS_COLOR_RENDERING_OPTIMIZEQUALITY 314 }; 315 316 /* Last two are CSS4 Image values... for the momement prefaced with -inkscape. */ 317 enum SPImageRendering : std::uint_least8_t { 318 SP_CSS_IMAGE_RENDERING_AUTO, 319 SP_CSS_IMAGE_RENDERING_OPTIMIZESPEED, 320 SP_CSS_IMAGE_RENDERING_OPTIMIZEQUALITY, 321 SP_CSS_IMAGE_RENDERING_CRISPEDGES, 322 SP_CSS_IMAGE_RENDERING_PIXELATED 323 }; 324 325 enum SPShapeRendering : std::uint_least8_t { 326 SP_CSS_SHAPE_RENDERING_AUTO, 327 SP_CSS_SHAPE_RENDERING_OPTIMIZESPEED, 328 SP_CSS_SHAPE_RENDERING_CRISPEDGES, 329 SP_CSS_SHAPE_RENDERING_GEOMETRICPRECISION 330 }; 331 332 enum SPTextRendering : std::uint_least8_t { 333 SP_CSS_TEXT_RENDERING_AUTO, 334 SP_CSS_TEXT_RENDERING_OPTIMIZESPEED, 335 SP_CSS_TEXT_RENDERING_OPTIMIZELEGIBILITY, 336 SP_CSS_TEXT_RENDERING_GEOMETRICPRECISION 337 }; 338 339 enum SPVectorEffect : std::uint_least8_t { 340 SP_VECTOR_EFFECT_NONE = 0, 341 SP_VECTOR_EFFECT_NON_SCALING_STROKE = 1, 342 SP_VECTOR_EFFECT_NON_SCALING_SIZE = 2, 343 SP_VECTOR_EFFECT_NON_ROTATION = 4, 344 SP_VECTOR_EFFECT_FIXED_POSITION = 8 345 }; 346 347 enum SPStrokeExtensions : std::uint_least8_t { 348 SP_STROKE_EXTENSIONS_NONE, 349 SP_STROKE_EXTENSIONS_HAIRLINE 350 }; 351 352 struct SPStyleEnum { 353 char const *key; 354 int value; 355 }; 356 357 static SPStyleEnum const enum_fill_rule[] = { 358 {"nonzero", SP_WIND_RULE_NONZERO}, 359 {"evenodd", SP_WIND_RULE_EVENODD}, 360 {nullptr, -1} 361 }; 362 363 static SPStyleEnum const enum_stroke_linejoin[] = { 364 {"miter", SP_STROKE_LINEJOIN_MITER}, 365 {"round", SP_STROKE_LINEJOIN_ROUND}, 366 {"bevel", SP_STROKE_LINEJOIN_BEVEL}, 367 {nullptr, -1} 368 }; 369 370 static SPStyleEnum const enum_stroke_linecap[] = { 371 {"butt", SP_STROKE_LINECAP_BUTT}, 372 {"round", SP_STROKE_LINECAP_ROUND}, 373 {"square", SP_STROKE_LINECAP_SQUARE}, 374 {nullptr, -1} 375 }; 376 377 static SPStyleEnum const enum_font_style[] = { 378 {"normal", SP_CSS_FONT_STYLE_NORMAL}, 379 {"italic", SP_CSS_FONT_STYLE_ITALIC}, 380 {"oblique", SP_CSS_FONT_STYLE_OBLIQUE}, 381 {nullptr, -1} 382 }; 383 384 static SPStyleEnum const enum_font_size[] = { 385 {"xx-small", SP_CSS_FONT_SIZE_XX_SMALL}, 386 {"x-small", SP_CSS_FONT_SIZE_X_SMALL}, 387 {"small", SP_CSS_FONT_SIZE_SMALL}, 388 {"medium", SP_CSS_FONT_SIZE_MEDIUM}, 389 {"large", SP_CSS_FONT_SIZE_LARGE}, 390 {"x-large", SP_CSS_FONT_SIZE_X_LARGE}, 391 {"xx-large", SP_CSS_FONT_SIZE_XX_LARGE}, 392 {"smaller", SP_CSS_FONT_SIZE_SMALLER}, 393 {"larger", SP_CSS_FONT_SIZE_LARGER}, 394 {nullptr, -1} 395 }; 396 397 static SPStyleEnum const enum_font_variant[] = { 398 {"normal", SP_CSS_FONT_VARIANT_NORMAL}, 399 {"small-caps", SP_CSS_FONT_VARIANT_SMALL_CAPS}, 400 {nullptr, -1} 401 }; 402 403 static SPStyleEnum const enum_font_weight[] = { 404 {"100", SP_CSS_FONT_WEIGHT_100}, 405 {"200", SP_CSS_FONT_WEIGHT_200}, 406 {"300", SP_CSS_FONT_WEIGHT_300}, 407 {"400", SP_CSS_FONT_WEIGHT_400}, 408 {"500", SP_CSS_FONT_WEIGHT_500}, 409 {"600", SP_CSS_FONT_WEIGHT_600}, 410 {"700", SP_CSS_FONT_WEIGHT_700}, 411 {"800", SP_CSS_FONT_WEIGHT_800}, 412 {"900", SP_CSS_FONT_WEIGHT_900}, 413 {"normal", SP_CSS_FONT_WEIGHT_NORMAL}, 414 {"bold", SP_CSS_FONT_WEIGHT_BOLD}, 415 {"lighter", SP_CSS_FONT_WEIGHT_LIGHTER}, 416 {"bolder", SP_CSS_FONT_WEIGHT_BOLDER}, 417 {nullptr, -1} 418 }; 419 420 static SPStyleEnum const enum_font_stretch[] = { 421 {"ultra-condensed", SP_CSS_FONT_STRETCH_ULTRA_CONDENSED}, 422 {"extra-condensed", SP_CSS_FONT_STRETCH_EXTRA_CONDENSED}, 423 {"condensed", SP_CSS_FONT_STRETCH_CONDENSED}, 424 {"semi-condensed", SP_CSS_FONT_STRETCH_SEMI_CONDENSED}, 425 {"normal", SP_CSS_FONT_STRETCH_NORMAL}, 426 {"semi-expanded", SP_CSS_FONT_STRETCH_SEMI_EXPANDED}, 427 {"expanded", SP_CSS_FONT_STRETCH_EXPANDED}, 428 {"extra-expanded", SP_CSS_FONT_STRETCH_EXTRA_EXPANDED}, 429 {"ultra-expanded", SP_CSS_FONT_STRETCH_ULTRA_EXPANDED}, 430 {"narrower", SP_CSS_FONT_STRETCH_NARROWER}, 431 {"wider", SP_CSS_FONT_STRETCH_WIDER}, 432 {nullptr, -1} 433 }; 434 435 static SPStyleEnum const enum_font_variant_ligatures[] = { 436 {"none", SP_CSS_FONT_VARIANT_LIGATURES_NONE}, 437 {"common-ligatures", SP_CSS_FONT_VARIANT_LIGATURES_COMMON}, 438 {"discretionary-ligatures", SP_CSS_FONT_VARIANT_LIGATURES_DISCRETIONARY}, 439 {"historical-ligatures", SP_CSS_FONT_VARIANT_LIGATURES_HISTORICAL}, 440 {"contextual", SP_CSS_FONT_VARIANT_LIGATURES_CONTEXTUAL}, 441 {"normal", SP_CSS_FONT_VARIANT_LIGATURES_NORMAL}, 442 {"no-common-ligatures", SP_CSS_FONT_VARIANT_LIGATURES_NOCOMMON}, 443 {"no-discretionary-ligatures", SP_CSS_FONT_VARIANT_LIGATURES_NODISCRETIONARY}, 444 {"no-historical-ligatures", SP_CSS_FONT_VARIANT_LIGATURES_NOHISTORICAL}, 445 {"no-contextual", SP_CSS_FONT_VARIANT_LIGATURES_NOCONTEXTUAL}, 446 {nullptr, -1} 447 }; 448 449 static SPStyleEnum const enum_font_variant_position[] = { 450 {"normal", SP_CSS_FONT_VARIANT_POSITION_NORMAL}, 451 {"sub", SP_CSS_FONT_VARIANT_POSITION_SUB}, 452 {"super", SP_CSS_FONT_VARIANT_POSITION_SUPER}, 453 {nullptr, -1} 454 }; 455 456 static SPStyleEnum const enum_font_variant_caps[] = { 457 {"normal", SP_CSS_FONT_VARIANT_CAPS_NORMAL}, 458 {"small-caps", SP_CSS_FONT_VARIANT_CAPS_SMALL}, 459 {"all-small-caps", SP_CSS_FONT_VARIANT_CAPS_ALL_SMALL}, 460 {"petite-caps", SP_CSS_FONT_VARIANT_CAPS_PETITE}, 461 {"all-petite-caps", SP_CSS_FONT_VARIANT_CAPS_ALL_PETITE}, 462 {"unicase", SP_CSS_FONT_VARIANT_CAPS_UNICASE}, 463 {"titling-caps", SP_CSS_FONT_VARIANT_CAPS_TITLING}, 464 {nullptr, -1} 465 }; 466 467 static SPStyleEnum const enum_font_variant_numeric[] = { 468 {"normal", SP_CSS_FONT_VARIANT_NUMERIC_NORMAL}, 469 {"lining-nums", SP_CSS_FONT_VARIANT_NUMERIC_LINING_NUMS}, 470 {"oldstyle-nums", SP_CSS_FONT_VARIANT_NUMERIC_OLDSTYLE_NUMS}, 471 {"proportional-nums", SP_CSS_FONT_VARIANT_NUMERIC_PROPORTIONAL_NUMS}, 472 {"tabular-nums", SP_CSS_FONT_VARIANT_NUMERIC_TABULAR_NUMS}, 473 {"diagonal-fractions", SP_CSS_FONT_VARIANT_NUMERIC_DIAGONAL_FRACTIONS}, 474 {"stacked-fractions", SP_CSS_FONT_VARIANT_NUMERIC_STACKED_FRACTIONS}, 475 {"ordinal", SP_CSS_FONT_VARIANT_NUMERIC_ORDINAL}, 476 {"slashed-zero", SP_CSS_FONT_VARIANT_NUMERIC_SLASHED_ZERO}, 477 {nullptr, -1} 478 }; 479 480 static SPStyleEnum const enum_font_variant_alternates[] = { 481 {"normal", SP_CSS_FONT_VARIANT_ALTERNATES_NORMAL}, 482 {"historical-forms", SP_CSS_FONT_VARIANT_ALTERNATES_HISTORICAL_FORMS}, 483 {"stylistic", SP_CSS_FONT_VARIANT_ALTERNATES_STYLISTIC}, 484 {"styleset", SP_CSS_FONT_VARIANT_ALTERNATES_STYLESET}, 485 {"character_variant", SP_CSS_FONT_VARIANT_ALTERNATES_CHARACTER_VARIANT}, 486 {"swash", SP_CSS_FONT_VARIANT_ALTERNATES_SWASH}, 487 {"ornaments", SP_CSS_FONT_VARIANT_ALTERNATES_ORNAMENTS}, 488 {"annotation", SP_CSS_FONT_VARIANT_ALTERNATES_ANNOTATION}, 489 {nullptr, -1} 490 }; 491 492 static SPStyleEnum const enum_font_variant_east_asian[] = { 493 {"normal", SP_CSS_FONT_VARIANT_EAST_ASIAN_NORMAL}, 494 {"jis78", SP_CSS_FONT_VARIANT_EAST_ASIAN_JIS78}, 495 {"jis83", SP_CSS_FONT_VARIANT_EAST_ASIAN_JIS83}, 496 {"jis90", SP_CSS_FONT_VARIANT_EAST_ASIAN_JIS90}, 497 {"jis04", SP_CSS_FONT_VARIANT_EAST_ASIAN_JIS04}, 498 {"simplified", SP_CSS_FONT_VARIANT_EAST_ASIAN_SIMPLIFIED}, 499 {"traditional", SP_CSS_FONT_VARIANT_EAST_ASIAN_TRADITIONAL}, 500 {"full-width", SP_CSS_FONT_VARIANT_EAST_ASIAN_FULL_WIDTH}, 501 {"proportional-width", SP_CSS_FONT_VARIANT_EAST_ASIAN_PROPORTIONAL_WIDTH}, 502 {"ruby", SP_CSS_FONT_VARIANT_EAST_ASIAN_RUBY}, 503 {nullptr, -1} 504 }; 505 506 static SPStyleEnum const enum_text_align[] = { 507 {"start", SP_CSS_TEXT_ALIGN_START}, 508 {"end", SP_CSS_TEXT_ALIGN_END}, 509 {"left", SP_CSS_TEXT_ALIGN_LEFT}, 510 {"right", SP_CSS_TEXT_ALIGN_RIGHT}, 511 {"center", SP_CSS_TEXT_ALIGN_CENTER}, 512 {"justify", SP_CSS_TEXT_ALIGN_JUSTIFY}, 513 {nullptr, -1} 514 }; 515 516 static SPStyleEnum const enum_text_transform[] = { 517 {"capitalize", SP_CSS_TEXT_TRANSFORM_CAPITALIZE}, 518 {"uppercase", SP_CSS_TEXT_TRANSFORM_UPPERCASE}, 519 {"lowercase", SP_CSS_TEXT_TRANSFORM_LOWERCASE}, 520 {"none", SP_CSS_TEXT_TRANSFORM_NONE}, 521 {nullptr, -1} 522 }; 523 524 static SPStyleEnum const enum_text_anchor[] = { 525 {"start", SP_CSS_TEXT_ANCHOR_START}, 526 {"middle", SP_CSS_TEXT_ANCHOR_MIDDLE}, 527 {"end", SP_CSS_TEXT_ANCHOR_END}, 528 {nullptr, -1} 529 }; 530 531 static SPStyleEnum const enum_white_space[] = { 532 {"normal", SP_CSS_WHITE_SPACE_NORMAL }, 533 {"pre", SP_CSS_WHITE_SPACE_PRE }, 534 {"nowrap", SP_CSS_WHITE_SPACE_NOWRAP }, 535 {"pre-wrap", SP_CSS_WHITE_SPACE_PREWRAP}, 536 {"pre-line", SP_CSS_WHITE_SPACE_PRELINE}, 537 {nullptr, -1} 538 }; 539 540 static SPStyleEnum const enum_direction[] = { 541 {"ltr", SP_CSS_DIRECTION_LTR}, 542 {"rtl", SP_CSS_DIRECTION_RTL}, 543 {nullptr, -1} 544 }; 545 546 static SPStyleEnum const enum_writing_mode[] = { 547 /* Note that using the same enumerator for lr as lr-tb means we write as lr-tb even if the 548 * input file said lr. We prefer writing lr-tb on the grounds that the spec says the initial 549 * value is lr-tb rather than lr. 550 * 551 * ECMA scripts may be surprised to find tb-rl in DOM if they set the attribute to rl, so 552 * sharing enumerators for different strings may be a bug (once we support ecma script). 553 */ 554 // SVG 1.1 Deprecated but still must be supported in SVG 2. 555 {"lr-tb", SP_CSS_WRITING_MODE_LR_TB}, 556 {"rl-tb", SP_CSS_WRITING_MODE_RL_TB}, 557 {"tb-rl", SP_CSS_WRITING_MODE_TB_RL}, 558 {"lr", SP_CSS_WRITING_MODE_LR_TB}, 559 {"rl", SP_CSS_WRITING_MODE_RL_TB}, 560 {"tb", SP_CSS_WRITING_MODE_TB_RL}, 561 // SVG 2 & CSS 3 Writing Modes 562 {"horizontal-tb", SP_CSS_WRITING_MODE_LR_TB}, // This is correct, 'direction' distinguishes between 'lr' and 'rl'. 563 {"vertical-rl", SP_CSS_WRITING_MODE_TB_RL}, 564 {"vertical-lr", SP_CSS_WRITING_MODE_TB_LR}, 565 {nullptr, -1} 566 }; 567 568 // CSS WRITING MODES 3 569 static SPStyleEnum const enum_text_orientation[] = { 570 {"mixed", SP_CSS_TEXT_ORIENTATION_MIXED}, // Default 571 {"upright", SP_CSS_TEXT_ORIENTATION_UPRIGHT}, 572 {"sideways", SP_CSS_TEXT_ORIENTATION_SIDEWAYS}, 573 {nullptr, -1} 574 }; 575 576 static SPStyleEnum const enum_baseline[] = { 577 {"auto", SP_CSS_BASELINE_AUTO}, // Default 578 {"alphabetic", SP_CSS_BASELINE_ALPHABETIC}, 579 {"ideographic", SP_CSS_BASELINE_IDEOGRAPHIC}, 580 {"hanging", SP_CSS_BASELINE_HANGING}, 581 {"mathematical", SP_CSS_BASELINE_MATHEMATICAL}, 582 {"central", SP_CSS_BASELINE_CENTRAL}, 583 {"middle", SP_CSS_BASELINE_MIDDLE}, 584 {"text-before-edge", SP_CSS_BASELINE_TEXT_BEFORE_EDGE}, 585 {"text-after-edge", SP_CSS_BASELINE_TEXT_AFTER_EDGE}, 586 {nullptr, -1} 587 }; 588 589 static SPStyleEnum const enum_baseline_shift[] = { 590 {"baseline", SP_CSS_BASELINE_SHIFT_BASELINE}, 591 {"sub", SP_CSS_BASELINE_SHIFT_SUB}, 592 {"super", SP_CSS_BASELINE_SHIFT_SUPER}, 593 {nullptr, -1} 594 }; 595 596 static SPStyleEnum const enum_visibility[] = { 597 {"hidden", SP_CSS_VISIBILITY_HIDDEN}, 598 {"collapse", SP_CSS_VISIBILITY_COLLAPSE}, 599 {"visible", SP_CSS_VISIBILITY_VISIBLE}, 600 {nullptr, -1} 601 }; 602 603 static SPStyleEnum const enum_overflow[] = { 604 {"visible", SP_CSS_OVERFLOW_VISIBLE}, 605 {"hidden", SP_CSS_OVERFLOW_HIDDEN}, 606 {"scroll", SP_CSS_OVERFLOW_SCROLL}, 607 {"auto", SP_CSS_OVERFLOW_AUTO}, 608 {nullptr, -1} 609 }; 610 611 // CSS Compositing and Blending Level 1 612 static SPStyleEnum const enum_isolation[] = { 613 {"auto", SP_CSS_ISOLATION_AUTO}, 614 {"isolate", SP_CSS_ISOLATION_ISOLATE}, 615 {nullptr, -1} 616 }; 617 618 static SPStyleEnum const enum_blend_mode[] = { 619 {"normal", SP_CSS_BLEND_NORMAL}, 620 {"multiply", SP_CSS_BLEND_MULTIPLY}, 621 {"screen", SP_CSS_BLEND_SCREEN}, 622 {"darken", SP_CSS_BLEND_DARKEN}, 623 {"lighten", SP_CSS_BLEND_LIGHTEN}, 624 {"overlay", SP_CSS_BLEND_OVERLAY}, 625 {"color-dodge", SP_CSS_BLEND_COLORDODGE}, 626 {"color-burn", SP_CSS_BLEND_COLORBURN}, 627 {"hard-light", SP_CSS_BLEND_HARDLIGHT}, 628 {"soft-light", SP_CSS_BLEND_SOFTLIGHT}, 629 {"difference", SP_CSS_BLEND_DIFFERENCE}, 630 {"exclusion", SP_CSS_BLEND_EXCLUSION}, 631 {"hue", SP_CSS_BLEND_HUE}, 632 {"saturation", SP_CSS_BLEND_SATURATION}, 633 {"color", SP_CSS_BLEND_COLOR}, 634 {"luminosity", SP_CSS_BLEND_LUMINOSITY}, 635 {nullptr, -1} 636 }; 637 638 static SPStyleEnum const enum_display[] = { 639 {"none", SP_CSS_DISPLAY_NONE}, 640 {"inline", SP_CSS_DISPLAY_INLINE}, 641 {"block", SP_CSS_DISPLAY_BLOCK}, 642 {"list-item", SP_CSS_DISPLAY_LIST_ITEM}, 643 {"run-in", SP_CSS_DISPLAY_RUN_IN}, 644 {"compact", SP_CSS_DISPLAY_COMPACT}, 645 {"marker", SP_CSS_DISPLAY_MARKER}, 646 {"table", SP_CSS_DISPLAY_TABLE}, 647 {"inline-table", SP_CSS_DISPLAY_INLINE_TABLE}, 648 {"table-row-group", SP_CSS_DISPLAY_TABLE_ROW_GROUP}, 649 {"table-header-group", SP_CSS_DISPLAY_TABLE_HEADER_GROUP}, 650 {"table-footer-group", SP_CSS_DISPLAY_TABLE_FOOTER_GROUP}, 651 {"table-row", SP_CSS_DISPLAY_TABLE_ROW}, 652 {"table-column-group", SP_CSS_DISPLAY_TABLE_COLUMN_GROUP}, 653 {"table-column", SP_CSS_DISPLAY_TABLE_COLUMN}, 654 {"table-cell", SP_CSS_DISPLAY_TABLE_CELL}, 655 {"table-caption", SP_CSS_DISPLAY_TABLE_CAPTION}, 656 {nullptr, -1} 657 }; 658 659 static SPStyleEnum const enum_shape_rendering[] = { 660 {"auto", SP_CSS_SHAPE_RENDERING_AUTO}, 661 {"optimizeSpeed", SP_CSS_SHAPE_RENDERING_OPTIMIZESPEED}, 662 {"crispEdges", SP_CSS_SHAPE_RENDERING_CRISPEDGES}, 663 {"geometricPrecision", SP_CSS_SHAPE_RENDERING_GEOMETRICPRECISION}, 664 {nullptr, -1} 665 }; 666 667 static SPStyleEnum const enum_color_rendering[] = { 668 {"auto", SP_CSS_COLOR_RENDERING_AUTO}, 669 {"optimizeSpeed", SP_CSS_COLOR_RENDERING_OPTIMIZESPEED}, 670 {"optimizeQuality", SP_CSS_COLOR_RENDERING_OPTIMIZEQUALITY}, 671 {nullptr, -1} 672 }; 673 674 static SPStyleEnum const enum_image_rendering[] = { 675 {"auto", SP_CSS_IMAGE_RENDERING_AUTO}, 676 {"optimizeSpeed", SP_CSS_IMAGE_RENDERING_OPTIMIZESPEED}, 677 {"optimizeQuality", SP_CSS_IMAGE_RENDERING_OPTIMIZEQUALITY}, 678 {"crisp-edges", SP_CSS_IMAGE_RENDERING_CRISPEDGES}, 679 {"pixelated", SP_CSS_IMAGE_RENDERING_PIXELATED}, 680 {nullptr, -1} 681 }; 682 683 static SPStyleEnum const enum_text_rendering[] = { 684 {"auto", SP_CSS_TEXT_RENDERING_AUTO}, 685 {"optimizeSpeed", SP_CSS_TEXT_RENDERING_OPTIMIZESPEED}, 686 {"optimizeLegibility", SP_CSS_TEXT_RENDERING_OPTIMIZELEGIBILITY}, 687 {"geometricPrecision", SP_CSS_TEXT_RENDERING_GEOMETRICPRECISION}, 688 {nullptr, -1} 689 }; 690 691 static SPStyleEnum const enum_enable_background[] = { 692 {"accumulate", SP_CSS_BACKGROUND_ACCUMULATE}, 693 {"new", SP_CSS_BACKGROUND_NEW}, 694 {nullptr, -1} 695 }; 696 697 static SPStyleEnum const enum_clip_rule[] = { 698 {"nonzero", SP_WIND_RULE_NONZERO}, 699 {"evenodd", SP_WIND_RULE_EVENODD}, 700 {nullptr, -1} 701 }; 702 703 static SPStyleEnum const enum_color_interpolation[] = { 704 {"auto", SP_CSS_COLOR_INTERPOLATION_AUTO}, 705 {"sRGB", SP_CSS_COLOR_INTERPOLATION_SRGB}, 706 {"linearRGB", SP_CSS_COLOR_INTERPOLATION_LINEARRGB}, 707 {nullptr, -1} 708 }; 709 710 static SPStyleEnum const enum_vector_effect[] = { 711 {"none", SP_VECTOR_EFFECT_NONE}, 712 {"non-scaling-stroke", SP_VECTOR_EFFECT_NON_SCALING_STROKE}, 713 {"non-scaling-size", SP_VECTOR_EFFECT_NON_SCALING_SIZE}, 714 {"non-rotation", SP_VECTOR_EFFECT_NON_ROTATION}, 715 {"fixed-position", SP_VECTOR_EFFECT_FIXED_POSITION}, 716 {nullptr, -1} 717 }; 718 719 static SPStyleEnum const enum_stroke_extensions[] = { 720 {"none", SP_STROKE_EXTENSIONS_NONE}, 721 {"hairline", SP_STROKE_EXTENSIONS_HAIRLINE}, 722 {nullptr, -1} 723 }; 724 725 726 #endif // SEEN_SP_STYLE_ENUMS_H 727 728 729 /* 730 Local Variables: 731 mode:c++ 732 c-file-style:"stroustrup" 733 c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) 734 indent-tabs-mode:nil 735 fill-column:99 736 End: 737 */ 738 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : 739