Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qfontmetrics.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QFONTMETRICS_H
5#define QFONTMETRICS_H
6
7#include <QtGui/qtguiglobal.h>
8#include <QtGui/qfont.h>
9
10#ifndef QT_INCLUDE_COMPAT
11#include <QtCore/qrect.h>
12#endif
13#include <QtCore/qshareddata.h>
14
15QT_BEGIN_NAMESPACE
16
17class QRect;
18class QTextOption;
19
20class Q_GUI_EXPORT QFontMetrics
21{
22public:
23 explicit QFontMetrics(const QFont &);
24 QFontMetrics(const QFont &font, const QPaintDevice *pd);
25 QFontMetrics(const QFontMetrics &);
26 ~QFontMetrics();
27
28 QFontMetrics &operator=(const QFontMetrics &);
29 QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QFontMetrics)
30
31 void swap(QFontMetrics &other) noexcept
32 { d.swap(other.d); }
33
34 int ascent() const;
35 int capHeight() const;
36 int descent() const;
37 int height() const;
38 int leading() const;
39 int lineSpacing() const;
40 int minLeftBearing() const;
41 int minRightBearing() const;
42 int maxWidth() const;
43
44 int xHeight() const;
45 int averageCharWidth() const;
46
47 bool inFont(QChar) const;
48 bool inFontUcs4(uint ucs4) const;
49
50 int leftBearing(QChar) const;
51 int rightBearing(QChar) const;
52
53 int horizontalAdvance(const QString &, int len = -1) const;
54 int horizontalAdvance(const QString &, const QTextOption &textOption) const;
55 int horizontalAdvance(QChar) const;
56
57 QRect boundingRect(QChar) const;
58
59 QRect boundingRect(const QString &text) const;
60 QRect boundingRect(const QString &text, const QTextOption &textOption) const;
61 QRect boundingRect(const QRect &r, int flags, const QString &text, int tabstops = 0, int *tabarray = nullptr) const;
62 inline QRect boundingRect(int x, int y, int w, int h, int flags, const QString &text,
63 int tabstops = 0, int *tabarray = nullptr) const
64 { return boundingRect(QRect(x, y, w, h), flags, text, tabstops, tabarray); }
65 QSize size(int flags, const QString& str, int tabstops = 0, int *tabarray = nullptr) const;
66
67 QRect tightBoundingRect(const QString &text) const;
68 QRect tightBoundingRect(const QString &text, const QTextOption &textOption) const;
69
70 QString elidedText(const QString &text, Qt::TextElideMode mode, int width, int flags = 0) const;
71
72 int underlinePos() const;
73 int overlinePos() const;
74 int strikeOutPos() const;
75 int lineWidth() const;
76
77 qreal fontDpi() const;
78
79 bool operator==(const QFontMetrics &other) const;
80 inline bool operator !=(const QFontMetrics &other) const { return !operator==(other); }
81
82private:
83 friend class QFontMetricsF;
84 friend class QStackTextEngine;
85
86 QExplicitlySharedDataPointer<QFontPrivate> d;
87};
88
90
91class Q_GUI_EXPORT QFontMetricsF
92{
93public:
94 explicit QFontMetricsF(const QFont &font);
95 QFontMetricsF(const QFont &font, const QPaintDevice *pd);
96 QFontMetricsF(const QFontMetrics &);
97 QFontMetricsF(const QFontMetricsF &);
98 ~QFontMetricsF();
99
100 QFontMetricsF &operator=(const QFontMetricsF &);
101 QFontMetricsF &operator=(const QFontMetrics &);
102 QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QFontMetricsF)
103
104 void swap(QFontMetricsF &other) noexcept { d.swap(other.d); }
105
106 qreal ascent() const;
107 qreal capHeight() const;
108 qreal descent() const;
109 qreal height() const;
110 qreal leading() const;
111 qreal lineSpacing() const;
112 qreal minLeftBearing() const;
113 qreal minRightBearing() const;
114 qreal maxWidth() const;
115
116 qreal xHeight() const;
117 qreal averageCharWidth() const;
118
119 bool inFont(QChar) const;
120 bool inFontUcs4(uint ucs4) const;
121
122 qreal leftBearing(QChar) const;
123 qreal rightBearing(QChar) const;
124
125 qreal horizontalAdvance(const QString &string, int length = -1) const;
126 qreal horizontalAdvance(QChar) const;
127 qreal horizontalAdvance(const QString &string, const QTextOption &textOption) const;
128
129 QRectF boundingRect(const QString &string) const;
130 QRectF boundingRect(const QString &text, const QTextOption &textOption) const;
131 QRectF boundingRect(QChar) const;
132 QRectF boundingRect(const QRectF &r, int flags, const QString& string, int tabstops = 0, int *tabarray = nullptr) const;
133 QSizeF size(int flags, const QString& str, int tabstops = 0, int *tabarray = nullptr) const;
134
135 QRectF tightBoundingRect(const QString &text) const;
136 QRectF tightBoundingRect(const QString &text, const QTextOption &textOption) const;
137
138 QString elidedText(const QString &text, Qt::TextElideMode mode, qreal width, int flags = 0) const;
139
140 qreal underlinePos() const;
141 qreal overlinePos() const;
142 qreal strikeOutPos() const;
143 qreal lineWidth() const;
144
145 qreal fontDpi() const;
146
147 bool operator==(const QFontMetricsF &other) const;
148 inline bool operator !=(const QFontMetricsF &other) const { return !operator==(other); }
149
150private:
151 QExplicitlySharedDataPointer<QFontPrivate> d;
152};
153
155
156QT_END_NAMESPACE
157
158#endif // QFONTMETRICS_H
\inmodule QtGui
Definition qbrush.h:468
\reentrant \inmodule QtGui
\reentrant \inmodule QtGui
\inmodule QtGui
Definition qbrush.h:416
\inmodule QtGui
Definition qbrush.h:434
const quint64 PseudoClass_Unknown
const quint64 PseudoClass_Floatable
const quint64 PseudoClass_Movable
@ BottomEdge
@ RightEdge
const int NumPseudos
const quint64 PseudoClass_Children
const quint64 PseudoClass_Disabled
const quint64 PseudoClass_Sibling
const quint64 PseudoClass_ReadOnly
const quint64 PseudoClass_Closed
const quint64 PseudoClass_Maximized
const quint64 PseudoClass_Default
@ Repeat_XY
@ Repeat_Unknown
@ Repeat_None
@ NumKnownRepeats
const quint64 PseudoClass_Bottom
@ TopRightCorner
@ BottomRightCorner
@ BottomLeftCorner
@ TopLeftCorner
const quint64 PseudoClass_EditFocus
const quint64 PseudoClass_Focus
const quint64 PseudoClass_Enabled
const quint64 PseudoClass_Editable
const quint64 PseudoClass_Vertical
const quint64 PseudoClass_Flat
const quint64 PseudoClass_NonExclusive
@ Origin_Padding
@ Origin_Content
@ NumKnownOrigins
@ Origin_Unknown
@ Origin_Margin
@ Origin_Border
@ ATKEYWORD_SYM
@ DASHMATCH
@ PERCENTAGE
@ BEGINSWITH
@ SEMICOLON
@ EXCLAMATION_SYM
const quint64 PseudoClass_Pressed
const quint64 PseudoClass_Item
const quint64 PseudoClass_Alternate
const quint64 PseudoClass_PreviousSelected
const quint64 PseudoClass_Closable
const quint64 PseudoClass_Horizontal
const quint64 PseudoClass_Off
const quint64 PseudoClass_Active
const quint64 PseudoClass_NextSelected
@ StyleFeature_BackgroundGradient
@ NumKnownStyleFeatures
@ StyleFeature_BackgroundColor
@ StyleFeature_None
const quint64 PseudoClass_Open
const quint64 PseudoClass_Frameless
const quint64 PseudoClass_Checked
const quint64 PseudoClass_Any
const quint64 PseudoClass_Selected
@ Attachment_Fixed
@ NumKnownAttachments
@ Attachment_Scroll
@ Attachment_Unknown
const quint64 PseudoClass_Right
@ Value_Disc
@ Value_Bottom
@ Value_Wave
@ Value_UpperRoman
@ Value_Oblique
@ Value_Selected
@ Value_XXLarge
@ Value_Decimal
@ Value_PreWrap
@ Value_Link
@ Value_Active
@ Value_Button
@ Value_Left
@ Value_Circle
@ Value_Medium
@ Value_Midlight
@ Value_SvgMiterJoin
@ Value_Pre
@ Value_SquareCap
@ Value_Normal
@ Value_LineThrough
@ Value_DotDotDash
@ Value_Square
@ Value_Small
@ Value_Groove
@ Value_Transparent
@ Value_LowerAlpha
@ Value_Off
@ Value_Solid
@ Value_Disabled
@ Value_Light
@ Value_Super
@ Value_NoWrap
@ Value_LastColorRole
@ Value_Base
@ Value_Outset
@ NumKnownValues
@ Value_Accent
@ Value_Shadow
@ Value_Native
@ Value_ButtonText
@ Value_RoundJoin
@ Value_FirstColorRole
@ Value_LowerRoman
@ Value_Top
@ Value_None
@ Value_Highlight
@ Value_Bold
@ Value_ToolTipText
@ UnknownValue
@ Value_Dark
@ Value_Center
@ Value_Right
@ Value_Sub
@ Value_Text
@ Value_PreLine
@ Value_HighlightedText
@ Value_WindowText
@ Value_FlatCap
@ Value_Underline
@ Value_ToolTipBase
@ Value_DotDash
@ Value_Uppercase
@ Value_Auto
@ Value_Inset
@ Value_Large
@ Value_XLarge
@ Value_MiterJoin
@ Value_SmallCaps
@ Value_RoundCap
@ Value_Double
@ Value_AlternateBase
@ Value_BevelJoin
@ Value_Mid
@ Value_Overline
@ Value_Ridge
@ Value_UpperAlpha
@ Value_PlaceholderText
@ Value_Dashed
@ Value_BrightText
@ Value_Always
@ Value_LinkVisited
@ Value_Dotted
@ Value_Middle
@ Value_Window
@ Value_NoRole
@ Value_Lowercase
@ Value_Italic
@ BorderImage
@ BorderTopLeftRadius
@ BackgroundColor
@ Whitespace
@ OutlineTopLeftRadius
@ MarginLeft
@ QtAlternateBackground
@ QtStrokeMiterLimit
@ BorderTopColor
@ QtPlaceHolderTextColor
@ MarginRight
@ BorderBottomLeftRadius
@ QtStrokeDashArray
@ QtTableType
@ BorderBottom
@ Padding
@ QtStyleFeatures
@ BorderTopStyle
@ OutlineBottomRightRadius
@ FontKerning
@ NumProperties
@ BorderRightWidth
@ QtStrokeColor
@ PaddingRight
@ QtStrokeDashOffset
@ BackgroundOrigin
@ BorderBottomColor
@ UnknownProperty
@ MarginTop
@ TextUnderlineStyle
@ QtListIndent
@ PaddingLeft
@ PaddingTop
@ QtForeground
@ QtSpacing
@ BorderLeftColor
@ OutlineTopRightRadius
@ BorderRightColor
@ QtSelectionForeground
@ PaddingBottom
@ LetterSpacing
@ BorderBottomRightRadius
@ QtListNumberPrefix
@ OutlineWidth
@ PageBreakAfter
@ BorderRight
@ OutlineColor
@ OutlineBottomLeftRadius
@ FontWeight
@ QtBackgroundRole
@ QtForegroundTextureCacheKey
@ TextIndent
@ QtPosition
@ BorderColor
@ MarginBottom
@ MaximumWidth
@ QtUserState
@ OutlineStyle
@ BorderLeftWidth
@ BorderCollapse
@ QtBlockIndent
@ BackgroundPosition
@ WordSpacing
@ QtStrokeWidth
@ BackgroundImage
@ BorderRightStyle
@ FontStyle
@ TextTransform
@ FontFamily
@ FontVariant
@ BorderWidth
@ VerticalAlignment
@ LineHeight
@ QtParagraphType
@ QtSelectionBackground
@ BorderStyles
@ BorderLeft
@ TextDecoration
@ BorderTopRightRadius
@ ListStyleType
@ OutlineOffset
@ BorderRadius
@ ListStyle
@ QtStrokeLineJoin
@ BorderBottomWidth
@ Background
@ BorderTopWidth
@ OutlineRadius
@ MinimumWidth
@ BackgroundAttachment
@ TextAlignment
@ BackgroundClip
@ TextDecorationColor
@ QtListNumberSuffix
@ QtImageAlignment
@ BorderBottomStyle
@ BorderTop
@ FontSize
@ PageBreakBefore
@ QtLineHeightType
@ BackgroundRepeat
@ BorderLeftStyle
@ MinimumHeight
@ MaximumHeight
@ QtStrokeLineCap
const quint64 PseudoClass_Window
const quint64 PseudoClass_Minimized
@ TileMode_Unknown
@ TileMode_Repeat
@ NumKnownTileModes
@ TileMode_Round
@ TileMode_Stretch
StyleSheetOrigin
@ StyleSheetOrigin_UserAgent
@ StyleSheetOrigin_User
@ StyleSheetOrigin_Author
@ StyleSheetOrigin_Unspecified
@ StyleSheetOrigin_Inline
const quint64 PseudoClass_On
const quint64 PseudoClass_Unspecified
const quint64 PseudoClass_Unchecked
const quint64 PseudoClass_First
const quint64 PseudoClass_Indeterminate
const quint64 PseudoClass_Middle
@ PositionMode_Absolute
@ PositionMode_Relative
@ PositionMode_Unknown
@ PositionMode_Static
@ PositionMode_Fixed
@ NumKnownPositionModes
const quint64 PseudoClass_Top
const quint64 PseudoClass_Hover
@ BorderStyle_Dotted
@ BorderStyle_Solid
@ BorderStyle_Double
@ BorderStyle_DotDash
@ BorderStyle_Ridge
@ BorderStyle_Unknown
@ BorderStyle_Dashed
@ BorderStyle_Outset
@ BorderStyle_Groove
@ BorderStyle_Native
@ NumKnownBorderStyles
@ BorderStyle_None
@ BorderStyle_DotDotDash
@ BorderStyle_Inset
const quint64 PseudoClass_Left
const quint64 PseudoClass_Last
const quint64 PseudoClass_OnlyOne
const quint64 PseudoClass_Exclusive
static void setTextDecorationFromValues(const QList< QCss::Value > &values, QFont *font)
static bool operator<(const QString &name, const QCssKnownValue &prop)
static constexpr QCssKnownValue positions[]
static void removeOptionalQuotes(QString *str)
static constexpr QCssKnownValue repeats[]
static bool setFontFamilyFromValues(const QList< QCss::Value > &values, QFont *font, int start=0)
static bool setFontWeightFromValue(const QCss::Value &value, QFont *font)
static int lengthValueFromData(const LengthData &data, const QFont &f)
static bool operator<(const QCssKnownValue &prop, const QString &name)
static void setTextTransformFromValue(const QCss::Value &value, QFont *font)
static bool setFontSizeFromValue(QCss::Value value, QFont *font, int *fontSizeAdjustment)
static constexpr QCssKnownValue tileModes[]
static bool setFontStyleFromValue(const QCss::Value &value, QFont *font)
static ColorData parseColorValue(QCss::Value v)
static BorderStyle parseStyleValue(const QCss::Value &v)
static void setFontVariantFromValue(const QCss::Value &value, QFont *font)
static bool intValueHelper(const QCss::Value &v, int *i, const char *unit)
static quint64 findKnownValue(const QString &name, const QCssKnownValue *start, int numValues)
static Qt::Alignment parseAlignment(const QCss::Value *values, int count)
static constexpr QCssKnownValue styleFeatures[]
static constexpr QCssKnownValue properties[]
static void setLetterSpacingFromValue(const QCss::Value &value, QFont *font)
static BrushData parseBrushValue(const QCss::Value &v, const QPalette &pal)
static bool isHexDigit(const char c)
static bool isInheritable(Property propertyId)
static constexpr uchar indexOfId[]
static constexpr QCssKnownValue pseudos[]
static bool setFontKerningFromValue(const QCss::Value &value, QFont *font)
static void parseShorthandBackgroundProperty(const QList< QCss::Value > &values, BrushData *brush, QString *image, Repeat *repeat, Qt::Alignment *alignment, const QPalette &pal)
static constexpr QCssKnownValue attachments[]
#define CHECK_ARRAY_IS_SORTED(array, Num)
static void parseShorthandFontProperty(const QList< QCss::Value > &values, QFont *font, int *fontSizeAdjustment)
static QBrush brushFromData(const BrushData &c, const QPalette &pal)
static void setWordSpacingFromValue(const QCss::Value &value, QFont *font)
static constexpr QCssKnownValue values[]
static constexpr QCssKnownValue origins[]
static QColor colorFromData(const ColorData &c, const QPalette &pal)
#define QT_CSS_DECLARE_TYPEINFO(Class, Type)
constexpr bool operator()(const QCssKnownValue &lhs, const QCssKnownValue &rhs) const noexcept
const char name[28]
QList< AnimationRuleSet > ruleSets
ValueMatchType valueMatchCriterium
Qt::Alignment alignment
QList< Pseudo > pseudos
QList< AttributeSelector > attributeSelectors
BorderStyle style
BrushData(QPalette::ColorRole r)
BrushData(const QBrush &br)
QPalette::ColorRole role
ColorData(const QColor &col)
QPalette::ColorRole role
ColorData(QPalette::ColorRole r)
QStringList media
QStringList media
QList< StyleRule > styleRules
QList< Declaration > declarations
QString function
QList< Selector > selectors
QList< Declaration > declarations
QList< StyleRule > styleRules
QList< MediaRule > mediaRules
QList< AnimationRule > animationRules
Q_GUI_EXPORT void buildIndexes(Qt::CaseSensitivity nameCaseSensitivity=Qt::CaseSensitive)
QMultiHash< QString, StyleRule > idIndex
QMultiHash< QString, StyleRule > nameIndex
StyleSheetOrigin origin
QList< ImportRule > importRules
QList< PageRule > pageRules
TokenType token
QVariant variant