- isDefaultColor( true ),
- familyDefined( false ),
- weightDefined( false ),
- widthDefined( false ),
- slantDefined( false ),
- sizeDefined( false ),
- lineSpacingDefined( false )
- {}
-
- ~InputStyle()
- {};
-
- Vector4 textColor; ///< The text's color.
- std::string fontStyle; ///< The font's style string.
- std::string familyName; ///< The font's family name.
- FontWeight weight; ///< The font's weight.
- FontWidth width; ///< The font's width.
- FontSlant slant; ///< The font's slant.
- float size; ///< The font's size.
-
- float lineSpacing; ///< The line's spacing.
- std::string underlineProperties; ///< The underline properties string.
- std::string shadowProperties; ///< The shadow properties string.
- std::string embossProperties; ///< The emboss properties string.
- std::string outlineProperties; ///< The outline properties string.
-
- bool isDefaultColor : 1; ///< Whether the text's color is the default.
- bool familyDefined : 1; ///< Whether the font's family is defined.
- bool weightDefined : 1; ///< Whether the font's weight is defined.
- bool widthDefined : 1; ///< Whether the font's width is defined.
- bool slantDefined : 1; ///< Whether the font's slant is defined.
- bool sizeDefined : 1; ///< Whether the font's size is defined.
-
- bool lineSpacingDefined : 1; ///< Whether the line spacing is defined.
+ strikethroughProperties(),
+ isDefaultColor(true),
+ isFamilyDefined(false),
+ isWeightDefined(false),
+ isWidthDefined(false),
+ isSlantDefined(false),
+ isSizeDefined(false),
+ isLineSpacingDefined(false),
+ isUnderlineDefined(false),
+ isShadowDefined(false),
+ isEmbossDefined(false),
+ isOutlineDefined(false),
+ isStrikethroughDefined(false)
+ {
+ }
+
+ ~InputStyle(){};
+
+ /**
+ * @brief
+ *
+ * Does not copy the font-style, underline, shadow, emboss and outline property strings.
+ */
+ void Copy(const InputStyle& inputStyle)
+ {
+ isDefaultColor = inputStyle.isDefaultColor;
+ textColor = inputStyle.textColor;
+
+ isFamilyDefined = inputStyle.isFamilyDefined;
+ familyName = inputStyle.familyName;
+
+ isWeightDefined = inputStyle.isWeightDefined;
+ weight = inputStyle.weight;
+
+ isWidthDefined = inputStyle.isWidthDefined;
+ width = inputStyle.width;
+
+ isSlantDefined = inputStyle.isSlantDefined;
+ slant = inputStyle.slant;
+
+ isSizeDefined = inputStyle.isSizeDefined;
+ size = inputStyle.size;
+
+ isLineSpacingDefined = inputStyle.isLineSpacingDefined;
+ lineSpacing = inputStyle.lineSpacing;
+
+ isUnderlineDefined = inputStyle.isUnderlineDefined;
+ underlineProperties = inputStyle.underlineProperties;
+
+ isShadowDefined = inputStyle.isShadowDefined;
+ shadowProperties = inputStyle.shadowProperties;
+
+ isEmbossDefined = inputStyle.isEmbossDefined;
+ embossProperties = inputStyle.embossProperties;
+
+ isOutlineDefined = inputStyle.isOutlineDefined;
+ outlineProperties = inputStyle.outlineProperties;
+
+ isStrikethroughDefined = inputStyle.isStrikethroughDefined;
+ strikethroughProperties = inputStyle.strikethroughProperties;
+ }
+
+ /**
+ * @brief
+ *
+ * Does not compare the font-style, underline, shadow, emboss and outline property strings.
+ */
+ bool Equal(const InputStyle& inputStyle) const
+ {
+ if((isDefaultColor != inputStyle.isDefaultColor) ||
+ (isFamilyDefined != inputStyle.isFamilyDefined) ||
+ (isWeightDefined != inputStyle.isWeightDefined) ||
+ (isWidthDefined != inputStyle.isWidthDefined) ||
+ (isSlantDefined != inputStyle.isSlantDefined) ||
+ (isSizeDefined != inputStyle.isSizeDefined) ||
+ (isLineSpacingDefined != inputStyle.isLineSpacingDefined) ||
+ (isUnderlineDefined != inputStyle.isUnderlineDefined) ||
+ (isShadowDefined != inputStyle.isShadowDefined) ||
+ (isEmbossDefined != inputStyle.isEmbossDefined) ||
+ (isOutlineDefined != inputStyle.isOutlineDefined) ||
+ (textColor != inputStyle.textColor) ||
+ (familyName != inputStyle.familyName) ||
+ (weight != inputStyle.weight) ||
+ (width != inputStyle.width) ||
+ (slant != inputStyle.slant) ||
+ (size != inputStyle.size) ||
+ (lineSpacing != inputStyle.lineSpacing) ||
+ (underlineProperties != inputStyle.underlineProperties) ||
+ (shadowProperties != inputStyle.shadowProperties) ||
+ (embossProperties != inputStyle.embossProperties) ||
+ (outlineProperties != inputStyle.outlineProperties) ||
+ (isStrikethroughDefined != inputStyle.isStrikethroughDefined))
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ Mask GetInputStyleChangeMask(const InputStyle& inputStyle) const
+ {
+ Mask mask = NONE;
+
+ if(textColor != inputStyle.textColor)
+ {
+ mask = static_cast<Mask>(mask | INPUT_COLOR);
+ }
+ if(familyName != inputStyle.familyName)
+ {
+ mask = static_cast<Mask>(mask | INPUT_FONT_FAMILY);
+ }
+ if(weight != inputStyle.weight)
+ {
+ mask = static_cast<Mask>(mask | INPUT_FONT_WEIGHT);
+ }
+ if(width != inputStyle.width)
+ {
+ mask = static_cast<Mask>(mask | INPUT_FONT_WIDTH);
+ }
+ if(slant != inputStyle.slant)
+ {
+ mask = static_cast<Mask>(mask | INPUT_FONT_SLANT);
+ }
+ if(size != inputStyle.size)
+ {
+ mask = static_cast<Mask>(mask | INPUT_POINT_SIZE);
+ }
+ if(lineSpacing != inputStyle.lineSpacing)
+ {
+ mask = static_cast<Mask>(mask | INPUT_LINE_SPACING);
+ }
+ if(underlineProperties != inputStyle.underlineProperties)
+ {
+ mask = static_cast<Mask>(mask | INPUT_UNDERLINE);
+ }
+ if(shadowProperties != inputStyle.shadowProperties)
+ {
+ mask = static_cast<Mask>(mask | INPUT_SHADOW);
+ }
+ if(embossProperties != inputStyle.embossProperties)
+ {
+ mask = static_cast<Mask>(mask | INPUT_EMBOSS);
+ }
+ if(outlineProperties != inputStyle.outlineProperties)
+ {
+ mask = static_cast<Mask>(mask | INPUT_OUTLINE);
+ }
+ if(strikethroughProperties != inputStyle.strikethroughProperties)
+ {
+ mask = static_cast<Mask>(mask | INPUT_STRIKETHROUGH);
+ }
+
+ return mask;
+ }
+
+ Vector4 textColor; ///< The text's color.
+ std::string familyName; ///< The font's family name.
+ FontWeight weight; ///< The font's weight.
+ FontWidth width; ///< The font's width.
+ FontSlant slant; ///< The font's slant.
+ float size; ///< The font's size.
+
+ float lineSpacing; ///< The line's spacing.
+
+ std::string underlineProperties; ///< The underline properties string.
+ std::string shadowProperties; ///< The shadow properties string.
+ std::string embossProperties; ///< The emboss properties string.
+ std::string outlineProperties; ///< The outline properties string.
+ std::string strikethroughProperties; ///< The strikethrough properties string.
+
+ bool isDefaultColor : 1; ///< Whether the text's color is the default.
+ bool isFamilyDefined : 1; ///< Whether the font's family is defined.
+ bool isWeightDefined : 1; ///< Whether the font's weight is defined.
+ bool isWidthDefined : 1; ///< Whether the font's width is defined.
+ bool isSlantDefined : 1; ///< Whether the font's slant is defined.
+ bool isSizeDefined : 1; ///< Whether the font's size is defined.
+
+ bool isLineSpacingDefined : 1; ///< Whether the line spacing is defined.
+ bool isUnderlineDefined : 1; ///< Whether the underline parameters are defined.
+ bool isShadowDefined : 1; ///< Whether the shadow parameters are defined.
+ bool isEmbossDefined : 1; ///< Whether the emboss parameters are defined.
+ bool isOutlineDefined : 1; ///< Whether the outline parameters are defined.
+ bool isStrikethroughDefined : 1; ///< Whether the strikethrough parameters are defined.