Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgstextcharacterformat.h 3 : : ----------------- 4 : : begin : May 2020 5 : : copyright : (C) Nyall Dawson 6 : : email : nyall dot dawson at gmail dot com 7 : : *************************************************************************** 8 : : * * 9 : : * This program is free software; you can redistribute it and/or modify * 10 : : * it under the terms of the GNU General Public License as published by * 11 : : * the Free Software Foundation; either version 2 of the License, or * 12 : : * (at your option) any later version. * 13 : : * * 14 : : ***************************************************************************/ 15 : : 16 : : #ifndef QGSTEXTCHARACTERFORMAT_H 17 : : #define QGSTEXTCHARACTERFORMAT_H 18 : : 19 : : #include "qgis_sip.h" 20 : : #include "qgis_core.h" 21 : : 22 : : #include <QFont> 23 : : #include <QColor> 24 : : 25 : : class QTextCharFormat; 26 : : 27 : : /** 28 : : * \class QgsTextCharacterFormat 29 : : * \ingroup core 30 : : * \brief Stores information relating to individual character formatting. 31 : : * 32 : : * These options encapsulate formatting options which override the default 33 : : * settings from a QgsTextFormat for individual characters (or sets of characters). 34 : : * 35 : : * \warning This API is not considered stable and may change in future QGIS versions. 36 : : * 37 : : * \since QGIS 3.14 38 : : */ 39 : 0 : class CORE_EXPORT QgsTextCharacterFormat 40 : : { 41 : : public: 42 : : 43 : : /** 44 : : * Constructor for QgsTextCharacterFormat. 45 : : */ 46 : 0 : QgsTextCharacterFormat() = default; 47 : : 48 : : /** 49 : : * Constructor for QgsTextCharacterFormat, based on the specified QTextCharFormat \a format. 50 : : */ 51 : : QgsTextCharacterFormat( const QTextCharFormat &format ); 52 : : 53 : : //! Status values for boolean format properties 54 : : enum class BooleanValue 55 : : { 56 : : NotSet, //!< Property is not set 57 : : SetTrue, //!< Property is set and TRUE 58 : : SetFalse, //!< Property is set and FALSE 59 : : }; 60 : : 61 : : /** 62 : : * Returns the character's text color, or an invalid color if no color override 63 : : * is set and the default format color should be used. 64 : : * 65 : : * \see setTextColor() 66 : : */ 67 : : QColor textColor() const; 68 : : 69 : : /** 70 : : * Sets the character's text \a color. 71 : : * 72 : : * Set \a color to an invalid color if no color override 73 : : * is desired and the default format color should be used. 74 : : * 75 : : * \see textColor() 76 : : */ 77 : : void setTextColor( const QColor &textColor ); 78 : : 79 : : #if 0 80 : : 81 : : /** 82 : : * Returns the font weight, or -1 if the font weight is not set 83 : : * and should be inherited. 84 : : * 85 : : * \see setFontWeight() 86 : : */ 87 : : int fontWeight() const; 88 : : 89 : : /** 90 : : * Sets the font \a weight. 91 : : * 92 : : * Set \a weight to -1 if the font weight is not set 93 : : * and should be inherited. 94 : : * 95 : : * \see fontWeight() 96 : : */ 97 : : void setFontWeight( int fontWeight ); 98 : : 99 : : /** 100 : : * Returns whether the format has italic enabled. 101 : : * 102 : : * \see setItalic() 103 : : */ 104 : : BooleanValue italic() const; 105 : : 106 : : /** 107 : : * Sets whether the format has italic \a enabled. 108 : : * 109 : : * \see italic() 110 : : */ 111 : : void setItalic( BooleanValue enabled ); 112 : : #endif 113 : : 114 : : /** 115 : : * Returns whether the format has strikethrough enabled. 116 : : * 117 : : * \see setStrikeOut() 118 : : */ 119 : : BooleanValue strikeOut() const; 120 : : 121 : : /** 122 : : * Sets whether the format has strikethrough \a enabled. 123 : : * 124 : : * \see strikeOut() 125 : : */ 126 : : void setStrikeOut( BooleanValue enabled ); 127 : : 128 : : /** 129 : : * Returns whether the format has underline enabled. 130 : : * 131 : : * \see setUnderline() 132 : : */ 133 : : BooleanValue underline() const; 134 : : 135 : : /** 136 : : * Sets whether the format has underline \a enabled. 137 : : * 138 : : * \see underline() 139 : : */ 140 : : void setUnderline( BooleanValue enabled ); 141 : : 142 : : /** 143 : : * Returns whether the format has overline enabled. 144 : : * 145 : : * \see setUnderline() 146 : : */ 147 : : BooleanValue overline() const; 148 : : 149 : : /** 150 : : * Sets whether the format has overline \a enabled. 151 : : * 152 : : * \see overline() 153 : : */ 154 : : void setOverline( BooleanValue enabled ); 155 : : 156 : : /** 157 : : * Updates the specified \a font in place, applying character formatting options which 158 : : * are applicable on a font level. 159 : : * 160 : : * The optional \a scaleFactor parameter can specify a font size scaling factor. It is recommended to set this to 161 : : * QgsTextRenderer::FONT_WORKAROUND_SCALE and then manually calculations 162 : : * based on the resultant font metrics. Failure to do so will result in poor quality text rendering 163 : : * at small font sizes. 164 : : */ 165 : : void updateFontForFormat( QFont &font, double scaleFactor = 1.0 ) const; 166 : : 167 : : private: 168 : : 169 : : QColor mTextColor; 170 : : 171 : : #if 0 // settings which affect font metrics are disabled for now 172 : : int mFontWeight = -1; 173 : : BooleanValue mItalic = BooleanValue::NotSet; 174 : : double mFontPointSize = -1; 175 : : QString mFontFamily; 176 : : #endif 177 : : 178 : 0 : BooleanValue mStrikethrough = BooleanValue::NotSet; 179 : 0 : BooleanValue mUnderline = BooleanValue::NotSet; 180 : 0 : BooleanValue mOverline = BooleanValue::NotSet; 181 : : }; 182 : : 183 : : #endif // QGSTEXTCHARACTERFORMAT_H