diff options
| author | Thomas Holder <thomas@thomas-holder.de> | 2019-10-26 18:38:36 +0000 |
|---|---|---|
| committer | Thomas Holder <thomas@thomas-holder.de> | 2019-10-28 11:30:42 +0000 |
| commit | b040ab1c3ff435f5c37cb05d1fd9c950d4d0b968 (patch) | |
| tree | 8d3d7f4d0296712041b341f19811e9849c481657 /src | |
| parent | refactor SPIEnum: more type safety (diff) | |
| download | inkscape-b040ab1c3ff435f5c37cb05d1fd9c950d4d0b968.tar.gz inkscape-b040ab1c3ff435f5c37cb05d1fd9c950d4d0b968.zip | |
sized style enums
Reduces memory usage by 2% in a simple test
Diffstat (limited to 'src')
| -rw-r--r-- | src/display/canvas-bpath.h | 7 | ||||
| -rw-r--r-- | src/style-enums.h | 66 | ||||
| -rw-r--r-- | src/style-internal.cpp | 3 |
3 files changed, 40 insertions, 36 deletions
diff --git a/src/display/canvas-bpath.h b/src/display/canvas-bpath.h index 4dc98315c..272c95bba 100644 --- a/src/display/canvas-bpath.h +++ b/src/display/canvas-bpath.h @@ -16,6 +16,7 @@ * */ +#include <cstdint> #include <glib.h> #include "sp-canvas-item.h" @@ -37,7 +38,7 @@ class Shape; /* stroke-linejoin */ -enum SPStrokeJoinType { +enum SPStrokeJoinType : std::uint_least8_t { SP_STROKE_LINEJOIN_MITER, SP_STROKE_LINEJOIN_ROUND, SP_STROKE_LINEJOIN_BEVEL @@ -45,7 +46,7 @@ enum SPStrokeJoinType { /* stroke-linecap */ -enum SPStrokeCapType { +enum SPStrokeCapType : std::uint_least8_t { SP_STROKE_LINECAP_BUTT, SP_STROKE_LINECAP_ROUND, SP_STROKE_LINECAP_SQUARE @@ -55,7 +56,7 @@ enum SPStrokeCapType { /* fill-rule */ /* clip-rule */ -enum SPWindRule { +enum SPWindRule : std::uint_least8_t { SP_WIND_RULE_NONZERO, SP_WIND_RULE_INTERSECT, SP_WIND_RULE_EVENODD, diff --git a/src/style-enums.h b/src/style-enums.h index 1e74e3eba..30f715d8a 100644 --- a/src/style-enums.h +++ b/src/style-enums.h @@ -20,7 +20,9 @@ #include "display/canvas-bpath.h" // FIXME those enums belong here! -enum SPCSSFontSize { +#include <cstdint> + +enum SPCSSFontSize : std::int_least8_t { SP_CSS_FONT_SIZE_XX_SMALL, SP_CSS_FONT_SIZE_X_SMALL, SP_CSS_FONT_SIZE_SMALL, @@ -32,18 +34,18 @@ enum SPCSSFontSize { SP_CSS_FONT_SIZE_LARGER }; -enum SPCSSFontStyle { +enum SPCSSFontStyle : std::uint_least8_t { SP_CSS_FONT_STYLE_NORMAL, SP_CSS_FONT_STYLE_ITALIC, SP_CSS_FONT_STYLE_OBLIQUE }; -enum SPCSSFontVariant { +enum SPCSSFontVariant : std::uint_least8_t { SP_CSS_FONT_VARIANT_NORMAL, SP_CSS_FONT_VARIANT_SMALL_CAPS }; -enum SPCSSFontWeight { +enum SPCSSFontWeight : std::int_least8_t { SP_CSS_FONT_WEIGHT_100, SP_CSS_FONT_WEIGHT_200, SP_CSS_FONT_WEIGHT_300, @@ -59,7 +61,7 @@ enum SPCSSFontWeight { SP_CSS_FONT_WEIGHT_BOLDER }; -enum SPCSSFontStretch { +enum SPCSSFontStretch : std::int_least8_t { SP_CSS_FONT_STRETCH_ULTRA_CONDENSED, SP_CSS_FONT_STRETCH_EXTRA_CONDENSED, SP_CSS_FONT_STRETCH_CONDENSED, @@ -74,7 +76,7 @@ enum SPCSSFontStretch { }; // Can select more than one -enum SPCSSFontVariantLigatures { +enum SPCSSFontVariantLigatures : std::uint_least8_t { SP_CSS_FONT_VARIANT_LIGATURES_NONE = 0, SP_CSS_FONT_VARIANT_LIGATURES_COMMON = 1, SP_CSS_FONT_VARIANT_LIGATURES_DISCRETIONARY = 2, @@ -87,13 +89,13 @@ enum SPCSSFontVariantLigatures { SP_CSS_FONT_VARIANT_LIGATURES_NOCONTEXTUAL = 128 }; -enum SPCSSFontVariantPosition { +enum SPCSSFontVariantPosition : std::uint_least8_t { SP_CSS_FONT_VARIANT_POSITION_NORMAL = 1, SP_CSS_FONT_VARIANT_POSITION_SUB = 2, SP_CSS_FONT_VARIANT_POSITION_SUPER = 4 }; -enum SPCSSFontVariantCaps { +enum SPCSSFontVariantCaps : std::uint_least8_t { SP_CSS_FONT_VARIANT_CAPS_NORMAL = 1, SP_CSS_FONT_VARIANT_CAPS_SMALL = 2, SP_CSS_FONT_VARIANT_CAPS_ALL_SMALL = 4, @@ -104,7 +106,7 @@ enum SPCSSFontVariantCaps { }; // Can select more than one (see spec) -enum SPCSSFontVariantNumeric { +enum SPCSSFontVariantNumeric : std::uint_least8_t { SP_CSS_FONT_VARIANT_NUMERIC_NORMAL = 0, SP_CSS_FONT_VARIANT_NUMERIC_LINING_NUMS = 1, SP_CSS_FONT_VARIANT_NUMERIC_OLDSTYLE_NUMS = 2, @@ -117,7 +119,7 @@ enum SPCSSFontVariantNumeric { }; // Quite complicated... (see spec) -enum SPCSSFontVariantAlternates { +enum SPCSSFontVariantAlternates : std::uint_least8_t { SP_CSS_FONT_VARIANT_ALTERNATES_NORMAL, SP_CSS_FONT_VARIANT_ALTERNATES_HISTORICAL_FORMS, SP_CSS_FONT_VARIANT_ALTERNATES_STYLISTIC, @@ -129,7 +131,7 @@ enum SPCSSFontVariantAlternates { }; // Can select more than one (see spec) -enum SPCSSFontVariantEastAsian { +enum SPCSSFontVariantEastAsian : std::uint_least16_t { SP_CSS_FONT_VARIANT_EAST_ASIAN_NORMAL = 0, SP_CSS_FONT_VARIANT_EAST_ASIAN_JIS78 = 1, SP_CSS_FONT_VARIANT_EAST_ASIAN_JIS83 = 2, @@ -142,7 +144,7 @@ enum SPCSSFontVariantEastAsian { SP_CSS_FONT_VARIANT_EAST_ASIAN_RUBY = 256 }; -enum SPCSSTextAlign { +enum SPCSSTextAlign : std::uint_least8_t { SP_CSS_TEXT_ALIGN_START, SP_CSS_TEXT_ALIGN_END, SP_CSS_TEXT_ALIGN_LEFT, @@ -152,19 +154,19 @@ enum SPCSSTextAlign { // also <string> is allowed, but only within table calls }; -enum SPCSSTextTransform { +enum SPCSSTextTransform : std::uint_least8_t { SP_CSS_TEXT_TRANSFORM_CAPITALIZE, SP_CSS_TEXT_TRANSFORM_UPPERCASE, SP_CSS_TEXT_TRANSFORM_LOWERCASE, SP_CSS_TEXT_TRANSFORM_NONE }; -enum SPCSSDirection { +enum SPCSSDirection : std::uint_least8_t { SP_CSS_DIRECTION_LTR, SP_CSS_DIRECTION_RTL }; -enum SPCSSWritingMode { +enum SPCSSWritingMode : std::uint_least8_t { SP_CSS_WRITING_MODE_LR_TB, SP_CSS_WRITING_MODE_RL_TB, SP_CSS_WRITING_MODE_TB_RL, @@ -172,19 +174,19 @@ enum SPCSSWritingMode { }; // CSS WRITING MODES 3 -enum SPCSSTextOrientation { +enum SPCSSTextOrientation : std::uint_least8_t { SP_CSS_TEXT_ORIENTATION_MIXED, SP_CSS_TEXT_ORIENTATION_UPRIGHT, SP_CSS_TEXT_ORIENTATION_SIDEWAYS }; -enum SPTextAnchor { +enum SPTextAnchor : std::uint_least8_t { SP_CSS_TEXT_ANCHOR_START, SP_CSS_TEXT_ANCHOR_MIDDLE, SP_CSS_TEXT_ANCHOR_END }; -enum SPWhiteSpace { +enum SPWhiteSpace : std::uint_least8_t { SP_CSS_WHITE_SPACE_NORMAL, SP_CSS_WHITE_SPACE_PRE, SP_CSS_WHITE_SPACE_NOWRAP, @@ -193,7 +195,7 @@ enum SPWhiteSpace { }; // Not complete list -enum SPCSSBaseline { +enum SPCSSBaseline : std::uint_least8_t { SP_CSS_BASELINE_AUTO, SP_CSS_BASELINE_ALPHABETIC, SP_CSS_BASELINE_IDEOGRAPHIC, @@ -206,19 +208,19 @@ enum SPCSSBaseline { SP_CSS_BASELINE_SIZE // Size of enum, keep last. }; -enum SPCSSBaselineShift { +enum SPCSSBaselineShift : std::uint_least8_t { SP_CSS_BASELINE_SHIFT_BASELINE, SP_CSS_BASELINE_SHIFT_SUB, SP_CSS_BASELINE_SHIFT_SUPER }; -enum SPVisibility { +enum SPVisibility : std::uint_least8_t { SP_CSS_VISIBILITY_HIDDEN, SP_CSS_VISIBILITY_COLLAPSE, SP_CSS_VISIBILITY_VISIBLE }; -enum SPOverflow { +enum SPOverflow : std::uint_least8_t { SP_CSS_OVERFLOW_VISIBLE, SP_CSS_OVERFLOW_HIDDEN, SP_CSS_OVERFLOW_SCROLL, @@ -226,7 +228,7 @@ enum SPOverflow { }; /// \todo more display types -enum SPCSSDisplay { +enum SPCSSDisplay : std::uint_least8_t { SP_CSS_DISPLAY_NONE, SP_CSS_DISPLAY_INLINE, SP_CSS_DISPLAY_BLOCK, @@ -246,12 +248,12 @@ enum SPCSSDisplay { SP_CSS_DISPLAY_TABLE_CAPTION }; -enum SPIsolation { +enum SPIsolation : std::uint_least8_t { SP_CSS_ISOLATION_AUTO, SP_CSS_ISOLATION_ISOLATE }; -enum SPBlendMode { +enum SPBlendMode : std::uint_least8_t { SP_CSS_BLEND_NORMAL, SP_CSS_BLEND_MULTIPLY, SP_CSS_BLEND_SCREEN, @@ -271,25 +273,25 @@ enum SPBlendMode { SP_CSS_BLEND_ENDMODE }; -enum SPEnableBackground { +enum SPEnableBackground : std::uint_least8_t { SP_CSS_BACKGROUND_ACCUMULATE, SP_CSS_BACKGROUND_NEW }; -enum SPColorInterpolation { +enum SPColorInterpolation : std::uint_least8_t { SP_CSS_COLOR_INTERPOLATION_AUTO, SP_CSS_COLOR_INTERPOLATION_SRGB, SP_CSS_COLOR_INTERPOLATION_LINEARRGB }; -enum SPColorRendering { +enum SPColorRendering : std::uint_least8_t { SP_CSS_COLOR_RENDERING_AUTO, SP_CSS_COLOR_RENDERING_OPTIMIZESPEED, SP_CSS_COLOR_RENDERING_OPTIMIZEQUALITY }; /* Last two are CSS4 Image values... for the momement prefaced with -inkscape. */ -enum SPImageRendering { +enum SPImageRendering : std::uint_least8_t { SP_CSS_IMAGE_RENDERING_AUTO, SP_CSS_IMAGE_RENDERING_OPTIMIZESPEED, SP_CSS_IMAGE_RENDERING_OPTIMIZEQUALITY, @@ -297,21 +299,21 @@ enum SPImageRendering { SP_CSS_IMAGE_RENDERING_PIXELATED }; -enum SPShapeRendering { +enum SPShapeRendering : std::uint_least8_t { SP_CSS_SHAPE_RENDERING_AUTO, SP_CSS_SHAPE_RENDERING_OPTIMIZESPEED, SP_CSS_SHAPE_RENDERING_CRISPEDGES, SP_CSS_SHAPE_RENDERING_GEOMETRICPRECISION }; -enum SPTextRendering { +enum SPTextRendering : std::uint_least8_t { SP_CSS_TEXT_RENDERING_AUTO, SP_CSS_TEXT_RENDERING_OPTIMIZESPEED, SP_CSS_TEXT_RENDERING_OPTIMIZELEGIBILITY, SP_CSS_TEXT_RENDERING_GEOMETRICPRECISION }; -enum SPVectorEffect { +enum SPVectorEffect : std::uint_least8_t { SP_VECTOR_EFFECT_NONE = 0, SP_VECTOR_EFFECT_NON_SCALING_STROKE = 1, SP_VECTOR_EFFECT_NON_SCALING_SIZE = 2, diff --git a/src/style-internal.cpp b/src/style-internal.cpp index 8e226c698..31ab970cf 100644 --- a/src/style-internal.cpp +++ b/src/style-internal.cpp @@ -2999,7 +2999,8 @@ template class SPIEnum<SPCSSFontStyle>; template class SPIEnum<SPCSSFontVariant>; template class SPIEnum<SPCSSFontVariantPosition>; template class SPIEnum<SPCSSFontVariantCaps>; -template class SPIEnum<_SPCSSFontVariantLigatures_int>; +template class SPIEnum<uint_least16_t>; +template class SPIEnum<uint_least8_t>; |
