1 // SPDX-License-Identifier: GPL-2.0-or-later 2 #ifndef __SP_ATTRIBUTES_H__ 3 #define __SP_ATTRIBUTES_H__ 4 5 /** \file 6 * Lookup dictionary for attributes/properties. 7 */ 8 /* 9 * Author: 10 * Lauris Kaplinski <lauris@kaplinski.com> 11 * 12 * Copyright (C) 2006 Johan Engelen <johan@shouraizou.nl> 13 * Copyright (C) 2002 Lauris Kaplinski 14 * 15 * Released under GNU GPL v2+, read the file 'COPYING' for more information. 16 */ 17 #include <glibmm/value.h> 18 #include <vector> 19 20 /* 21 * Do not change order of attributes and properties. Attribute and 22 * order in an SVG file is (optionally) determined by the order here. 23 * This makes comparing different versions of a drawing easier using 24 * line-by-line comparison. Also, inorder for proper parsing, some 25 * properites must be before others (e.g. 'font' before 'font-family'). 26 */ 27 enum class SPAttr { 28 INVALID, ///< Must have value 0. 29 /* SPObject */ 30 ID, 31 STYLE, 32 INKSCAPE_COLLECT, 33 INKSCAPE_LABEL, 34 /* SPRoot Put these near top as the apply to the entire SVG */ 35 VERSION, 36 INKSCAPE_VERSION, 37 WIDTH, 38 HEIGHT, 39 VIEWBOX, 40 PRESERVEASPECTRATIO, 41 ONLOAD, 42 SODIPODI_DOCNAME, 43 /* SPItem */ 44 TRANSFORM, 45 SODIPODI_TYPE, 46 SODIPODI_INSENSITIVE, 47 CONNECTOR_AVOID, 48 CONNECTION_POINTS, 49 TRANSFORM_CENTER_X, 50 TRANSFORM_CENTER_Y, 51 INKSCAPE_PATH_EFFECT, 52 INKSCAPE_HIGHLIGHT_COLOR, 53 INKSCAPE_SPRAY_ORIGIN, 54 /* SPAnchor */ 55 XLINK_HREF, 56 XLINK_TYPE, 57 XLINK_ROLE, 58 XLINK_ARCROLE, 59 XLINK_TITLE, 60 XLINK_SHOW, 61 XLINK_ACTUATE, 62 TARGET, 63 /* SPGroup */ 64 INKSCAPE_GROUPMODE, 65 INKSCAPE_EXPANDED, 66 /* SPNamedView */ 67 VIEWONLY, 68 SHOWGUIDES, 69 SHOWGRIDS, 70 GRIDTOLERANCE, 71 GUIDETOLERANCE, 72 OBJECTTOLERANCE, 73 GUIDECOLOR, 74 GUIDEOPACITY, 75 GUIDEHICOLOR, 76 GUIDEHIOPACITY, 77 SHOWBORDER, 78 SHOWPAGESHADOW, 79 BORDERLAYER, 80 BORDERCOLOR, 81 BORDEROPACITY, 82 PAGECOLOR, 83 FIT_MARGIN_TOP, 84 FIT_MARGIN_LEFT, 85 FIT_MARGIN_RIGHT, 86 FIT_MARGIN_BOTTOM, 87 INKSCAPE_PAGECHECKERBOARD, 88 INKSCAPE_PAGEOPACITY, 89 INKSCAPE_PAGESHADOW, 90 INKSCAPE_ZOOM, 91 INKSCAPE_ROTATION, 92 INKSCAPE_CX, 93 INKSCAPE_CY, 94 INKSCAPE_WINDOW_WIDTH, 95 INKSCAPE_WINDOW_HEIGHT, 96 INKSCAPE_WINDOW_X, 97 INKSCAPE_WINDOW_Y, 98 INKSCAPE_WINDOW_MAXIMIZED, 99 INKSCAPE_SNAP_GLOBAL, 100 INKSCAPE_SNAP_PERP, 101 INKSCAPE_SNAP_TANG, 102 INKSCAPE_SNAP_BBOX, 103 INKSCAPE_SNAP_NODE, 104 INKSCAPE_SNAP_OTHERS, 105 INKSCAPE_SNAP_FROM_GUIDE, 106 INKSCAPE_SNAP_ROTATION_CENTER, 107 INKSCAPE_SNAP_GRID, 108 INKSCAPE_SNAP_GUIDE, 109 INKSCAPE_SNAP_NODE_SMOOTH, 110 INKSCAPE_SNAP_LINE_MIDPOINT, 111 INKSCAPE_SNAP_OBJECT_MIDPOINT, 112 INKSCAPE_SNAP_TEXT_BASELINE, 113 INKSCAPE_SNAP_BBOX_EDGE_MIDPOINT, 114 INKSCAPE_SNAP_BBOX_MIDPOINT, 115 INKSCAPE_SNAP_PATH_INTERSECTION, 116 INKSCAPE_SNAP_PATH, 117 INKSCAPE_SNAP_PATH_CLIP, 118 INKSCAPE_SNAP_PATH_MASK, 119 INKSCAPE_SNAP_NODE_CUSP, 120 INKSCAPE_SNAP_BBOX_EDGE, 121 INKSCAPE_SNAP_BBOX_CORNER, 122 INKSCAPE_SNAP_PAGE_BORDER, 123 INKSCAPE_CURRENT_LAYER, 124 INKSCAPE_DOCUMENT_UNITS, 125 INKSCAPE_LOCKGUIDES, 126 UNITS, 127 /* SPColorProfile */ 128 LOCAL, 129 NAME, 130 RENDERING_INTENT, 131 /* SPGuide */ 132 ORIENTATION, 133 POSITION, 134 INKSCAPE_COLOR, 135 INKSCAPE_LOCKED, 136 /* SPImage, SPRect, etc. */ 137 X, 138 Y, 139 SVG_DPI, 140 /* SPPath */ 141 // D, Promoted to property in SVG 2 142 INKSCAPE_ORIGINAL_D, 143 CONNECTOR_TYPE, 144 CONNECTOR_CURVATURE, 145 INKSCAPE_CONNECTOR_SPACING, 146 CONNECTION_START, 147 CONNECTION_END, 148 CONNECTION_START_POINT, 149 CONNECTION_END_POINT, 150 /* SPRect */ 151 RX, 152 RY, 153 /* Box3D */ 154 INKSCAPE_BOX3D_PERSPECTIVE_ID, 155 INKSCAPE_BOX3D_CORNER0, // "upper left front" corner (as a point in 3-space) 156 INKSCAPE_BOX3D_CORNER7, // "lower right rear" corner (as a point in 3-space) 157 /* Box3DSide */ 158 INKSCAPE_BOX3D_SIDE_TYPE, 159 /* Persp3D */ 160 INKSCAPE_PERSP3D, 161 INKSCAPE_PERSP3D_VP_X, 162 INKSCAPE_PERSP3D_VP_Y, 163 INKSCAPE_PERSP3D_VP_Z, 164 INKSCAPE_PERSP3D_ORIGIN, 165 /* SPEllipse */ 166 R, 167 CX, 168 CY, 169 SODIPODI_CX, 170 SODIPODI_CY, 171 SODIPODI_RX, 172 SODIPODI_RY, 173 SODIPODI_START, 174 SODIPODI_END, 175 SODIPODI_OPEN, 176 SODIPODI_ARC_TYPE, 177 /* SPStar */ 178 SODIPODI_SIDES, 179 SODIPODI_R1, 180 SODIPODI_R2, 181 SODIPODI_ARG1, 182 SODIPODI_ARG2, 183 INKSCAPE_FLATSIDED, 184 INKSCAPE_ROUNDED, 185 INKSCAPE_RANDOMIZED, 186 /* SPSpiral */ 187 SODIPODI_EXPANSION, 188 SODIPODI_REVOLUTION, 189 SODIPODI_RADIUS, 190 SODIPODI_ARGUMENT, 191 SODIPODI_T0, 192 /* SPOffset */ 193 SODIPODI_ORIGINAL, 194 INKSCAPE_ORIGINAL, 195 INKSCAPE_HREF, 196 INKSCAPE_RADIUS, 197 /* SPLine */ 198 X1, 199 Y1, 200 X2, 201 Y2, 202 /* SPPolyline */ 203 POINTS, 204 /* SPTSpan */ 205 DX, 206 DY, 207 ROTATE, 208 TEXTLENGTH, 209 LENGTHADJUST, 210 SODIPODI_ROLE, 211 /* SPText */ 212 SODIPODI_LINESPACING, 213 /* SPTextPath */ 214 STARTOFFSET, 215 SIDE, 216 /* SPStop */ 217 OFFSET, 218 /* SPFilter */ 219 FILTERUNITS, 220 PRIMITIVEUNITS, 221 FILTERRES, 222 /* Filter primitives common */ 223 IN_, 224 RESULT, 225 /*feBlend*/ 226 MODE, 227 IN2, 228 /*feColorMatrix*/ 229 TYPE, 230 VALUES, 231 /*feComponentTransfer*/ 232 //TYPE, 233 TABLEVALUES, 234 SLOPE, 235 INTERCEPT, 236 AMPLITUDE, 237 EXPONENT, 238 //OFFSET, 239 /*feComposite*/ 240 OPERATOR, 241 K1, 242 K2, 243 K3, 244 K4, 245 //IN2, 246 /*feConvolveMatrix*/ 247 ORDER, 248 KERNELMATRIX, 249 DIVISOR, 250 BIAS, 251 TARGETX, 252 TARGETY, 253 EDGEMODE, 254 KERNELUNITLENGTH, 255 PRESERVEALPHA, 256 /*feDiffuseLighting*/ 257 SURFACESCALE, 258 DIFFUSECONSTANT, 259 //KERNELUNITLENGTH, 260 /*feDisplacementMap*/ 261 SCALE, 262 XCHANNELSELECTOR, 263 YCHANNELSELECTOR, 264 //IN2, 265 /*feDistantLight*/ 266 AZIMUTH, 267 ELEVATION, 268 /*fePointLight*/ 269 Z, 270 /*feSpotLight*/ 271 POINTSATX, 272 POINTSATY, 273 POINTSATZ, 274 LIMITINGCONEANGLE, 275 /* SPGaussianBlur */ 276 STDDEVIATION, 277 /*feImage*/ 278 /*feMerge*/ 279 /*feMorphology*/ 280 //OPERATOR, 281 RADIUS, 282 /*feOffset*/ 283 //DX, 284 //DY, 285 /*feSpecularLighting*/ 286 //SURFACESCALE, 287 SPECULARCONSTANT, 288 SPECULAREXPONENT, 289 /*feTile*/ 290 /*feTurbulence*/ 291 BASEFREQUENCY, 292 NUMOCTAVES, 293 SEED, 294 STITCHTILES, 295 //TYPE, 296 /* SPGradient */ 297 GRADIENTUNITS, 298 GRADIENTTRANSFORM, 299 SPREADMETHOD, 300 INKSCAPE_SWATCH, 301 /* SPRadialGradient */ 302 FX, 303 FY, 304 FR, 305 /* SPMeshPatch */ 306 TENSOR, 307 //TYPE, 308 /* SPPattern */ 309 PATTERNUNITS, 310 PATTERNCONTENTUNITS, 311 PATTERNTRANSFORM, 312 /* SPHatch */ 313 HATCHUNITS, 314 HATCHCONTENTUNITS, 315 HATCHTRANSFORM, 316 PITCH, 317 /* SPClipPath */ 318 CLIPPATHUNITS, 319 /* SPMask */ 320 MASKUNITS, 321 MASKCONTENTUNITS, 322 /* SPMarker */ 323 MARKERUNITS, 324 REFX, 325 REFY, 326 MARKERWIDTH, 327 MARKERHEIGHT, 328 ORIENT, 329 /* SPStyleElem */ 330 //TYPE, 331 /* Animations */ 332 ATTRIBUTENAME, 333 ATTRIBUTETYPE, 334 BEGIN, 335 DUR, 336 END, 337 MIN, 338 MAX, 339 RESTART, 340 REPEATCOUNT, 341 REPEATDUR, 342 343 /* Interpolating animations */ 344 CALCMODE, 345 //VALUES, 346 KEYTIMES, 347 KEYSPLINES, 348 FROM, 349 TO, 350 BY, 351 ADDITIVE, 352 ACCUMULATE, 353 354 /* SVGFonts */ 355 /* SPFont */ 356 HORIZ_ORIGIN_X, 357 HORIZ_ORIGIN_Y, 358 HORIZ_ADV_X, 359 VERT_ORIGIN_X, 360 VERT_ORIGIN_Y, 361 VERT_ADV_Y, 362 363 UNICODE, 364 GLYPH_NAME, 365 //ORIENTATION, 366 ARABIC_FORM, 367 LANG, 368 369 /*<hkern> and <vkern>*/ 370 U1, 371 G1, 372 U2, 373 G2, 374 K, 375 376 /*<font-face>*/ 377 // FONT_FAMILY, 378 // FONT_STYLE, 379 // FONT_VARIANT, 380 // FONT_WEIGHT, 381 // FONT_STRETCH, 382 // FONT_SIZE, 383 UNICODE_RANGE, 384 UNITS_PER_EM, 385 PANOSE_1, 386 STEMV, 387 STEMH, 388 //SLOPE, 389 CAP_HEIGHT, 390 X_HEIGHT, 391 ACCENT_HEIGHT, 392 ASCENT, 393 DESCENT, 394 WIDTHS, 395 BBOX, 396 IDEOGRAPHIC, 397 ALPHABETIC, 398 MATHEMATICAL, 399 HANGING, 400 V_IDEOGRAPHIC, 401 V_ALPHABETIC, 402 V_MATHEMATICAL, 403 V_HANGING, 404 UNDERLINE_POSITION, 405 UNDERLINE_THICKNESS, 406 STRIKETHROUGH_POSITION, 407 STRIKETHROUGH_THICKNESS, 408 OVERLINE_POSITION, 409 OVERLINE_THICKNESS, 410 411 /* XML */ 412 XML_SPACE, 413 XML_LANG, 414 415 /* typeset */ 416 TEXT_NOMARKUP, 417 TEXT_PANGOMARKUP, 418 TEXT_INSHAPE, 419 TEXT_ONPATH, 420 TEXT_INBOX, 421 TEXT_INCOLUMN, 422 TEXT_EXCLUDE, 423 LAYOUT_OPTIONS, 424 425 /* CSS & SVG Properties KEEP ORDER! 426 * If first or last property changed, macro at top must be changed! 427 */ 428 429 /* SVG 2 Attributes promoted to properties */ 430 D, 431 432 /* Paint */ 433 COLOR, 434 OPACITY, 435 FILL, 436 FILL_OPACITY, 437 FILL_RULE, 438 STROKE, 439 STROKE_OPACITY, 440 STROKE_WIDTH, 441 STROKE_LINECAP, 442 STROKE_LINEJOIN, 443 STROKE_MITERLIMIT, 444 STROKE_DASHARRAY, 445 STROKE_DASHOFFSET, 446 STROKE_EXTENSIONS, 447 MARKER, 448 MARKER_END, 449 MARKER_MID, 450 MARKER_START, 451 PAINT_ORDER, /* SVG2 */ 452 SOLID_COLOR, 453 SOLID_OPACITY, 454 VECTOR_EFFECT, 455 456 /* CSS Blending/Compositing */ 457 MIX_BLEND_MODE, 458 ISOLATION, 459 460 /* Misc. Display */ 461 DISPLAY, 462 OVERFLOW_, 463 VISIBILITY, 464 465 /* Clip/Mask */ 466 CLIP, 467 CLIP_PATH, 468 CLIP_RULE, 469 MASK, 470 471 /* Font: Order is important! */ 472 FONT, 473 FONT_FAMILY, 474 INKSCAPE_FONT_SPEC, // Remove me 475 FONT_SIZE, 476 FONT_SIZE_ADJUST, 477 FONT_STRETCH, 478 FONT_STYLE, 479 FONT_VARIANT, 480 FONT_WEIGHT, 481 482 /* Font Variants CSS 3 */ 483 FONT_VARIANT_LIGATURES, 484 FONT_VARIANT_POSITION, 485 FONT_VARIANT_CAPS, 486 FONT_VARIANT_NUMERIC, 487 FONT_VARIANT_ALTERNATES, 488 FONT_VARIANT_EAST_ASIAN, 489 FONT_FEATURE_SETTINGS, 490 491 /* Variable Fonts (CSS Fonts Module Level 4) */ 492 FONT_VARIATION_SETTINGS, 493 494 /* Text Layout */ 495 TEXT_INDENT, 496 TEXT_ALIGN, 497 LINE_HEIGHT, 498 LETTER_SPACING, 499 WORD_SPACING, 500 TEXT_TRANSFORM, 501 502 /* Text (CSS3) */ 503 DIRECTION, 504 WRITING_MODE, 505 TEXT_ORIENTATION, 506 UNICODE_BIDI, 507 ALIGNMENT_BASELINE, 508 BASELINE_SHIFT, 509 DOMINANT_BASELINE, 510 GLYPH_ORIENTATION_HORIZONTAL, 511 GLYPH_ORIENTATION_VERTICAL, 512 KERNING, 513 TEXT_ANCHOR, 514 WHITE_SPACE, 515 516 /* SVG 2 Text Wrapping */ 517 SHAPE_INSIDE, 518 SHAPE_SUBTRACT, 519 SHAPE_PADDING, 520 SHAPE_MARGIN, 521 INLINE_SIZE, 522 523 /* Text Decoration */ 524 TEXT_DECORATION, // CSS 2/CSS3-Shorthand 525 TEXT_DECORATION_LINE, 526 TEXT_DECORATION_STYLE, 527 TEXT_DECORATION_COLOR, 528 TEXT_DECORATION_FILL, 529 TEXT_DECORATION_STROKE, 530 531 /* Filter */ 532 ENABLE_BACKGROUND, 533 FILTER, 534 FLOOD_COLOR, 535 FLOOD_OPACITY, 536 LIGHTING_COLOR, 537 AUTO_REGION, 538 539 /* Gradient */ 540 STOP_COLOR, 541 STOP_OPACITY, 542 STOP_PATH, 543 544 /* Rendering */ 545 COLOR_INTERPOLATION, 546 COLOR_INTERPOLATION_FILTERS, 547 COLOR_PROFILE, 548 COLOR_RENDERING, 549 IMAGE_RENDERING, 550 SHAPE_RENDERING, 551 TEXT_RENDERING, 552 553 /* Interactivity */ 554 POINTER_EVENTS, 555 CURSOR, 556 557 /* Conditional */ 558 SYSTEM_LANGUAGE, 559 REQUIRED_FEATURES, 560 REQUIRED_EXTENSIONS, 561 562 /* LivePathEffect */ 563 PATH_EFFECT, 564 565 // sentinel 566 SPAttr_SIZE 567 }; 568 569 /** 570 * True iff k is a property in SVG, i.e. something that can be written either in a style attribute 571 * or as its own XML attribute. This must be kept in sync with SPAttr. 572 */ 573 bool SP_ATTRIBUTE_IS_CSS(SPAttr k); 574 575 /** 576 * Get attribute id by name. Return INVALID for invalid names. 577 */ 578 SPAttr sp_attribute_lookup(gchar const *key); 579 580 /** 581 * Get attribute name by id. Return NULL for invalid ids. 582 */ 583 gchar const *sp_attribute_name(SPAttr id); 584 585 /** 586 * Get sorted attribute name list. 587 * @param css_only If true, only return CSS properties 588 */ 589 std::vector<Glib::ustring> sp_attribute_name_list(bool css_only = false); 590 591 #endif 592 593 594 /* 595 Local Variables: 596 mode:c++ 597 c-file-style:"stroustrup" 598 c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) 599 indent-tabs-mode:nil 600 fill-column:99 601 End: 602 */ 603 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : 604