Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgstextfragment.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 QGSTEXTFRAGMENT_H 17 : : #define QGSTEXTFRAGMENT_H 18 : : 19 : : #include "qgis_sip.h" 20 : : #include "qgis_core.h" 21 : : #include "qgstextcharacterformat.h" 22 : : #include "qgsstringutils.h" 23 : : 24 : : class QTextFragment; 25 : : 26 : : /** 27 : : * \class QgsTextFragment 28 : : * \ingroup core 29 : : * \brief Stores a fragment of text along with formatting overrides to be used when rendering the fragment. 30 : : * 31 : : * \warning This API is not considered stable and may change in future QGIS versions. 32 : : * 33 : : * \since QGIS 3.14 34 : : */ 35 : 0 : class CORE_EXPORT QgsTextFragment 36 : : { 37 : : public: 38 : : 39 : : /** 40 : : * Constructor for QgsTextFragment, with the specified \a text and optional character \a format. 41 : : */ 42 : : explicit QgsTextFragment( const QString &text = QString(), const QgsTextCharacterFormat &format = QgsTextCharacterFormat() ); 43 : : 44 : : /** 45 : : * Constructor for QgsTextFragment, based on the specified QTextFragment \a fragment. 46 : : */ 47 : : explicit QgsTextFragment( const QTextFragment &fragment ); 48 : : 49 : : /** 50 : : * Returns the text content of the fragment. 51 : : * 52 : : * \see setText() 53 : : */ 54 : : QString text() const; 55 : : 56 : : /** 57 : : * Sets the \a text content of the fragment. 58 : : * 59 : : * \see text() 60 : : */ 61 : : void setText( const QString &text ); 62 : : 63 : : /** 64 : : * Returns the character formatting for the fragment. 65 : : * 66 : : * \see setCharacterFormat() 67 : : */ 68 : 0 : const QgsTextCharacterFormat &characterFormat() const { return mCharFormat; } 69 : : 70 : : /** 71 : : * Sets the character \a format for the fragment. 72 : : * 73 : : * \see characterFormat() 74 : : */ 75 : : void setCharacterFormat( const QgsTextCharacterFormat &format ); 76 : : 77 : : /** 78 : : * Returns the horizontal advance associated with this fragment, when rendered using 79 : : * the specified base \a font. 80 : : * 81 : : * Set \a fontHasBeenUpdatedForFragment to TRUE if \a font already represents the character 82 : : * format for this fragment. 83 : : * 84 : : * The optional \a scaleFactor parameter can specify a font size scaling factor. It is recommended to set this to 85 : : * QgsTextRenderer::FONT_WORKAROUND_SCALE and then manually calculations 86 : : * based on the resultant font metrics. Failure to do so will result in poor quality text rendering 87 : : * at small font sizes. 88 : : */ 89 : : double horizontalAdvance( const QFont &font, bool fontHasBeenUpdatedForFragment = false, double scaleFactor = 1.0 ) const; 90 : : 91 : : /** 92 : : * Applies a \a capitalization style to the fragment's text. 93 : : * 94 : : * \since QGIS 3.16 95 : : */ 96 : : void applyCapitalization( QgsStringUtils::Capitalization capitalization ); 97 : : 98 : : private: 99 : : 100 : : QString mText; 101 : : QgsTextCharacterFormat mCharFormat; 102 : : }; 103 : : 104 : : #endif // QGSTEXTFRAGMENT_H