Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgstextmetrics.h 3 : : ----------------- 4 : : begin : April 2021 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 QGSTEXTMETRICS_H 17 : : #define QGSTEXTMETRICS_H 18 : : 19 : : #include "qgis_sip.h" 20 : : #include "qgis_core.h" 21 : : #include "qgstextcharacterformat.h" 22 : : #include <QVector> 23 : : #include <QStringList> 24 : : 25 : : #define SIP_NO_FILE 26 : : 27 : : /** 28 : : * \class QgsPrecalculatedTextMetrics 29 : : * \ingroup core 30 : : * \brief Contains precalculated properties regarding text metrics for text to be renderered at a later stage. 31 : : * \note Not available in Python bindings 32 : : * \since QGIS 3.20 33 : : */ 34 : 0 : class CORE_EXPORT QgsPrecalculatedTextMetrics 35 : : { 36 : : public: 37 : : 38 : : /** 39 : : * Constructor for QgsPrecalculatedTextMetrics 40 : : * \param graphemes list of graphemes contained in the text 41 : : * \param characterHeight height of characters 42 : : * \param characterWidths vector of character widths 43 : : */ 44 : 0 : QgsPrecalculatedTextMetrics( const QStringList &graphemes, double characterHeight, const QVector< double > &characterWidths ) 45 : 0 : : mGraphemes( graphemes ) 46 : 0 : , mCharacterHeight( characterHeight ) 47 : 0 : , mCharacterWidths( characterWidths ) 48 : : { 49 : 0 : } 50 : : 51 : : /** 52 : : * Character height (actually font metrics height, not individual character height). 53 : : */ 54 : 0 : double characterHeight() const { return mCharacterHeight; } 55 : : 56 : : /** 57 : : * Returns the total number of characters. 58 : : */ 59 : 0 : int count() const { return static_cast< int >( mCharacterWidths.size() ); } 60 : : 61 : : /** 62 : : * Returns the width of the character at the specified position. 63 : : */ 64 : 0 : double characterWidth( int position ) const { return mCharacterWidths[position]; } 65 : : 66 : : /** 67 : : * Returns the list of graphemes contained in the text. 68 : : */ 69 : : QStringList graphemes() const { return mGraphemes; } 70 : : 71 : : /** 72 : : * Returns the grapheme at the specified \a index. 73 : : */ 74 : 0 : QString grapheme( int index ) const { return mGraphemes.at( index ); } 75 : : 76 : : /** 77 : : * Sets the character \a formats associated with the text graphemes(). 78 : : */ 79 : 0 : void setGraphemeFormats( const QVector< QgsTextCharacterFormat > &formats ) { mGraphemeFormats = formats; } 80 : : 81 : : /** 82 : : * Returns the number of grapheme formats available. 83 : : */ 84 : 0 : int graphemeFormatCount() const { return mGraphemeFormats.count(); } 85 : : 86 : : /** 87 : : * Returns the character format for the grapheme at the specified \a index. 88 : : */ 89 : 0 : QgsTextCharacterFormat graphemeFormat( int index ) const { return mGraphemeFormats.value( index ); } 90 : : 91 : : private: 92 : : 93 : : QStringList mGraphemes; 94 : : QVector< QgsTextCharacterFormat > mGraphemeFormats; 95 : : double mCharacterHeight = 0; 96 : : QVector< double > mCharacterWidths; 97 : : 98 : : }; 99 : : 100 : : 101 : : #endif // QGSTEXTMETRICS_H