QGIS API Documentation 3.41.0-Master (3440c17df1d)
Loading...
Searching...
No Matches
qgstextblock.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgstextblock.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 "qgstextblock.h"
17#include "qgstextfragment.h"
18
19#include <QSizeF>
20
22{
23 mFragments.append( fragment );
24}
25
27{
28 if ( text.contains( '\t' ) )
29 {
30 // split line by tab characters, each tab should be a
31 // fragment by itself
32 QgsTextBlock block;
33 const QStringList tabSplit = text.split( '\t' );
34 int index = 0;
35 for ( const QString &part : tabSplit )
36 {
37 if ( !part.isEmpty() )
38 block.append( QgsTextFragment( part, format ) );
39 if ( index != tabSplit.size() - 1 )
40 {
41 block.append( QgsTextFragment( QString( '\t' ), format ) );
42 }
43
44 index++;
45 }
46 return block;
47 }
48 else
49 {
50 return QgsTextBlock( QgsTextFragment( text, format ) );
51 }
52}
53
55{
56 QString res;
57 for ( const QgsTextFragment &fragment : mFragments )
58 {
59 res.append( fragment.text() );
60 }
61 return res;
62}
63
64void QgsTextBlock::reserve( int count )
65{
66 mFragments.reserve( count );
67}
68
70{
71 mFragments.append( fragment );
72}
73
75{
76 mFragments.push_back( fragment );
77}
78
79void QgsTextBlock::insert( int index, const QgsTextFragment &fragment )
80{
81 mFragments.insert( index, fragment );
82}
83
84void QgsTextBlock::insert( int index, QgsTextFragment &&fragment )
85{
86 mFragments.insert( index, fragment );
87}
88
90{
91 mFragments.clear();
92}
93
95{
96 return mFragments.empty();
97}
98
100{
101 return mFragments.size();
102}
103
105{
106 mBlockFormat = format;
107}
108
110{
111 for ( QgsTextFragment &fragment : mFragments )
112 {
113 fragment.applyCapitalization( capitalization );
114 }
115}
116
118{
119 return mBlockFormat.hasBackground()
120 || std::any_of( mFragments.begin(), mFragments.end(), []( const QgsTextFragment & fragment ) { return fragment.characterFormat().hasBackground(); } );
121}
122
123const QgsTextFragment &QgsTextBlock::at( int index ) const
124{
125 return mFragments.at( index );
126}
127
129{
130 return mFragments[ index ];
131}
132
134QVector< QgsTextFragment >::const_iterator QgsTextBlock::begin() const
135{
136 return mFragments.begin();
137}
138
139QVector< QgsTextFragment >::const_iterator QgsTextBlock::end() const
140{
141 return mFragments.end();
142}
Capitalization
String capitalization options.
Definition qgis.h:3140
Stores information relating to individual block formatting.
bool hasBackground() const
Returns true if the block has a background set.
Represents a block of text consisting of one or more QgsTextFragment objects.
int size() const
Returns the number of fragments in the block.
void applyCapitalization(Qgis::Capitalization capitalization)
Applies a capitalization style to the block's text.
void insert(int index, const QgsTextFragment &fragment)
Inserts a fragment into the block, at the specified index.
QString toPlainText() const
Converts the block to plain text.
QgsTextFragment & operator[](int index)
Returns the fragment at the specified index.
void clear()
Clears the block, removing all its contents.
static QgsTextBlock fromPlainText(const QString &text, const QgsTextCharacterFormat &format=QgsTextCharacterFormat())
Constructor for QgsTextBlock consisting of a plain text, and optional character format.
QgsTextBlock()=default
Constructor for an empty text block.
void reserve(int count)
Reserves the specified count of fragments for optimised fragment appending.
void setBlockFormat(const QgsTextBlockFormat &format)
Sets the block format for the fragment.
void append(const QgsTextFragment &fragment)
Appends a fragment to the block.
const QgsTextFragment & at(int index) const
Returns the fragment at the specified index.
bool empty() const
Returns true if the block is empty.
bool hasBackgrounds() const
Returns true if the block or any of the fragments in the block have background brushes set.
Stores information relating to individual character formatting.
Stores a fragment of document along with formatting overrides to be used when rendering the fragment.