From 6ed2673499ca548767bb7d2edb453a228ece86fd Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Sun, 12 Jun 2016 10:25:42 +0200 Subject: Optionally sort attributes and properties into a canonical order. Useful for comparing different versions of an SVG file. (bzr r14980) --- src/attributes.h | 101 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 54 insertions(+), 47 deletions(-) (limited to 'src/attributes.h') diff --git a/src/attributes.h b/src/attributes.h index e82db5f2a..ff426e8cf 100644 --- a/src/attributes.h +++ b/src/attributes.h @@ -24,6 +24,13 @@ unsigned char const *sp_attribute_name(unsigned int id); */ #define SP_ATTRIBUTE_IS_CSS(k) (((k) >= SP_PROP_INKSCAPE_FONT_SPEC) && ((k) <= SP_PROP_TEXT_RENDERING)) +/* + * Do not change order of attributes and properties. Attribute and + * order in an SVG file is (optionally) determined by the order here. + * This makes comparing different versions of a drawing easier using + * line-by-line comparison. Also, inorder for proper parsing, some + * properites must be before others (e.g. 'font' before 'font-family'). + */ enum SPAttributeEnum { SP_ATTR_INVALID, ///< Must have value 0. /* SPObject */ @@ -420,14 +427,49 @@ enum SPAttributeEnum { SP_ATTR_TEXT_EXCLUDE, SP_ATTR_LAYOUT_OPTIONS, - /* CSS & SVG Properties */ + /* CSS & SVG Properties KEEP ORDER */ - /* Custom full font name because Font stuff below is inadequate REMOVE ME */ - SP_PROP_INKSCAPE_FONT_SPEC, + /* Paint */ + SP_PROP_COLOR, + SP_PROP_OPACITY, + SP_PROP_FILL, + SP_PROP_FILL_OPACITY, + SP_PROP_FILL_RULE, + SP_PROP_STROKE, + SP_PROP_STROKE_OPACITY, + SP_PROP_STROKE_WIDTH, + SP_PROP_STROKE_LINECAP, + SP_PROP_STROKE_LINEJOIN, + SP_PROP_STROKE_MITERLIMIT, + SP_PROP_STROKE_DASHARRAY, + SP_PROP_STROKE_DASHOFFSET, + SP_PROP_MARKER, + SP_PROP_MARKER_END, + SP_PROP_MARKER_MID, + SP_PROP_MARKER_START, + SP_PROP_PAINT_ORDER, /* SVG2 */ + SP_PROP_SOLID_COLOR, + SP_PROP_SOLID_OPACITY, + + /* CSS Blending/Compositing */ + SP_PROP_MIX_BLEND_MODE, + SP_PROP_ISOLATION, + + /* Misc. Display */ + SP_PROP_DISPLAY, + SP_PROP_OVERFLOW, + SP_PROP_VISIBILITY, - /* Font */ + /* Clip/Mask */ + SP_PROP_CLIP, + SP_PROP_CLIP_PATH, + SP_PROP_CLIP_RULE, + SP_PROP_MASK, + + /* Font: Order is important! */ SP_PROP_FONT, SP_PROP_FONT_FAMILY, + SP_PROP_INKSCAPE_FONT_SPEC, // Remove me SP_PROP_FONT_SIZE, SP_PROP_FONT_SIZE_ADJUST, SP_PROP_FONT_STRETCH, @@ -447,12 +489,12 @@ enum SPAttributeEnum { /* Text Layout */ SP_PROP_TEXT_INDENT, SP_PROP_TEXT_ALIGN, - SP_PROP_LINE_HEIGHT, SP_PROP_LETTER_SPACING, SP_PROP_WORD_SPACING, SP_PROP_TEXT_TRANSFORM, + /* Text (CSS3) */ SP_PROP_DIRECTION, SP_PROP_WRITING_MODE, SP_PROP_TEXT_ORIENTATION, @@ -472,32 +514,14 @@ enum SPAttributeEnum { SP_PROP_SHAPE_PADDING, SP_PROP_SHAPE_MARGIN, - /* Text Decoration CSS 2/CSS 3 Shorthand */ - SP_PROP_TEXT_DECORATION, - /* Text Decoration CSS 3/SVG 2 */ + /* Text Decoration */ + SP_PROP_TEXT_DECORATION, // CSS 2/CSS3-Shorthand SP_PROP_TEXT_DECORATION_LINE, SP_PROP_TEXT_DECORATION_STYLE, SP_PROP_TEXT_DECORATION_COLOR, SP_PROP_TEXT_DECORATION_FILL, SP_PROP_TEXT_DECORATION_STROKE, - /* Misc */ - SP_PROP_CLIP, - SP_PROP_COLOR, - SP_PROP_CURSOR, - SP_PROP_DISPLAY, - SP_PROP_OVERFLOW, - SP_PROP_VISIBILITY, - SP_PROP_MIX_BLEND_MODE, - SP_PROP_ISOLATION, - - /* SVG */ - /* Clip/Mask */ - SP_PROP_CLIP_PATH, - SP_PROP_CLIP_RULE, - SP_PROP_MASK, - SP_PROP_OPACITY, - /* Filter */ SP_PROP_ENABLE_BACKGROUND, SP_PROP_FILTER, @@ -510,36 +534,19 @@ enum SPAttributeEnum { SP_PROP_STOP_OPACITY, SP_PROP_STOP_PATH, - /* Interactivity */ - SP_PROP_POINTER_EVENTS, - - /* Paint */ + /* Rendering */ SP_PROP_COLOR_INTERPOLATION, SP_PROP_COLOR_INTERPOLATION_FILTERS, SP_PROP_COLOR_PROFILE, SP_PROP_COLOR_RENDERING, - SP_PROP_FILL, - SP_PROP_FILL_OPACITY, - SP_PROP_FILL_RULE, SP_PROP_IMAGE_RENDERING, - SP_PROP_MARKER, - SP_PROP_MARKER_END, - SP_PROP_MARKER_MID, - SP_PROP_MARKER_START, - SP_PROP_PAINT_ORDER, /* SVG2 */ SP_PROP_SHAPE_RENDERING, - SP_PROP_SOLID_COLOR, - SP_PROP_SOLID_OPACITY, - SP_PROP_STROKE, - SP_PROP_STROKE_DASHARRAY, - SP_PROP_STROKE_DASHOFFSET, - SP_PROP_STROKE_LINECAP, - SP_PROP_STROKE_LINEJOIN, - SP_PROP_STROKE_MITERLIMIT, - SP_PROP_STROKE_OPACITY, - SP_PROP_STROKE_WIDTH, SP_PROP_TEXT_RENDERING, + /* Interactivity */ + SP_PROP_POINTER_EVENTS, + SP_PROP_CURSOR, + /* Conditional */ SP_PROP_SYSTEM_LANGUAGE, SP_PROP_REQUIRED_FEATURES, -- cgit v1.2.3