Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgstextfragment.cpp 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 : : #include "qgstextfragment.h" 17 : : #include <QFontMetricsF> 18 : : #include <QTextFragment> 19 : : 20 : 0 : QgsTextFragment::QgsTextFragment( const QString &text, const QgsTextCharacterFormat &format ) 21 : 0 : : mText( text ) 22 : 0 : , mCharFormat( format ) 23 : 0 : {} 24 : : 25 : 0 : QgsTextFragment::QgsTextFragment( const QTextFragment &fragment ) 26 : 0 : : mText( fragment.text() ) 27 : 0 : , mCharFormat( QgsTextCharacterFormat( fragment.charFormat() ) ) 28 : : { 29 : : 30 : 0 : } 31 : : 32 : 0 : QString QgsTextFragment::text() const 33 : : { 34 : 0 : return mText; 35 : : } 36 : : 37 : 0 : void QgsTextFragment::setText( const QString &text ) 38 : : { 39 : 0 : mText = text; 40 : 0 : } 41 : : 42 : 0 : void QgsTextFragment::setCharacterFormat( const QgsTextCharacterFormat &charFormat ) 43 : : { 44 : 0 : mCharFormat = charFormat; 45 : 0 : } 46 : : 47 : 0 : double QgsTextFragment::horizontalAdvance( const QFont &font, bool fontHasBeenUpdatedForFragment, double scaleFactor ) const 48 : : { 49 : 0 : if ( fontHasBeenUpdatedForFragment ) 50 : : { 51 : 0 : QFontMetricsF fm( font ); 52 : 0 : return fm.horizontalAdvance( mText ); 53 : 0 : } 54 : : else 55 : : { 56 : 0 : QFont updatedFont = font; 57 : 0 : mCharFormat.updateFontForFormat( updatedFont, scaleFactor ); 58 : 0 : QFontMetricsF fm( updatedFont ); 59 : 0 : return fm.horizontalAdvance( mText ); 60 : 0 : } 61 : 0 : } 62 : : 63 : 0 : void QgsTextFragment::applyCapitalization( QgsStringUtils::Capitalization capitalization ) 64 : : { 65 : 0 : mText = QgsStringUtils::capitalize( mText, capitalization ); 66 : 0 : } 67 : :