| /**************************************************************************** |
| ** |
| ** Copyright (C) 2015 The Qt Company Ltd. |
| ** Contact: http://www.qt.io/licensing/ |
| ** |
| ** This file is part of the QtGui module of the Qt Toolkit. |
| ** |
| ** $QT_BEGIN_LICENSE:LGPL21$ |
| ** Commercial License Usage |
| ** Licensees holding valid commercial Qt licenses may use this file in |
| ** accordance with the commercial license agreement provided with the |
| ** Software or, alternatively, in accordance with the terms contained in |
| ** a written agreement between you and The Qt Company. For licensing terms |
| ** and conditions see http://www.qt.io/terms-conditions. For further |
| ** information use the contact form at http://www.qt.io/contact-us. |
| ** |
| ** GNU Lesser General Public License Usage |
| ** Alternatively, this file may be used under the terms of the GNU Lesser |
| ** General Public License version 2.1 or version 3 as published by the Free |
| ** Software Foundation and appearing in the file LICENSE.LGPLv21 and |
| ** LICENSE.LGPLv3 included in the packaging of this file. Please review the |
| ** following information to ensure the GNU Lesser General Public License |
| ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and |
| ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. |
| ** |
| ** As a special exception, The Qt Company gives you certain additional |
| ** rights. These rights are described in The Qt Company LGPL Exception |
| ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. |
| ** |
| ** $QT_END_LICENSE$ |
| ** |
| ****************************************************************************/ |
| |
| #ifndef QTEXTFORMAT_H |
| #define QTEXTFORMAT_H |
| |
| #include <QtGui/qcolor.h> |
| #include <QtGui/qfont.h> |
| #include <QtCore/qshareddata.h> |
| #include <QtCore/qvector.h> |
| #include <QtCore/qvariant.h> |
| #include <QtGui/qpen.h> |
| #include <QtGui/qbrush.h> |
| #include <QtGui/qtextoption.h> |
| |
| QT_BEGIN_NAMESPACE |
| |
| |
| class QString; |
| class QVariant; |
| class QFont; |
| |
| class QTextFormatCollection; |
| class QTextFormatPrivate; |
| class QTextBlockFormat; |
| class QTextCharFormat; |
| class QTextListFormat; |
| class QTextTableFormat; |
| class QTextFrameFormat; |
| class QTextImageFormat; |
| class QTextTableCellFormat; |
| class QTextFormat; |
| class QTextObject; |
| class QTextCursor; |
| class QTextDocument; |
| class QTextLength; |
| |
| #ifndef QT_NO_DATASTREAM |
| Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QTextLength &); |
| Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QTextLength &); |
| #endif |
| |
| #ifndef QT_NO_DEBUG_STREAM |
| Q_GUI_EXPORT QDebug operator<<(QDebug, const QTextLength &); |
| #endif |
| |
| class Q_GUI_EXPORT QTextLength |
| { |
| public: |
| enum Type { VariableLength = 0, FixedLength, PercentageLength }; |
| |
| inline QTextLength() : lengthType(VariableLength), fixedValueOrPercentage(0) {} |
| |
| inline explicit QTextLength(Type type, qreal value); |
| |
| inline Type type() const { return lengthType; } |
| inline qreal value(qreal maximumLength) const |
| { |
| switch (lengthType) { |
| case FixedLength: return fixedValueOrPercentage; |
| case VariableLength: return maximumLength; |
| case PercentageLength: return fixedValueOrPercentage * maximumLength / qreal(100); |
| } |
| return -1; |
| } |
| |
| inline qreal rawValue() const { return fixedValueOrPercentage; } |
| |
| inline bool operator==(const QTextLength &other) const |
| { return lengthType == other.lengthType |
| && qFuzzyCompare(fixedValueOrPercentage, other.fixedValueOrPercentage); } |
| inline bool operator!=(const QTextLength &other) const |
| { return lengthType != other.lengthType |
| || !qFuzzyCompare(fixedValueOrPercentage, other.fixedValueOrPercentage); } |
| operator QVariant() const; |
| |
| private: |
| Type lengthType; |
| qreal fixedValueOrPercentage; |
| friend Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QTextLength &); |
| friend Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QTextLength &); |
| }; |
| |
| inline QTextLength::QTextLength(Type atype, qreal avalue) |
| : lengthType(atype), fixedValueOrPercentage(avalue) {} |
| |
| #ifndef QT_NO_DATASTREAM |
| Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QTextFormat &); |
| Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QTextFormat &); |
| #endif |
| |
| #ifndef QT_NO_DEBUG_STREAM |
| Q_GUI_EXPORT QDebug operator<<(QDebug, const QTextFormat &); |
| #endif |
| |
| class Q_GUI_EXPORT QTextFormat |
| { |
| Q_GADGET |
| public: |
| enum FormatType { |
| InvalidFormat = -1, |
| BlockFormat = 1, |
| CharFormat = 2, |
| ListFormat = 3, |
| #if QT_DEPRECATED_SINCE(5, 3) |
| TableFormat = 4, |
| #endif |
| FrameFormat = 5, |
| |
| UserFormat = 100 |
| }; |
| Q_ENUM(FormatType) |
| |
| enum Property { |
| ObjectIndex = 0x0, |
| |
| // paragraph and char |
| CssFloat = 0x0800, |
| LayoutDirection = 0x0801, |
| |
| OutlinePen = 0x810, |
| BackgroundBrush = 0x820, |
| ForegroundBrush = 0x821, |
| // Internal to qtextlayout.cpp: ObjectSelectionBrush = 0x822 |
| BackgroundImageUrl = 0x823, |
| |
| // paragraph |
| BlockAlignment = 0x1010, |
| BlockTopMargin = 0x1030, |
| BlockBottomMargin = 0x1031, |
| BlockLeftMargin = 0x1032, |
| BlockRightMargin = 0x1033, |
| TextIndent = 0x1034, |
| TabPositions = 0x1035, |
| BlockIndent = 0x1040, |
| LineHeight = 0x1048, |
| LineHeightType = 0x1049, |
| BlockNonBreakableLines = 0x1050, |
| BlockTrailingHorizontalRulerWidth = 0x1060, |
| |
| // character properties |
| FirstFontProperty = 0x1FE0, |
| FontCapitalization = FirstFontProperty, |
| FontLetterSpacingType = 0x2033, |
| FontLetterSpacing = 0x1FE1, |
| FontWordSpacing = 0x1FE2, |
| FontStretch = 0x2034, |
| FontStyleHint = 0x1FE3, |
| FontStyleStrategy = 0x1FE4, |
| FontKerning = 0x1FE5, |
| FontHintingPreference = 0x1FE6, |
| FontFamily = 0x2000, |
| FontPointSize = 0x2001, |
| FontSizeAdjustment = 0x2002, |
| FontSizeIncrement = FontSizeAdjustment, // old name, compat |
| FontWeight = 0x2003, |
| FontItalic = 0x2004, |
| FontUnderline = 0x2005, // deprecated, use TextUnderlineStyle instead |
| FontOverline = 0x2006, |
| FontStrikeOut = 0x2007, |
| FontFixedPitch = 0x2008, |
| FontPixelSize = 0x2009, |
| LastFontProperty = FontPixelSize, |
| |
| TextUnderlineColor = 0x2010, |
| TextVerticalAlignment = 0x2021, |
| TextOutline = 0x2022, |
| TextUnderlineStyle = 0x2023, |
| TextToolTip = 0x2024, |
| |
| IsAnchor = 0x2030, |
| AnchorHref = 0x2031, |
| AnchorName = 0x2032, |
| ObjectType = 0x2f00, |
| |
| // list properties |
| ListStyle = 0x3000, |
| ListIndent = 0x3001, |
| ListNumberPrefix = 0x3002, |
| ListNumberSuffix = 0x3003, |
| |
| // table and frame properties |
| FrameBorder = 0x4000, |
| FrameMargin = 0x4001, |
| FramePadding = 0x4002, |
| FrameWidth = 0x4003, |
| FrameHeight = 0x4004, |
| FrameTopMargin = 0x4005, |
| FrameBottomMargin = 0x4006, |
| FrameLeftMargin = 0x4007, |
| FrameRightMargin = 0x4008, |
| FrameBorderBrush = 0x4009, |
| FrameBorderStyle = 0x4010, |
| |
| TableColumns = 0x4100, |
| TableColumnWidthConstraints = 0x4101, |
| TableCellSpacing = 0x4102, |
| TableCellPadding = 0x4103, |
| TableHeaderRowCount = 0x4104, |
| |
| // table cell properties |
| TableCellRowSpan = 0x4810, |
| TableCellColumnSpan = 0x4811, |
| |
| TableCellTopPadding = 0x4812, |
| TableCellBottomPadding = 0x4813, |
| TableCellLeftPadding = 0x4814, |
| TableCellRightPadding = 0x4815, |
| |
| // image properties |
| ImageName = 0x5000, |
| ImageWidth = 0x5010, |
| ImageHeight = 0x5011, |
| |
| // internal |
| /* |
| SuppressText = 0x5012, |
| SuppressBackground = 0x513 |
| */ |
| |
| // selection properties |
| FullWidthSelection = 0x06000, |
| |
| // page break properties |
| PageBreakPolicy = 0x7000, |
| |
| // -- |
| UserProperty = 0x100000 |
| }; |
| Q_ENUM(Property) |
| |
| enum ObjectTypes { |
| NoObject, |
| ImageObject, |
| TableObject, |
| TableCellObject, |
| |
| UserObject = 0x1000 |
| }; |
| Q_ENUM(ObjectTypes) |
| |
| enum PageBreakFlag { |
| PageBreak_Auto = 0, |
| PageBreak_AlwaysBefore = 0x001, |
| PageBreak_AlwaysAfter = 0x010 |
| // PageBreak_AlwaysInside = 0x100 |
| }; |
| Q_DECLARE_FLAGS(PageBreakFlags, PageBreakFlag) |
| |
| QTextFormat(); |
| |
| explicit QTextFormat(int type); |
| |
| QTextFormat(const QTextFormat &rhs); |
| QTextFormat &operator=(const QTextFormat &rhs); |
| ~QTextFormat(); |
| |
| void swap(QTextFormat &other) |
| { qSwap(d, other.d); qSwap(format_type, other.format_type); } |
| |
| void merge(const QTextFormat &other); |
| |
| inline bool isValid() const { return type() != InvalidFormat; } |
| inline bool isEmpty() const { return propertyCount() == 0; } |
| |
| int type() const; |
| |
| int objectIndex() const; |
| void setObjectIndex(int object); |
| |
| QVariant property(int propertyId) const; |
| void setProperty(int propertyId, const QVariant &value); |
| void clearProperty(int propertyId); |
| bool hasProperty(int propertyId) const; |
| |
| bool boolProperty(int propertyId) const; |
| int intProperty(int propertyId) const; |
| qreal doubleProperty(int propertyId) const; |
| QString stringProperty(int propertyId) const; |
| QColor colorProperty(int propertyId) const; |
| QPen penProperty(int propertyId) const; |
| QBrush brushProperty(int propertyId) const; |
| QTextLength lengthProperty(int propertyId) const; |
| QVector<QTextLength> lengthVectorProperty(int propertyId) const; |
| |
| void setProperty(int propertyId, const QVector<QTextLength> &lengths); |
| |
| QMap<int, QVariant> properties() const; |
| int propertyCount() const; |
| |
| inline void setObjectType(int type); |
| inline int objectType() const |
| { return intProperty(ObjectType); } |
| |
| inline bool isCharFormat() const { return type() == CharFormat; } |
| inline bool isBlockFormat() const { return type() == BlockFormat; } |
| inline bool isListFormat() const { return type() == ListFormat; } |
| inline bool isFrameFormat() const { return type() == FrameFormat; } |
| inline bool isImageFormat() const { return type() == CharFormat && objectType() == ImageObject; } |
| inline bool isTableFormat() const { return type() == FrameFormat && objectType() == TableObject; } |
| inline bool isTableCellFormat() const { return type() == CharFormat && objectType() == TableCellObject; } |
| |
| QTextBlockFormat toBlockFormat() const; |
| QTextCharFormat toCharFormat() const; |
| QTextListFormat toListFormat() const; |
| QTextTableFormat toTableFormat() const; |
| QTextFrameFormat toFrameFormat() const; |
| QTextImageFormat toImageFormat() const; |
| QTextTableCellFormat toTableCellFormat() const; |
| |
| bool operator==(const QTextFormat &rhs) const; |
| inline bool operator!=(const QTextFormat &rhs) const { return !operator==(rhs); } |
| operator QVariant() const; |
| |
| inline void setLayoutDirection(Qt::LayoutDirection direction) |
| { setProperty(QTextFormat::LayoutDirection, direction); } |
| inline Qt::LayoutDirection layoutDirection() const |
| { return Qt::LayoutDirection(intProperty(QTextFormat::LayoutDirection)); } |
| |
| inline void setBackground(const QBrush &brush) |
| { setProperty(BackgroundBrush, brush); } |
| inline QBrush background() const |
| { return brushProperty(BackgroundBrush); } |
| inline void clearBackground() |
| { clearProperty(BackgroundBrush); } |
| |
| inline void setForeground(const QBrush &brush) |
| { setProperty(ForegroundBrush, brush); } |
| inline QBrush foreground() const |
| { return brushProperty(ForegroundBrush); } |
| inline void clearForeground() |
| { clearProperty(ForegroundBrush); } |
| |
| private: |
| QSharedDataPointer<QTextFormatPrivate> d; |
| qint32 format_type; |
| |
| friend class QTextFormatCollection; |
| friend class QTextCharFormat; |
| friend Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QTextFormat &); |
| friend Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QTextFormat &); |
| }; |
| |
| Q_DECLARE_SHARED(QTextFormat) |
| |
| inline void QTextFormat::setObjectType(int atype) |
| { setProperty(ObjectType, atype); } |
| |
| Q_DECLARE_OPERATORS_FOR_FLAGS(QTextFormat::PageBreakFlags) |
| |
| class Q_GUI_EXPORT QTextCharFormat : public QTextFormat |
| { |
| public: |
| enum VerticalAlignment { |
| AlignNormal = 0, |
| AlignSuperScript, |
| AlignSubScript, |
| AlignMiddle, |
| AlignTop, |
| AlignBottom, |
| AlignBaseline |
| }; |
| enum UnderlineStyle { // keep in sync with Qt::PenStyle! |
| NoUnderline, |
| SingleUnderline, |
| DashUnderline, |
| DotLine, |
| DashDotLine, |
| DashDotDotLine, |
| WaveUnderline, |
| SpellCheckUnderline |
| }; |
| |
| QTextCharFormat(); |
| |
| bool isValid() const { return isCharFormat(); } |
| |
| enum FontPropertiesInheritanceBehavior { |
| FontPropertiesSpecifiedOnly, |
| FontPropertiesAll |
| }; |
| void setFont(const QFont &font, FontPropertiesInheritanceBehavior behavior); |
| void setFont(const QFont &font); // ### Qt6: Merge with above |
| QFont font() const; |
| |
| inline void setFontFamily(const QString &family) |
| { setProperty(FontFamily, family); } |
| inline QString fontFamily() const |
| { return stringProperty(FontFamily); } |
| |
| inline void setFontPointSize(qreal size) |
| { setProperty(FontPointSize, size); } |
| inline qreal fontPointSize() const |
| { return doubleProperty(FontPointSize); } |
| |
| inline void setFontWeight(int weight) |
| { if (weight == QFont::Normal) weight = 0; setProperty(FontWeight, weight); } |
| inline int fontWeight() const |
| { int weight = intProperty(FontWeight); if (weight == 0) weight = QFont::Normal; return weight; } |
| inline void setFontItalic(bool italic) |
| { setProperty(FontItalic, italic); } |
| inline bool fontItalic() const |
| { return boolProperty(FontItalic); } |
| inline void setFontCapitalization(QFont::Capitalization capitalization) |
| { setProperty(FontCapitalization, capitalization); } |
| inline QFont::Capitalization fontCapitalization() const |
| { return static_cast<QFont::Capitalization>(intProperty(FontCapitalization)); } |
| inline void setFontLetterSpacingType(QFont::SpacingType letterSpacingType) |
| { setProperty(FontLetterSpacingType, letterSpacingType); } |
| inline QFont::SpacingType fontLetterSpacingType() const |
| { return static_cast<QFont::SpacingType>(intProperty(FontLetterSpacingType)); } |
| inline void setFontLetterSpacing(qreal spacing) |
| { setProperty(FontLetterSpacing, spacing); } |
| inline qreal fontLetterSpacing() const |
| { return doubleProperty(FontLetterSpacing); } |
| inline void setFontWordSpacing(qreal spacing) |
| { setProperty(FontWordSpacing, spacing); } |
| inline qreal fontWordSpacing() const |
| { return doubleProperty(FontWordSpacing); } |
| |
| inline void setFontUnderline(bool underline) |
| { setProperty(TextUnderlineStyle, underline ? SingleUnderline : NoUnderline); } |
| bool fontUnderline() const; |
| |
| inline void setFontOverline(bool overline) |
| { setProperty(FontOverline, overline); } |
| inline bool fontOverline() const |
| { return boolProperty(FontOverline); } |
| |
| inline void setFontStrikeOut(bool strikeOut) |
| { setProperty(FontStrikeOut, strikeOut); } |
| inline bool fontStrikeOut() const |
| { return boolProperty(FontStrikeOut); } |
| |
| inline void setUnderlineColor(const QColor &color) |
| { setProperty(TextUnderlineColor, color); } |
| inline QColor underlineColor() const |
| { return colorProperty(TextUnderlineColor); } |
| |
| inline void setFontFixedPitch(bool fixedPitch) |
| { setProperty(FontFixedPitch, fixedPitch); } |
| inline bool fontFixedPitch() const |
| { return boolProperty(FontFixedPitch); } |
| |
| inline void setFontStretch(int factor) |
| { setProperty(FontStretch, factor); } |
| inline int fontStretch() const |
| { return intProperty(FontStretch); } |
| |
| inline void setFontStyleHint(QFont::StyleHint hint, QFont::StyleStrategy strategy = QFont::PreferDefault) |
| { setProperty(FontStyleHint, hint); setProperty(FontStyleStrategy, strategy); } |
| inline void setFontStyleStrategy(QFont::StyleStrategy strategy) |
| { setProperty(FontStyleStrategy, strategy); } |
| QFont::StyleHint fontStyleHint() const |
| { return static_cast<QFont::StyleHint>(intProperty(FontStyleHint)); } |
| QFont::StyleStrategy fontStyleStrategy() const |
| { return static_cast<QFont::StyleStrategy>(intProperty(FontStyleStrategy)); } |
| |
| inline void setFontHintingPreference(QFont::HintingPreference hintingPreference) |
| { |
| setProperty(FontHintingPreference, hintingPreference); |
| } |
| |
| inline QFont::HintingPreference fontHintingPreference() const |
| { |
| return static_cast<QFont::HintingPreference>(intProperty(FontHintingPreference)); |
| } |
| |
| inline void setFontKerning(bool enable) |
| { setProperty(FontKerning, enable); } |
| inline bool fontKerning() const |
| { return boolProperty(FontKerning); } |
| |
| void setUnderlineStyle(UnderlineStyle style); |
| inline UnderlineStyle underlineStyle() const |
| { return static_cast<UnderlineStyle>(intProperty(TextUnderlineStyle)); } |
| |
| inline void setVerticalAlignment(VerticalAlignment alignment) |
| { setProperty(TextVerticalAlignment, alignment); } |
| inline VerticalAlignment verticalAlignment() const |
| { return static_cast<VerticalAlignment>(intProperty(TextVerticalAlignment)); } |
| |
| inline void setTextOutline(const QPen &pen) |
| { setProperty(TextOutline, pen); } |
| inline QPen textOutline() const |
| { return penProperty(TextOutline); } |
| |
| inline void setToolTip(const QString &tip) |
| { setProperty(TextToolTip, tip); } |
| inline QString toolTip() const |
| { return stringProperty(TextToolTip); } |
| |
| inline void setAnchor(bool anchor) |
| { setProperty(IsAnchor, anchor); } |
| inline bool isAnchor() const |
| { return boolProperty(IsAnchor); } |
| |
| inline void setAnchorHref(const QString &value) |
| { setProperty(AnchorHref, value); } |
| inline QString anchorHref() const |
| { return stringProperty(AnchorHref); } |
| |
| inline void setAnchorName(const QString &name) |
| { setAnchorNames(QStringList(name)); } |
| QString anchorName() const; |
| |
| inline void setAnchorNames(const QStringList &names) |
| { setProperty(AnchorName, names); } |
| QStringList anchorNames() const; |
| |
| inline void setTableCellRowSpan(int tableCellRowSpan); |
| inline int tableCellRowSpan() const |
| { int s = intProperty(TableCellRowSpan); if (s == 0) s = 1; return s; } |
| inline void setTableCellColumnSpan(int tableCellColumnSpan); |
| inline int tableCellColumnSpan() const |
| { int s = intProperty(TableCellColumnSpan); if (s == 0) s = 1; return s; } |
| |
| protected: |
| explicit QTextCharFormat(const QTextFormat &fmt); |
| friend class QTextFormat; |
| }; |
| |
| Q_DECLARE_SHARED(QTextCharFormat) |
| |
| inline void QTextCharFormat::setTableCellRowSpan(int _tableCellRowSpan) |
| { |
| if (_tableCellRowSpan <= 1) |
| clearProperty(TableCellRowSpan); // the getter will return 1 here. |
| else |
| setProperty(TableCellRowSpan, _tableCellRowSpan); |
| } |
| |
| inline void QTextCharFormat::setTableCellColumnSpan(int _tableCellColumnSpan) |
| { |
| if (_tableCellColumnSpan <= 1) |
| clearProperty(TableCellColumnSpan); // the getter will return 1 here. |
| else |
| setProperty(TableCellColumnSpan, _tableCellColumnSpan); |
| } |
| |
| class Q_GUI_EXPORT QTextBlockFormat : public QTextFormat |
| { |
| public: |
| enum LineHeightTypes { |
| SingleHeight = 0, |
| ProportionalHeight = 1, |
| FixedHeight = 2, |
| MinimumHeight = 3, |
| LineDistanceHeight = 4 |
| }; |
| |
| QTextBlockFormat(); |
| |
| bool isValid() const { return isBlockFormat(); } |
| |
| inline void setAlignment(Qt::Alignment alignment); |
| inline Qt::Alignment alignment() const |
| { int a = intProperty(BlockAlignment); if (a == 0) a = Qt::AlignLeft; return QFlag(a); } |
| |
| inline void setTopMargin(qreal margin) |
| { setProperty(BlockTopMargin, margin); } |
| inline qreal topMargin() const |
| { return doubleProperty(BlockTopMargin); } |
| |
| inline void setBottomMargin(qreal margin) |
| { setProperty(BlockBottomMargin, margin); } |
| inline qreal bottomMargin() const |
| { return doubleProperty(BlockBottomMargin); } |
| |
| inline void setLeftMargin(qreal margin) |
| { setProperty(BlockLeftMargin, margin); } |
| inline qreal leftMargin() const |
| { return doubleProperty(BlockLeftMargin); } |
| |
| inline void setRightMargin(qreal margin) |
| { setProperty(BlockRightMargin, margin); } |
| inline qreal rightMargin() const |
| { return doubleProperty(BlockRightMargin); } |
| |
| inline void setTextIndent(qreal aindent) |
| { setProperty(TextIndent, aindent); } |
| inline qreal textIndent() const |
| { return doubleProperty(TextIndent); } |
| |
| inline void setIndent(int indent); |
| inline int indent() const |
| { return intProperty(BlockIndent); } |
| |
| inline void setLineHeight(qreal height, int heightType) |
| { setProperty(LineHeight, height); setProperty(LineHeightType, heightType); } |
| inline qreal lineHeight(qreal scriptLineHeight, qreal scaling) const; |
| inline qreal lineHeight() const |
| { return doubleProperty(LineHeight); } |
| inline int lineHeightType() const |
| { return intProperty(LineHeightType); } |
| |
| inline void setNonBreakableLines(bool b) |
| { setProperty(BlockNonBreakableLines, b); } |
| inline bool nonBreakableLines() const |
| { return boolProperty(BlockNonBreakableLines); } |
| |
| inline void setPageBreakPolicy(PageBreakFlags flags) |
| { setProperty(PageBreakPolicy, int(flags)); } |
| inline PageBreakFlags pageBreakPolicy() const |
| { return PageBreakFlags(intProperty(PageBreakPolicy)); } |
| |
| void setTabPositions(const QList<QTextOption::Tab> &tabs); |
| QList<QTextOption::Tab> tabPositions() const; |
| |
| protected: |
| explicit QTextBlockFormat(const QTextFormat &fmt); |
| friend class QTextFormat; |
| }; |
| |
| Q_DECLARE_SHARED(QTextBlockFormat) |
| |
| inline void QTextBlockFormat::setAlignment(Qt::Alignment aalignment) |
| { setProperty(BlockAlignment, int(aalignment)); } |
| |
| inline void QTextBlockFormat::setIndent(int aindent) |
| { setProperty(BlockIndent, aindent); } |
| |
| inline qreal QTextBlockFormat::lineHeight(qreal scriptLineHeight, qreal scaling = 1.0) const |
| { |
| switch(intProperty(LineHeightType)) { |
| case SingleHeight: |
| return(scriptLineHeight); |
| case ProportionalHeight: |
| return(scriptLineHeight * doubleProperty(LineHeight) / 100.0); |
| case FixedHeight: |
| return(doubleProperty(LineHeight) * scaling); |
| case MinimumHeight: |
| return(qMax(scriptLineHeight, doubleProperty(LineHeight) * scaling)); |
| case LineDistanceHeight: |
| return(scriptLineHeight + doubleProperty(LineHeight) * scaling); |
| } |
| return(0); |
| } |
| |
| class Q_GUI_EXPORT QTextListFormat : public QTextFormat |
| { |
| public: |
| QTextListFormat(); |
| |
| bool isValid() const { return isListFormat(); } |
| |
| enum Style { |
| ListDisc = -1, |
| ListCircle = -2, |
| ListSquare = -3, |
| ListDecimal = -4, |
| ListLowerAlpha = -5, |
| ListUpperAlpha = -6, |
| ListLowerRoman = -7, |
| ListUpperRoman = -8, |
| ListStyleUndefined = 0 |
| }; |
| |
| inline void setStyle(Style style); |
| inline Style style() const |
| { return static_cast<Style>(intProperty(ListStyle)); } |
| |
| inline void setIndent(int indent); |
| inline int indent() const |
| { return intProperty(ListIndent); } |
| |
| inline void setNumberPrefix(const QString &numberPrefix); |
| inline QString numberPrefix() const |
| { return stringProperty(ListNumberPrefix); } |
| |
| inline void setNumberSuffix(const QString &numberSuffix); |
| inline QString numberSuffix() const |
| { return stringProperty(ListNumberSuffix); } |
| |
| protected: |
| explicit QTextListFormat(const QTextFormat &fmt); |
| friend class QTextFormat; |
| }; |
| |
| Q_DECLARE_SHARED(QTextListFormat) |
| |
| inline void QTextListFormat::setStyle(Style astyle) |
| { setProperty(ListStyle, astyle); } |
| |
| inline void QTextListFormat::setIndent(int aindent) |
| { setProperty(ListIndent, aindent); } |
| |
| inline void QTextListFormat::setNumberPrefix(const QString &np) |
| { setProperty(ListNumberPrefix, np); } |
| |
| inline void QTextListFormat::setNumberSuffix(const QString &ns) |
| { setProperty(ListNumberSuffix, ns); } |
| |
| class Q_GUI_EXPORT QTextImageFormat : public QTextCharFormat |
| { |
| public: |
| QTextImageFormat(); |
| |
| bool isValid() const { return isImageFormat(); } |
| |
| inline void setName(const QString &name); |
| inline QString name() const |
| { return stringProperty(ImageName); } |
| |
| inline void setWidth(qreal width); |
| inline qreal width() const |
| { return doubleProperty(ImageWidth); } |
| |
| inline void setHeight(qreal height); |
| inline qreal height() const |
| { return doubleProperty(ImageHeight); } |
| |
| protected: |
| explicit QTextImageFormat(const QTextFormat &format); |
| friend class QTextFormat; |
| }; |
| |
| Q_DECLARE_SHARED(QTextImageFormat) |
| |
| inline void QTextImageFormat::setName(const QString &aname) |
| { setProperty(ImageName, aname); } |
| |
| inline void QTextImageFormat::setWidth(qreal awidth) |
| { setProperty(ImageWidth, awidth); } |
| |
| inline void QTextImageFormat::setHeight(qreal aheight) |
| { setProperty(ImageHeight, aheight); } |
| |
| class Q_GUI_EXPORT QTextFrameFormat : public QTextFormat |
| { |
| public: |
| QTextFrameFormat(); |
| |
| bool isValid() const { return isFrameFormat(); } |
| |
| enum Position { |
| InFlow, |
| FloatLeft, |
| FloatRight |
| // ###### |
| // Absolute |
| }; |
| |
| enum BorderStyle { |
| BorderStyle_None, |
| BorderStyle_Dotted, |
| BorderStyle_Dashed, |
| BorderStyle_Solid, |
| BorderStyle_Double, |
| BorderStyle_DotDash, |
| BorderStyle_DotDotDash, |
| BorderStyle_Groove, |
| BorderStyle_Ridge, |
| BorderStyle_Inset, |
| BorderStyle_Outset |
| }; |
| |
| inline void setPosition(Position f) |
| { setProperty(CssFloat, f); } |
| inline Position position() const |
| { return static_cast<Position>(intProperty(CssFloat)); } |
| |
| inline void setBorder(qreal border); |
| inline qreal border() const |
| { return doubleProperty(FrameBorder); } |
| |
| inline void setBorderBrush(const QBrush &brush) |
| { setProperty(FrameBorderBrush, brush); } |
| inline QBrush borderBrush() const |
| { return brushProperty(FrameBorderBrush); } |
| |
| inline void setBorderStyle(BorderStyle style) |
| { setProperty(FrameBorderStyle, style); } |
| inline BorderStyle borderStyle() const |
| { return static_cast<BorderStyle>(intProperty(FrameBorderStyle)); } |
| |
| void setMargin(qreal margin); |
| inline qreal margin() const |
| { return doubleProperty(FrameMargin); } |
| |
| inline void setTopMargin(qreal margin); |
| qreal topMargin() const; |
| |
| inline void setBottomMargin(qreal margin); |
| qreal bottomMargin() const; |
| |
| inline void setLeftMargin(qreal margin); |
| qreal leftMargin() const; |
| |
| inline void setRightMargin(qreal margin); |
| qreal rightMargin() const; |
| |
| inline void setPadding(qreal padding); |
| inline qreal padding() const |
| { return doubleProperty(FramePadding); } |
| |
| inline void setWidth(qreal width); |
| inline void setWidth(const QTextLength &length) |
| { setProperty(FrameWidth, length); } |
| inline QTextLength width() const |
| { return lengthProperty(FrameWidth); } |
| |
| inline void setHeight(qreal height); |
| inline void setHeight(const QTextLength &height); |
| inline QTextLength height() const |
| { return lengthProperty(FrameHeight); } |
| |
| inline void setPageBreakPolicy(PageBreakFlags flags) |
| { setProperty(PageBreakPolicy, int(flags)); } |
| inline PageBreakFlags pageBreakPolicy() const |
| { return PageBreakFlags(intProperty(PageBreakPolicy)); } |
| |
| protected: |
| explicit QTextFrameFormat(const QTextFormat &fmt); |
| friend class QTextFormat; |
| }; |
| |
| Q_DECLARE_SHARED(QTextFrameFormat) |
| |
| inline void QTextFrameFormat::setBorder(qreal aborder) |
| { setProperty(FrameBorder, aborder); } |
| |
| inline void QTextFrameFormat::setPadding(qreal apadding) |
| { setProperty(FramePadding, apadding); } |
| |
| inline void QTextFrameFormat::setWidth(qreal awidth) |
| { setProperty(FrameWidth, QTextLength(QTextLength::FixedLength, awidth)); } |
| |
| inline void QTextFrameFormat::setHeight(qreal aheight) |
| { setProperty(FrameHeight, QTextLength(QTextLength::FixedLength, aheight)); } |
| inline void QTextFrameFormat::setHeight(const QTextLength &aheight) |
| { setProperty(FrameHeight, aheight); } |
| |
| inline void QTextFrameFormat::setTopMargin(qreal amargin) |
| { setProperty(FrameTopMargin, amargin); } |
| |
| inline void QTextFrameFormat::setBottomMargin(qreal amargin) |
| { setProperty(FrameBottomMargin, amargin); } |
| |
| inline void QTextFrameFormat::setLeftMargin(qreal amargin) |
| { setProperty(FrameLeftMargin, amargin); } |
| |
| inline void QTextFrameFormat::setRightMargin(qreal amargin) |
| { setProperty(FrameRightMargin, amargin); } |
| |
| class Q_GUI_EXPORT QTextTableFormat : public QTextFrameFormat |
| { |
| public: |
| QTextTableFormat(); |
| |
| inline bool isValid() const { return isTableFormat(); } |
| |
| inline int columns() const |
| { int cols = intProperty(TableColumns); if (cols == 0) cols = 1; return cols; } |
| inline void setColumns(int columns); |
| |
| inline void setColumnWidthConstraints(const QVector<QTextLength> &constraints) |
| { setProperty(TableColumnWidthConstraints, constraints); } |
| |
| inline QVector<QTextLength> columnWidthConstraints() const |
| { return lengthVectorProperty(TableColumnWidthConstraints); } |
| |
| inline void clearColumnWidthConstraints() |
| { clearProperty(TableColumnWidthConstraints); } |
| |
| inline qreal cellSpacing() const |
| { return doubleProperty(TableCellSpacing); } |
| inline void setCellSpacing(qreal spacing) |
| { setProperty(TableCellSpacing, spacing); } |
| |
| inline qreal cellPadding() const |
| { return doubleProperty(TableCellPadding); } |
| inline void setCellPadding(qreal padding); |
| |
| inline void setAlignment(Qt::Alignment alignment); |
| inline Qt::Alignment alignment() const |
| { return QFlag(intProperty(BlockAlignment)); } |
| |
| inline void setHeaderRowCount(int count) |
| { setProperty(TableHeaderRowCount, count); } |
| inline int headerRowCount() const |
| { return intProperty(TableHeaderRowCount); } |
| |
| protected: |
| explicit QTextTableFormat(const QTextFormat &fmt); |
| friend class QTextFormat; |
| }; |
| |
| Q_DECLARE_SHARED(QTextTableFormat) |
| |
| inline void QTextTableFormat::setColumns(int acolumns) |
| { |
| if (acolumns == 1) |
| acolumns = 0; |
| setProperty(TableColumns, acolumns); |
| } |
| |
| inline void QTextTableFormat::setCellPadding(qreal apadding) |
| { setProperty(TableCellPadding, apadding); } |
| |
| inline void QTextTableFormat::setAlignment(Qt::Alignment aalignment) |
| { setProperty(BlockAlignment, int(aalignment)); } |
| |
| class Q_GUI_EXPORT QTextTableCellFormat : public QTextCharFormat |
| { |
| public: |
| QTextTableCellFormat(); |
| |
| inline bool isValid() const { return isTableCellFormat(); } |
| |
| inline void setTopPadding(qreal padding); |
| inline qreal topPadding() const; |
| |
| inline void setBottomPadding(qreal padding); |
| inline qreal bottomPadding() const; |
| |
| inline void setLeftPadding(qreal padding); |
| inline qreal leftPadding() const; |
| |
| inline void setRightPadding(qreal padding); |
| inline qreal rightPadding() const; |
| |
| inline void setPadding(qreal padding); |
| |
| protected: |
| explicit QTextTableCellFormat(const QTextFormat &fmt); |
| friend class QTextFormat; |
| }; |
| |
| Q_DECLARE_SHARED(QTextTableCellFormat) |
| |
| inline void QTextTableCellFormat::setTopPadding(qreal padding) |
| { |
| setProperty(TableCellTopPadding, padding); |
| } |
| |
| inline qreal QTextTableCellFormat::topPadding() const |
| { |
| return doubleProperty(TableCellTopPadding); |
| } |
| |
| inline void QTextTableCellFormat::setBottomPadding(qreal padding) |
| { |
| setProperty(TableCellBottomPadding, padding); |
| } |
| |
| inline qreal QTextTableCellFormat::bottomPadding() const |
| { |
| return doubleProperty(TableCellBottomPadding); |
| } |
| |
| inline void QTextTableCellFormat::setLeftPadding(qreal padding) |
| { |
| setProperty(TableCellLeftPadding, padding); |
| } |
| |
| inline qreal QTextTableCellFormat::leftPadding() const |
| { |
| return doubleProperty(TableCellLeftPadding); |
| } |
| |
| inline void QTextTableCellFormat::setRightPadding(qreal padding) |
| { |
| setProperty(TableCellRightPadding, padding); |
| } |
| |
| inline qreal QTextTableCellFormat::rightPadding() const |
| { |
| return doubleProperty(TableCellRightPadding); |
| } |
| |
| inline void QTextTableCellFormat::setPadding(qreal padding) |
| { |
| setTopPadding(padding); |
| setBottomPadding(padding); |
| setLeftPadding(padding); |
| setRightPadding(padding); |
| } |
| |
| |
| QT_END_NAMESPACE |
| |
| #endif // QTEXTFORMAT_H |