qtextoption.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/gui/text/qtextoption.cpp
Source codeSwitch to Preprocessed file
LineSourceCount
1/****************************************************************************-
2**-
3** Copyright (C) 2016 The Qt Company Ltd.-
4** Contact: https://www.qt.io/licensing/-
5**-
6** This file is part of the QtGui module of the Qt Toolkit.-
7**-
8** $QT_BEGIN_LICENSE:LGPL$-
9** Commercial License Usage-
10** Licensees holding valid commercial Qt licenses may use this file in-
11** accordance with the commercial license agreement provided with the-
12** Software or, alternatively, in accordance with the terms contained in-
13** a written agreement between you and The Qt Company. For licensing terms-
14** and conditions see https://www.qt.io/terms-conditions. For further-
15** information use the contact form at https://www.qt.io/contact-us.-
16**-
17** GNU Lesser General Public License Usage-
18** Alternatively, this file may be used under the terms of the GNU Lesser-
19** General Public License version 3 as published by the Free Software-
20** Foundation and appearing in the file LICENSE.LGPL3 included in the-
21** packaging of this file. Please review the following information to-
22** ensure the GNU Lesser General Public License version 3 requirements-
23** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.-
24**-
25** GNU General Public License Usage-
26** Alternatively, this file may be used under the terms of the GNU-
27** General Public License version 2.0 or (at your option) the GNU General-
28** Public license version 3 or any later version approved by the KDE Free-
29** Qt Foundation. The licenses are as published by the Free Software-
30** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3-
31** included in the packaging of this file. Please review the following-
32** information to ensure the GNU General Public License requirements will-
33** be met: https://www.gnu.org/licenses/gpl-2.0.html and-
34** https://www.gnu.org/licenses/gpl-3.0.html.-
35**-
36** $QT_END_LICENSE$-
37**-
38****************************************************************************/-
39-
40#include "qtextoption.h"-
41#include "qguiapplication.h"-
42#include "qlist.h"-
43-
44QT_BEGIN_NAMESPACE-
45-
46struct QTextOptionPrivate-
47{-
48 QList<QTextOption::Tab> tabStops;-
49};-
50-
51/*!-
52 Constructs a text option with default properties for text.-
53 The text alignment property is set to Qt::AlignLeft. The-
54 word wrap property is set to QTextOption::WordWrap. The-
55 using of design metrics flag is set to false.-
56*/-
57QTextOption::QTextOption()-
58 : align(Qt::AlignLeft),-
59 wordWrap(QTextOption::WordWrap),-
60 design(false),-
61 unused(0),-
62 unused2(0),-
63 f(0),-
64 tab(-1),-
65 d(0)-
66{-
67 direction = Qt::LayoutDirectionAuto;-
68}
never executed: end of block
0
69-
70/*!-
71 Constructs a text option with the given \a alignment for text.-
72 The word wrap property is set to QTextOption::WordWrap. The using-
73 of design metrics flag is set to false.-
74*/-
75QTextOption::QTextOption(Qt::Alignment alignment)-
76 : align(alignment),-
77 wordWrap(QTextOption::WordWrap),-
78 design(false),-
79 unused(0),-
80 unused2(0),-
81 f(0),-
82 tab(-1),-
83 d(0)-
84{-
85 direction = QGuiApplication::layoutDirection();-
86}
never executed: end of block
0
87-
88/*!-
89 Destroys the text option.-
90*/-
91QTextOption::~QTextOption()-
92{-
93 delete d;-
94}
never executed: end of block
0
95-
96/*!-
97 \fn QTextOption::QTextOption(const QTextOption &other)-
98-
99 Construct a copy of the \a other text option.-
100*/-
101QTextOption::QTextOption(const QTextOption &o)-
102 : align(o.align),-
103 wordWrap(o.wordWrap),-
104 design(o.design),-
105 direction(o.direction),-
106 unused(o.unused),-
107 unused2(o.unused2),-
108 f(o.f),-
109 tab(o.tab),-
110 d(0)-
111{-
112 if (o.d)
o.dDescription
TRUEnever evaluated
FALSEnever evaluated
0
113 d = new QTextOptionPrivate(*o.d);
never executed: d = new QTextOptionPrivate(*o.d);
0
114}
never executed: end of block
0
115-
116/*!-
117 \fn QTextOption &QTextOption::operator=(const QTextOption &other)-
118-
119 Returns \c true if the text option is the same as the \a other text option;-
120 otherwise returns \c false.-
121*/-
122QTextOption &QTextOption::operator=(const QTextOption &o)-
123{-
124 if (this == &o)
this == &oDescription
TRUEnever evaluated
FALSEnever evaluated
0
125 return *this;
never executed: return *this;
0
126-
127 QTextOptionPrivate* dNew = 0;-
128 if (o.d)
o.dDescription
TRUEnever evaluated
FALSEnever evaluated
0
129 dNew = new QTextOptionPrivate(*o.d);
never executed: dNew = new QTextOptionPrivate(*o.d);
0
130 delete d;-
131 d = dNew;-
132-
133 align = o.align;-
134 wordWrap = o.wordWrap;-
135 design = o.design;-
136 direction = o.direction;-
137 unused = o.unused;-
138 f = o.f;-
139 tab = o.tab;-
140 return *this;
never executed: return *this;
0
141}-
142-
143/*!-
144 Sets the tab positions for the text layout to those specified by-
145 \a tabStops.-
146-
147 \sa tabArray(), setTabStop(), setTabs()-
148*/-
149void QTextOption::setTabArray(const QList<qreal> &tabStops)-
150{-
151 if (!d)
!dDescription
TRUEnever evaluated
FALSEnever evaluated
0
152 d = new QTextOptionPrivate;
never executed: d = new QTextOptionPrivate;
0
153 QList<QTextOption::Tab> tabs;-
154 QTextOption::Tab tab;-
155 tabs.reserve(tabStops.count());-
156 for (qreal pos : tabStops) {-
157 tab.position = pos;-
158 tabs.append(tab);-
159 }
never executed: end of block
0
160 d->tabStops = tabs;-
161}
never executed: end of block
0
162-
163/*!-
164 \since 4.4-
165 Sets the tab positions for the text layout to those specified by-
166 \a tabStops.-
167-
168 \sa tabStops()-
169*/-
170void QTextOption::setTabs(const QList<QTextOption::Tab> &tabStops)-
171{-
172 if (!d)
!dDescription
TRUEnever evaluated
FALSEnever evaluated
0
173 d = new QTextOptionPrivate;
never executed: d = new QTextOptionPrivate;
0
174 d->tabStops = tabStops;-
175}
never executed: end of block
0
176-
177/*!-
178 Returns a list of tab positions defined for the text layout.-
179-
180 \sa setTabArray(), tabStop()-
181*/-
182QList<qreal> QTextOption::tabArray() const-
183{-
184 QList<qreal> answer;-
185 if (!d)
!dDescription
TRUEnever evaluated
FALSEnever evaluated
0
186 return answer;
never executed: return answer;
0
187-
188 answer.reserve(d->tabStops.count());-
189 QList<QTextOption::Tab>::ConstIterator iter = d->tabStops.constBegin();-
190 while(iter != d->tabStops.constEnd()) {
iter != d->tabStops.constEnd()Description
TRUEnever evaluated
FALSEnever evaluated
0
191 answer.append( (*iter).position);-
192 ++iter;-
193 }
never executed: end of block
0
194 return answer;
never executed: return answer;
0
195}-
196-
197-
198QList<QTextOption::Tab> QTextOption::tabs() const-
199{-
200 if (!d)
!dDescription
TRUEnever evaluated
FALSEnever evaluated
0
201 return QList<QTextOption::Tab>();
never executed: return QList<QTextOption::Tab>();
0
202 return d->tabStops;
never executed: return d->tabStops;
0
203}-
204-
205/*!-
206 \class QTextOption-
207 \reentrant-
208-
209 \brief The QTextOption class provides a description of general rich text-
210 properties.-
211 \inmodule QtGui-
212-
213 \ingroup richtext-processing-
214-
215 QTextOption is used to encapsulate common rich text properties in a single-
216 object. It contains information about text alignment, layout direction,-
217 word wrapping, and other standard properties associated with text rendering-
218 and layout.-
219-
220 \sa QTextEdit, QTextDocument, QTextCursor-
221*/-
222-
223/*!-
224 \enum QTextOption::WrapMode-
225-
226 This enum describes how text is wrapped in a document.-
227-
228 \value NoWrap Text is not wrapped at all.-
229 \value WordWrap Text is wrapped at word boundaries.-
230 \value ManualWrap Same as QTextOption::NoWrap-
231 \value WrapAnywhere Text can be wrapped at any point on a line, even if-
232 it occurs in the middle of a word.-
233 \value WrapAtWordBoundaryOrAnywhere If possible, wrapping occurs at a word-
234 boundary; otherwise it will occur at the appropriate-
235 point on the line, even in the middle of a word.-
236*/-
237-
238/*!-
239 \fn void QTextOption::setUseDesignMetrics(bool enable)-
240-
241 If \a enable is true then the layout will use design metrics;-
242 otherwise it will use the metrics of the paint device (which is-
243 the default behavior).-
244-
245 \sa useDesignMetrics()-
246*/-
247-
248/*!-
249 \fn bool QTextOption::useDesignMetrics() const-
250-
251 Returns \c true if the layout uses design rather than device metrics;-
252 otherwise returns \c false.-
253-
254 \sa setUseDesignMetrics()-
255*/-
256-
257/*!-
258 \fn Qt::Alignment QTextOption::alignment() const-
259-
260 Returns the text alignment defined by the option.-
261-
262 \sa setAlignment()-
263*/-
264-
265/*!-
266 \fn void QTextOption::setAlignment(Qt::Alignment alignment);-
267-
268 Sets the option's text alignment to the specified \a alignment.-
269-
270 \sa alignment()-
271*/-
272-
273/*!-
274 \fn Qt::LayoutDirection QTextOption::textDirection() const-
275-
276 Returns the direction of the text layout defined by the option.-
277-
278 \sa setTextDirection()-
279*/-
280-
281/*!-
282 \fn void QTextOption::setTextDirection(Qt::LayoutDirection direction)-
283-
284 Sets the direction of the text layout defined by the option to the-
285 given \a direction.-
286-
287 \sa textDirection()-
288*/-
289-
290/*!-
291 \fn WrapMode QTextOption::wrapMode() const-
292-
293 Returns the text wrap mode defined by the option.-
294-
295 \sa setWrapMode()-
296*/-
297-
298/*!-
299 \fn void QTextOption::setWrapMode(WrapMode mode)-
300-
301 Sets the option's text wrap mode to the given \a mode.-
302*/-
303-
304/*!-
305 \enum QTextOption::Flag-
306-
307 \value IncludeTrailingSpaces When this option is set, QTextLine::naturalTextWidth() and naturalTextRect() will-
308 return a value that includes the width of trailing spaces in the text; otherwise-
309 this width is excluded.-
310 \value ShowTabsAndSpaces Visualize spaces with little dots, and tabs with little arrows.-
311 \value ShowLineAndParagraphSeparators Visualize line and paragraph separators with appropriate symbol characters.-
312 \value ShowDocumentTerminator Visualize the end of the document with a section sign. This enum value was added-
313 in Qt 5.7.-
314 \value AddSpaceForLineAndParagraphSeparators While determining the line-break positions take into account the-
315 space added for drawing a separator character.-
316 \value SuppressColors Suppress all color changes in the character formats (except the main selection).-
317*/-
318-
319/*!-
320 \fn Flags QTextOption::flags() const-
321-
322 Returns the flags associated with the option.-
323-
324 \sa setFlags()-
325*/-
326-
327/*!-
328 \fn void QTextOption::setFlags(Flags flags)-
329-
330 Sets the flags associated with the option to the given \a flags.-
331-
332 \sa flags()-
333*/-
334-
335/*!-
336 \fn qreal QTextOption::tabStop() const-
337-
338 Returns the distance in device units between tab stops.-
339 Convenient function for the above method-
340-
341 \sa setTabStop(), tabArray(), setTabs(), tabs()-
342*/-
343-
344/*!-
345 \fn void QTextOption::setTabStop(qreal tabStop)-
346-
347 Sets the default distance in device units between tab stops to the value specified-
348 by \a tabStop.-
349-
350 \sa tabStop(), setTabArray(), setTabs(), tabs()-
351*/-
352-
353/*!-
354 \enum QTextOption::TabType-
355 \since 4.4-
356-
357 This enum holds the different types of tabulator-
358-
359 \value LeftTab A left-tab-
360 \value RightTab A right-tab-
361 \value CenterTab A centered-tab-
362 \value DelimiterTab A tab stopping at a certain delimiter-character-
363*/-
364-
365/*!-
366 \class QTextOption::Tab-
367 \since 4.4-
368 \inmodule QtGui-
369 Each tab definition is represented by this struct.-
370*/-
371-
372/*!-
373 \variable Tab::position-
374 Distance from the start of the paragraph.-
375 The position of a tab is from the start of the paragraph which implies that when-
376 the alignment of the paragraph is set to centered, the tab is interpreted to be-
377 moved the same distance as the left ege of the paragraph does.-
378 In case the paragraph is set to have a layoutDirection() RightToLeft the position-
379 is interpreted to be from the right side of the paragraph with higher numbers moving-
380 the tab to the left.-
381*/-
382-
383/*!-
384 \variable Tab::type-
385 Determine which type is used.-
386 In a paragraph that has layoutDirection() RightToLeft the type LeftTab will-
387 be interpreted to be a RightTab and vice versa.-
388*/-
389-
390/*!-
391 \variable Tab::delimiter-
392 If type is DelimitorTab; tab until this char is found in the text.-
393*/-
394-
395/*!-
396 \fn Tab::Tab()-
397 Creates a default left tab with position 80.-
398*/-
399-
400/*!-
401 \fn Tab::Tab(qreal pos, TabType tabType, QChar delim = QChar())-
402-
403 Creates a tab with the given position, tab type, and delimiter-
404 (\a pos, \a tabType, \a delim).-
405-
406 \note \a delim is only used when \a tabType is DelimiterTab.-
407-
408 \since 4.7-
409*/-
410-
411/*!-
412 \fn bool Tab::operator==(const Tab &other) const-
413-
414 Returns \c true if tab \a other is equal to this tab;-
415 otherwise returns \c false.-
416*/-
417-
418/*!-
419 \fn bool Tab::operator!=(const Tab &other) const-
420-
421 Returns \c true if tab \a other is not equal to this tab;-
422 otherwise returns \c false.-
423*/-
424-
425/*!-
426 \fn void setTabs(const QList<Tab> &tabStops)-
427 Set the Tab properties to \a tabStops.-
428-
429 \sa tabStop(), tabs()-
430*/-
431-
432/*!-
433 \since 4.4-
434 \fn QList<QTextOption::Tab> QTextOption::tabs() const-
435 Returns a list of tab positions defined for the text layout.-
436-
437 \sa tabStop(), setTabs(), setTabStop()-
438*/-
439-
440-
441QT_END_NAMESPACE-
Source codeSwitch to Preprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9