summaryrefslogtreecommitdiffstats
path: root/tqtinterface/qt4/src/kernel/tqstylesheet.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tqtinterface/qt4/src/kernel/tqstylesheet.cpp')
-rw-r--r--tqtinterface/qt4/src/kernel/tqstylesheet.cpp1623
1 files changed, 0 insertions, 1623 deletions
diff --git a/tqtinterface/qt4/src/kernel/tqstylesheet.cpp b/tqtinterface/qt4/src/kernel/tqstylesheet.cpp
deleted file mode 100644
index c3fc72f..0000000
--- a/tqtinterface/qt4/src/kernel/tqstylesheet.cpp
+++ /dev/null
@@ -1,1623 +0,0 @@
-/****************************************************************************
-**
-** Implementation of the TQStyleSheet class
-**
-** Created : 990101
-**
-** Copyright (C) 2010 Timothy Pearson and (C) 1992-2008 Trolltech ASA.
-**
-** This file is part of the kernel module of the TQt GUI Toolkit.
-**
-** This file may be used under the terms of the GNU General
-** Public License versions 2.0 or 3.0 as published by the Free
-** Software Foundation and appearing in the files LICENSE.GPL2
-** and LICENSE.GPL3 included in the packaging of this file.
-** Alternatively you may (at your option) use any later version
-** of the GNU General Public License if such license has been
-** publicly approved by Trolltech ASA (or its successors, if any)
-** and the KDE Free TQt Foundation.
-**
-** Please review the following information to ensure GNU General
-** Public Licensing requirements will be met:
-** http://trolltech.com/products/qt/licenses/licensing/opensource/.
-** If you are unsure which license is appropriate for your use, please
-** review the following information:
-** http://trolltech.com/products/qt/licenses/licensing/licensingoverview
-** or contact the sales department at sales@trolltech.com.
-**
-** This file may be used under the terms of the Q Public License as
-** defined by Trolltech ASA and appearing in the file LICENSE.TQPL
-** included in the packaging of this file. Licensees holding valid TQt
-** Commercial licenses may use this file in accordance with the TQt
-** Commercial License Agreement provided with the Software.
-**
-** This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
-** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted
-** herein.
-**
-**********************************************************************/
-
-#include "tqstylesheet.h"
-
-#ifndef TQT_NO_RICHTEXT
-
-#include "private/tqrichtext_p.h"
-#include "tqlayout.h"
-#include "tqpainter.h"
-#include "tqcleanuphandler.h"
-
-#include <stdio.h>
-
-class TQStyleSheetItemData
-{
-public:
- TQStyleSheetItem::DisplayMode disp;
- int fontitalic;
- int fontunderline;
- int fontstrikeout;
- int fontweight;
- int fontsize;
- int fontsizelog;
- int fontsizestep;
- int lineSpacing;
- TQString fontfamily;
- TQStyleSheetItem *parentstyle;
- TQString stylename;
- int ncolumns;
- TQColor col;
- bool anchor;
- int align;
- TQStyleSheetItem::VerticalAlignment valign;
- int margin[5];
- TQStyleSheetItem::ListStyle list;
- TQStyleSheetItem::WhiteSpaceMode whitespacemode;
- TQString contxt;
- bool selfnest;
- TQStyleSheet* sheet;
-};
-
-/*!
- \class TQStyleSheetItem tqstylesheet.h
- \brief The TQStyleSheetItem class provides an encapsulation of a set of text styles.
-
- \ingroup text
-
- A style sheet item consists of a name and a set of attributes that
- specifiy its font, color, etc. When used in a \link TQStyleSheet
- style sheet\endlink (see styleSheet()), items define the name() of
- a rich text tag and the display property changes associated with
- it.
-
- The \link TQStyleSheetItem::DisplayMode display mode\endlink
- attribute indicates whether the item is a block, an inline element
- or a list element; see setDisplayMode(). The treatment of
- whitespace is controlled by the \link
- TQStyleSheetItem::WhiteSpaceMode white space mode\endlink; see
- setWhiteSpaceMode(). An item's margins are set with setMargin(),
- In the case of list items, the list style is set with
- setListStyle(). An item may be a hypertext link anchor; see
- setAnchor(). Other attributes are set with tqsetAlignment(),
- setVerticalAlignment(), setFontFamily(), setFontSize(),
- setFontWeight(), setFontItalic(), setFontUnderline(),
- setFontStrikeOut and setColor().
-*/
-
-/*! \enum TQStyleSheetItem::AdditionalStyleValues
- \internal
-*/
-
-/*!
- \enum TQStyleSheetItem::WhiteSpaceMode
-
- This enum defines the ways in which TQStyleSheet can treat
- whitespace.
-
- \value WhiteSpaceNormal any sequence of whitespace (including
- line-breaks) is equivalent to a single space.
-
- \value WhiteSpacePre whitespace must be output exactly as given
- in the input.
-
- \value WhiteSpaceNoWrap multiple spaces are collapsed as with
- WhiteSpaceNormal, but no automatic line-breaks occur. To break
- lines manually, use the \c{<br>} tag.
-
-*/
-
-/*!
- \enum TQStyleSheetItem::Margin
-
- \value MarginLeft left margin
- \value MarginRight right margin
- \value MarginTop top margin
- \value MarginBottom bottom margin
- \value MarginAll all margins (left, right, top and bottom)
- \value MarginVertical top and bottom margins
- \value MarginHorizontal left and right margins
- \value MarginFirstLine margin (indentation) of the first line of
- a paragarph (in addition to the MarginLeft of the paragraph)
-*/
-
-/*!
- Constructs a new style called \a name for the stylesheet \a
- parent.
-
- All properties in TQStyleSheetItem are initially in the "do not
- change" state, except \link TQStyleSheetItem::DisplayMode display
- mode\endlink, which defaults to \c DisplayInline.
-*/
-TQStyleSheetItem::TQStyleSheetItem( TQStyleSheet* parent, const TQString& name )
-{
- d = new TQStyleSheetItemData;
- d->stylename = name.lower();
- d->sheet = parent;
- init();
- if (parent)
- parent->insert( this );
-}
-
-/*!
- Copy constructor. Constructs a copy of \a other that is not bound
- to any style sheet.
-*/
-TQStyleSheetItem::TQStyleSheetItem( const TQStyleSheetItem & other )
-{
- d = new TQStyleSheetItemData;
- *d = *other.d;
-}
-
-
-/*!
- Destroys the style. Note that TQStyleSheetItem objects become
- owned by TQStyleSheet when they are created.
-*/
-TQStyleSheetItem::~TQStyleSheetItem()
-{
- delete d;
-}
-
-/*!
- Assignment. Assings a copy of \a other that is not bound to any style sheet.
- Unbounds first from previous style sheet.
- */
-TQStyleSheetItem& TQStyleSheetItem::operator=( const TQStyleSheetItem& other )
-{
- if ( &other == this )
- return *this;
- delete d;
- d = new TQStyleSheetItemData;
- *d = *other.d;
- return *this;
-}
-
-/*!
- Returns the style sheet this item is in.
-*/
-TQStyleSheet* TQStyleSheetItem::styleSheet()
-{
- return d->sheet;
-}
-
-/*!
- \overload
-
- Returns the style sheet this item is in.
-*/
-const TQStyleSheet* TQStyleSheetItem::styleSheet() const
-{
- return d->sheet;
-}
-
-/*!
- \internal
- Internal initialization
- */
-void TQStyleSheetItem::init()
-{
- d->disp = DisplayInline;
-
- d->fontitalic = Undefined;
- d->fontunderline = Undefined;
- d->fontstrikeout = Undefined;
- d->fontweight = Undefined;
- d->fontsize = Undefined;
- d->fontsizelog = Undefined;
- d->fontsizestep = 0;
- d->ncolumns = Undefined;
- d->col = TQColor(); // !isValid()
- d->anchor = FALSE;
- d->align = Undefined;
- d->valign = VAlignBaseline;
- d->margin[0] = Undefined;
- d->margin[1] = Undefined;
- d->margin[2] = Undefined;
- d->margin[3] = Undefined;
- d->margin[4] = Undefined;
- d->list = ListStyleUndefined;
- d->whitespacemode = WhiteSpaceModeUndefined;
- d->selfnest = TRUE;
- d->lineSpacing = Undefined;
-}
-
-/*!
- Returns the name of the style item.
-*/
-TQString TQStyleSheetItem::name() const
-{
- return d->stylename;
-}
-
-/*!
- Returns the \link TQStyleSheetItem::DisplayMode display
- mode\endlink of the style.
-
- \sa setDisplayMode()
-*/
-TQStyleSheetItem::DisplayMode TQStyleSheetItem::displayMode() const
-{
- return d->disp;
-}
-
-/*!
- \enum TQStyleSheetItem::DisplayMode
-
- This enum type defines the way adjacent elements are displayed.
-
- \value DisplayBlock elements are displayed as a rectangular block
- (e.g. \c{<p>...</p>}).
-
- \value DisplayInline elements are displayed in a horizontally
- flowing sequence (e.g. \c{<em>...</em>}).
-
- \value DisplayListItem elements are displayed in a vertical
- sequence (e.g. \c{<li>...</li>}).
-
- \value DisplayNone elements are not displayed at all.
-*/
-
-/*!
- Sets the display mode of the style to \a m.
-
- \sa displayMode()
- */
-void TQStyleSheetItem::setDisplayMode(DisplayMode m)
-{
- d->disp=m;
-}
-
-
-/*!
- Returns the tqalignment of this style. Possible values are \c
- AlignAuto, \c AlignLeft, \c AlignRight, \c AlignCenter or \c
- AlignJustify.
-
- \sa tqsetAlignment(), TQt::AlignmentFlags
-*/
-int TQStyleSheetItem::tqalignment() const
-{
- return d->align;
-}
-
-/*!
- Sets the tqalignment to \a f. This only makes sense for styles with
- a \link TQStyleSheetItem::DisplayMode display mode\endlink of
- DisplayBlock. Possible values are \c AlignAuto, \c AlignLeft,
- \c AlignRight, \c AlignCenter or \c AlignJustify.
-
- \sa tqalignment(), displayMode(), TQt::AlignmentFlags
-*/
-void TQStyleSheetItem::tqsetAlignment( int f )
-{
- d->align = f;
-}
-
-
-/*!
- Returns the vertical tqalignment of the style. Possible values are
- \c VAlignBaseline, \c VAlignSub or \c VAlignSuper.
-
- \sa setVerticalAlignment()
-*/
-TQStyleSheetItem::VerticalAlignment TQStyleSheetItem::verticalAlignment() const
-{
- return d->valign;
-}
-
-/*!
- \enum TQStyleSheetItem::VerticalAlignment
-
- This enum type defines the way elements are aligned vertically.
- This is only supported for text elements.
-
- \value VAlignBaseline align the baseline of the element (or the
- bottom, if the element doesn't have a baseline) with the
- baseline of the parent
-
- \value VAlignSub subscript the element
-
- \value VAlignSuper superscript the element
-
-*/
-
-
-/*!
- Sets the vertical tqalignment to \a valign. Possible values are
- \c VAlignBaseline, \c VAlignSub or \c VAlignSuper.
-
- The vertical tqalignment property is not inherited.
-
- \sa verticalAlignment()
-*/
-void TQStyleSheetItem::setVerticalAlignment( VerticalAlignment valign )
-{
- d->valign = valign;
-}
-
-
-/*!
- Returns TRUE if the style sets an italic font; otherwise returns
- FALSE.
-
- \sa setFontItalic(), definesFontItalic()
-*/
-bool TQStyleSheetItem::fontItalic() const
-{
- return d->fontitalic > 0;
-}
-
-/*!
- If \a italic is TRUE sets italic for the style; otherwise sets
- upright.
-
- \sa fontItalic(), definesFontItalic()
-*/
-void TQStyleSheetItem::setFontItalic(bool italic)
-{
- d->fontitalic = italic?1:0;
-}
-
-/*!
- Returns TRUE if the style defines a font tqshape; otherwise returns
- FALSE. A style does not define any tqshape until setFontItalic() is
- called.
-
- \sa setFontItalic(), fontItalic()
-*/
-bool TQStyleSheetItem::definesFontItalic() const
-{
- return d->fontitalic != Undefined;
-}
-
-/*!
- Returns TRUE if the style sets an underlined font; otherwise
- returns FALSE.
-
- \sa setFontUnderline(), definesFontUnderline()
-*/
-bool TQStyleSheetItem::fontUnderline() const
-{
- return d->fontunderline > 0;
-}
-
-/*!
- If \a underline is TRUE, sets underline for the style; otherwise
- sets no underline.
-
- \sa fontUnderline(), definesFontUnderline()
-*/
-void TQStyleSheetItem::setFontUnderline(bool underline)
-{
- d->fontunderline = underline?1:0;
-}
-
-/*!
- Returns TRUE if the style defines a setting for the underline
- property of the font; otherwise returns FALSE. A style does not
- define this until setFontUnderline() is called.
-
- \sa setFontUnderline(), fontUnderline()
-*/
-bool TQStyleSheetItem::definesFontUnderline() const
-{
- return d->fontunderline != Undefined;
-}
-
-
-/*!
- Returns TRUE if the style sets a strike out font; otherwise
- returns FALSE.
-
- \sa setFontStrikeOut(), definesFontStrikeOut()
-*/
-bool TQStyleSheetItem::fontStrikeOut() const
-{
- return d->fontstrikeout > 0;
-}
-
-/*!
- If \a strikeOut is TRUE, sets strike out for the style; otherwise
- sets no strike out.
-
- \sa fontStrikeOut(), definesFontStrikeOut()
-*/
-void TQStyleSheetItem::setFontStrikeOut(bool strikeOut)
-{
- d->fontstrikeout = strikeOut?1:0;
-}
-
-/*!
- Returns TRUE if the style defines a setting for the strikeOut
- property of the font; otherwise returns FALSE. A style does not
- define this until setFontStrikeOut() is called.
-
- \sa setFontStrikeOut(), fontStrikeOut()
-*/
-bool TQStyleSheetItem::definesFontStrikeOut() const
-{
- return d->fontstrikeout != Undefined;
-}
-
-
-/*!
- Returns the font weight setting of the style. This is either a
- valid \c TQFont::Weight or the value \c TQStyleSheetItem::Undefined.
-
- \sa setFontWeight(), TQFont
-*/
-int TQStyleSheetItem::fontWeight() const
-{
- return d->fontweight;
-}
-
-/*!
- Sets the font weight setting of the style to \a w. Valid values
- are those defined by \c TQFont::Weight.
-
- \sa TQFont, fontWeight()
-*/
-void TQStyleSheetItem::setFontWeight(int w)
-{
- d->fontweight = w;
-}
-
-/*!
- Returns the logical font size setting of the style. This is either
- a valid size between 1 and 7 or \c TQStyleSheetItem::Undefined.
-
- \sa setLogicalFontSize(), setLogicalFontSizeStep(), TQFont::pointSize(), TQFont::setPointSize()
-*/
-int TQStyleSheetItem::logicalFontSize() const
-{
- return d->fontsizelog;
-}
-
-
-/*!
- Sets the logical font size setting of the style to \a s. Valid
- logical sizes are 1 to 7.
-
- \sa logicalFontSize(), TQFont::pointSize(), TQFont::setPointSize()
-*/
-void TQStyleSheetItem::setLogicalFontSize(int s)
-{
- d->fontsizelog = s;
-}
-
-/*!
- Returns the logical font size step of this style.
-
- The default is 0. Tags such as \c big define \c +1; \c small
- defines \c -1.
-
- \sa setLogicalFontSizeStep()
-*/
-int TQStyleSheetItem::logicalFontSizeStep() const
-{
- return d->fontsizestep;
-}
-
-/*!
- Sets the logical font size step of this style to \a s.
-
- \sa logicalFontSizeStep()
-*/
-void TQStyleSheetItem::setLogicalFontSizeStep( int s )
-{
- d->fontsizestep = s;
-}
-
-
-
-/*!
- Sets the font size setting of the style to \a s points.
-
- \sa fontSize(), TQFont::pointSize(), TQFont::setPointSize()
-*/
-void TQStyleSheetItem::setFontSize(int s)
-{
- d->fontsize = s;
-}
-
-/*!
- Returns the font size setting of the style. This is either a valid
- point size or \c TQStyleSheetItem::Undefined.
-
- \sa setFontSize(), TQFont::pointSize(), TQFont::setPointSize()
-*/
-int TQStyleSheetItem::fontSize() const
-{
- return d->fontsize;
-}
-
-
-/*!
- Returns the font family setting of the style. This is either a
- valid font family or TQString::null if no family has been set.
-
- \sa setFontFamily(), TQFont::family(), TQFont::setFamily()
-*/
-TQString TQStyleSheetItem::fontFamily() const
-{
- return d->fontfamily;
-}
-
-/*!
- Sets the font family setting of the style to \a fam.
-
- \sa fontFamily(), TQFont::family(), TQFont::setFamily()
-*/
-void TQStyleSheetItem::setFontFamily( const TQString& fam)
-{
- d->fontfamily = fam;
-}
-
-
-/*!\obsolete
- Returns the number of columns for this style.
-
- \sa setNumberOfColumns(), displayMode(), setDisplayMode()
-
- */
-int TQStyleSheetItem::numberOfColumns() const
-{
- return d->ncolumns;
-}
-
-
-/*!\obsolete
- Sets the number of columns for this style. Elements in the style
- are divided into columns.
-
- This makes sense only if the style uses a block display mode
- (see TQStyleSheetItem::DisplayMode).
-
- \sa numberOfColumns()
- */
-void TQStyleSheetItem::setNumberOfColumns(int ncols)
-{
- if (ncols > 0)
- d->ncolumns = ncols;
-}
-
-
-/*!
- Returns the text color of this style or an invalid color if no
- color has been set.
-
- \sa setColor() TQColor::isValid()
-*/
-TQColor TQStyleSheetItem::color() const
-{
- return d->col;
-}
-
-/*!
- Sets the text color of this style to \a c.
-
- \sa color()
-*/
-void TQStyleSheetItem::setColor( const TQColor &c)
-{
- d->col = c;
-}
-
-/*!
- Returns whether this style is an anchor.
-
- \sa setAnchor()
-*/
-bool TQStyleSheetItem::isAnchor() const
-{
- return d->anchor;
-}
-
-/*!
- If \a anc is TRUE, sets this style to be an anchor (hypertext
- link); otherwise sets it to not be an anchor. Elements in this
- style link to other documents or anchors.
-
- \sa isAnchor()
-*/
-void TQStyleSheetItem::setAnchor(bool anc)
-{
- d->anchor = anc;
-}
-
-
-/*!
- Returns the whitespace mode.
-
- \sa setWhiteSpaceMode() WhiteSpaceMode
-*/
-TQStyleSheetItem::WhiteSpaceMode TQStyleSheetItem::whiteSpaceMode() const
-{
- return d->whitespacemode;
-}
-
-/*!
- Sets the whitespace mode to \a m.
-
- \sa WhiteSpaceMode
-*/
-void TQStyleSheetItem::setWhiteSpaceMode(WhiteSpaceMode m)
-{
- d->whitespacemode = m;
-}
-
-
-/*!
- Returns the width of margin \a m in pixels.
-
- The margin, \a m, can be \c MarginLeft, \c MarginRight, \c
- MarginTop, \c MarginBottom, or \c MarginFirstLine.
-
- \sa setMargin() Margin
-*/
-int TQStyleSheetItem::margin(Margin m) const
-{
- if (m == MarginAll ) {
- return d->margin[MarginLeft];
- } else if (m == MarginVertical) {
- return d->margin[MarginTop];
- } else if (m == MarginHorizontal) {
- return d->margin[MarginLeft];
- } else {
- return d->margin[m];
- }
-}
-
-
-/*!
- Sets the width of margin \a m to \a v pixels.
-
- The margin, \a m, can be \c MarginLeft, \c MarginRight, \c
- MarginTop, \c MarginBottom, \c MarginFirstLine, \c MarginAll,
- \c MarginVertical or \c MarginHorizontal. The value \a v must
- be >= 0.
-
- \sa margin()
-*/
-void TQStyleSheetItem::setMargin(Margin m, int v)
-{
- if (m == MarginAll) {
- d->margin[MarginLeft] = v;
- d->margin[MarginRight] = v;
- d->margin[MarginTop] = v;
- d->margin[MarginBottom] = v;
- } else if (m == MarginVertical ) {
- d->margin[MarginTop] = v;
- d->margin[MarginBottom] = v;
- } else if (m == MarginHorizontal ) {
- d->margin[MarginLeft] = v;
- d->margin[MarginRight] = v;
- } else {
- d->margin[m] = v;
- }
-}
-
-
-/*!
- Returns the list style of the style.
-
- \sa setListStyle() ListStyle
- */
-TQStyleSheetItem::ListStyle TQStyleSheetItem::listStyle() const
-{
- return d->list;
-}
-
-/*!
- \enum TQStyleSheetItem::ListStyle
-
- This enum type defines how the items in a list are prefixed when
- displayed.
-
- \value ListDisc a filled circle (i.e. a bullet)
- \value ListCircle an unfilled circle
- \value ListSquare a filled square
- \value ListDecimal an integer in base 10: \e 1, \e 2, \e 3, ...
- \value ListLowerAlpha a lowercase letter: \e a, \e b, \e c, ...
- \value ListUpperAlpha an uppercase letter: \e A, \e B, \e C, ...
-*/
-
-/*!
- Sets the list style of the style to \a s.
-
- This is used by nested elements that have a display mode of \c
- DisplayListItem.
-
- \sa listStyle() DisplayMode ListStyle
-*/
-void TQStyleSheetItem::setListStyle(ListStyle s)
-{
- d->list=s;
-}
-
-
-/*!
- Returns a space-separated list of names of styles that may contain
- elements of this style. If nothing has been set, contexts()
- returns an empty string, which indicates that this style can be
- nested everywhere.
-
- \sa setContexts()
-*/
-TQString TQStyleSheetItem::contexts() const
-{
- return d->contxt;
-}
-
-/*!
- Sets a space-separated list of names of styles that may contain
- elements of this style. If \a c is empty, the style can be nested
- everywhere.
-
- \sa contexts()
-*/
-void TQStyleSheetItem::setContexts( const TQString& c)
-{
- d->contxt = TQChar(' ') + c + TQChar(' ');
-}
-
-/*!
- Returns TRUE if this style can be nested into an element of style
- \a s; otherwise returns FALSE.
-
- \sa contexts(), setContexts()
-*/
-bool TQStyleSheetItem::allowedInContext( const TQStyleSheetItem* s) const
-{
- if ( d->contxt.isEmpty() )
- return TRUE;
- return d->contxt.find( TQChar(' ')+s->name()+TQChar(' ')) != -1;
-}
-
-
-/*!
- Returns TRUE if this style has self-nesting enabled; otherwise
- returns FALSE.
-
- \sa setSelfNesting()
-*/
-bool TQStyleSheetItem::selfNesting() const
-{
- return d->selfnest;
-}
-
-/*!
- Sets the self-nesting property for this style to \a nesting.
-
- In order to support "dirty" HTML, paragraphs \c{<p>} and list
- items \c{<li>} are not self-nesting. This means that starting a
- new paragraph or list item automatically closes the previous one.
-
- \sa selfNesting()
-*/
-void TQStyleSheetItem::setSelfNesting( bool nesting )
-{
- d->selfnest = nesting;
-}
-
-/*!
- \internal
- Sets the linespacing to be at least \a ls pixels.
-
- For compatibility with previous TQt releases, small values get
- treated differently: If \a ls is smaller than the default font
- line spacing in pixels at parse time, the resulting line spacing
- is the sum of the default line spacing plus \a ls. We recommend
- not relying on this behavior.
-*/
-
-void TQStyleSheetItem::setLineSpacing( int ls )
-{
- d->lineSpacing = ls;
-}
-
-/*!
- \obsolete
-
- Returns the linespacing
-*/
-
-int TQStyleSheetItem::lineSpacing() const
-{
- return d->lineSpacing;
-}
-
-//************************************************************************
-
-
-
-
-//************************************************************************
-
-
-/*!
- \class TQStyleSheet tqstylesheet.h
- \ingroup text
- \brief The TQStyleSheet class is a collection of styles for rich text
- rendering and a generator of tags.
-
- \ingroup graphics
- \ingroup helpsystem
-
- By creating TQStyleSheetItem objects for a style sheet you build a
- definition of a set of tags. This definition will be used by the
- internal rich text rendering system to parse and display text
- documents to which the style sheet applies. Rich text is normally
- visualized in a TQTextEdit or a TQTextBrowser. However, TQLabel,
- TQWhatsThis and TQMessageBox also support it, and other classes are
- likely to follow. With TQSimpleRichText it is possible to use the
- rich text renderer for custom widgets as well.
-
- The default TQStyleSheet object has the following style bindings,
- sorted by structuring bindings, anchors, character style bindings
- (i.e. inline styles), special elements such as horizontal lines or
- images, and other tags. In addition, rich text supports simple
- HTML tables.
-
- The structuring tags are
- \table
- \header \i Structuring tags \i Notes
- \row \i \c{<qt>}...\c{</qt>}
- \i A TQt rich text document. It understands the following
- attributes:
- \list
- \i \c title -- The caption of the document. This attribute is
- easily accessible with TQTextEdit::documentTitle().
- \i \c type -- The type of the document. The default type is \c
- page. It indicates that the document is displayed in a
- page of its own. Another style is \c detail, which can be
- used to explain certain expressions in more detail in a
- few sentences. For \c detail, TQTextBrowser will then keep
- the current page and display the new document in a small
- popup similar to TQWhatsThis. Note that links will not work
- in documents with \c{<qt type="detail">...</qt>}.
- \i \c bgcolor -- The background color, for example \c
- bgcolor="yellow" or \c bgcolor="#0000FF".
- \i \c background -- The background pixmap, for example \c
- background="granite.xpm". The pixmap name will be resolved
- by a TQMimeSourceFactory().
- \i \c text -- The default text color, for example \c text="red".
- \i \c link -- The link color, for example \c link="green".
- \endlist
- \row \i \c{<h1>...</h1>}
- \i A top-level heading.
- \row \i \c{<h2>...</h2>}
- \i A sublevel heading.
- \row \i \c{<h3>...</h3>}
- \i A sub-sublevel heading.
- \row \i \c{<h4>...</h4>} \c{<h5>...</h5>}
- \i Headings of lesser importance.
- \row \i \c{<p>...</p>}
- \i A left-aligned paragraph. Adjust the tqalignment with the \c
- align attribute. Possible values are \c left, \c right and
- \c center.
- \row \i \c{<center>...}<br>\c{</center>}
- \i A centered paragraph.
- \row \i \c{<blockquote>...}<br>\c{</blockquote>}
- \i An indented paragraph that is useful for quotes.
- \row \i \c{<ul>...</ul>}
- \i An unordered list. You can also pass a type argument to
- define the bullet style. The default is \c type=disc;
- other types are \c circle and \c square.
- \row \i \c{<ol>...</ol>}
- \i An ordered list. You can also pass a type argument to
- define the enumeration label style. The default is \c
- type="1"; other types are \c "a" and \c "A".
- \row \i \c{<li>...</li>}
- \i A list item. This tag can be used only within the context
- of \c{<ol>} or \c{<ul>}.
- \row \i \c{<dl>...</dl>}
- \i A list of definitions, consisting of terms and descriptions.
- \row \i \c{<dt>...</dt>}
- \i A term in a list of definitions. This tag can be used only
- in the context of \c{<dl>...</dl>}.
- \row \i \c{<dd>...</dd>}
- \i A description in a list of definitions. This tag can be
- used only in the context of \c{<dl>...</dl>}.
- \row \i \c{<pre>...</pre>}
- \i For larger chunks of code. Whitespaces in the contents are
- preserved. For small bits of code use the inline-style \c
- code.
- \row \i \c{<div>...</div>} and \c{<span>...</span>}
- \i Block grouping elements. These are used to structure the
- document, and are often used to provide hints about the
- intended presentation of the document.
- \endtable
-
- Anchors and links are done with a single tag:
- \table
- \header \i Anchor tags \i Notes
- \row \i \c{<a>...</a>}
- \i An anchor or link.
- \list
- \i A link is created by using an \c href
- attribute, for example
- <br>\c{<a href="target.qml">Link Text</a>}. Links to
- targets within a document are achieved in the same way
- as for HTML, e.g.
- <br>\c{<a href="target.qml#subtitle">Link Text</a>}.
- \i A target is created by using a \c name
- attribute, for example
- <br>\c{<a name="subtitle"><h2>Sub Title</h2></a>}.
- \endlist
- \endtable
-
- The default character style bindings are
- \table
- \header \i Style tags \i Notes
- \row \i \c{<em>...</em>}
- \i Emphasized. By default this is the same as \c{<i>...</i>}
- (italic).
- \row \i \c{<strong>...</strong>}
- \i Strong. By default this is the same as \c{<b>...</b>}
- (bold).
- \row \i \c{<i>...</i>}
- \i Italic font style.
- \row \i \c{<b>...</b>}
- \i Bold font style.
- \row \i \c{<u>...</u>}
- \i Underlined font style.
- \row \i \c{<s>...</s>}
- \i Strike out font style.
- \row \i \c{<big>...</big>}
- \i A larger font size.
- \row \i \c{<small>...</small>}
- \i A smaller font size.
- \row \i \c{<sub>...</sub>}
- \i Subscripted text
- \row \i \c{<sup>...</sup>}
- \i Superscripted text
- \row \i \c{<code>...</code>}
- \i Indicates code. By default this is the same as
- \c{<tt>...</tt>} (typewriter). For larger chunks of code
- use the block-tag \c{<}\c{pre>}.
- \row \i \c{<tt>...</tt>}
- \i Typewriter font style.
- \row \i \c{<font>...</font>}
- \i Customizes the font size, family and text color. The tag
- understands the following attributes:
- \list
- \i \c color -- The text color, for example \c color="red" or
- \c color="#FF0000".
- \i \c size -- The logical size of the font. Logical sizes 1
- to 7 are supported. The value may either be absolute
- (for example, \c size=3) or relative (\c size=-2). In
- the latter case the sizes are simply added.
- \i \c face -- The family of the font, for example \c face=times.
- \endlist
- \endtable
-
- Special elements are:
- \table
- \header \i Special tags \i Notes
- \row \i \c{<img>}
- \i An image. The image name for the mime source factory is
- given in the source attribute, for example
- \c{<img src="qt.xpm">} The image tag also understands the
- attributes \c width and \c height that determine the size
- of the image. If the pixmap does not fit the specified
- size it will be scaled automatically (by using
- TQImage::smoothScale()).
- <br>
- The \c align attribute determines where the image is
- placed. By default, an image is placed inline just like a
- normal character. Specify \c left or \c right to place the
- image at the respective side.
- \row \i \c{<hr>}
- \i A horizontal line.
- \row \i \c{<br>}
- \i A line break.
- \row \i \c{<nobr>...</nobr>}
- \i No break. Prevents word wrap.
- \endtable
-
- In addition, rich text supports simple HTML tables. A table
- consists of one or more rows each of which contains one or more
- cells. Cells are either data cells or header cells, depending on
- their content. Cells which span rows and columns are supported.
-
- \table
- \header \i Table tags \i Notes
- \row \i \c{<table>...</table>}
- \i A table. Tables support the following attributes:
- \list
- \i \c bgcolor -- The background color.
- \i \c width -- The table width. This is either an absolute
- pixel width or a relative percentage of the table's
- width, for example \c width=80%.
- \i \c border -- The width of the table border. The default is
- 0 (= no border).
- \i \c cellspacing -- Additional space around the table cells.
- The default is 2.
- \i \c cellpadding -- Additional space around the contents of
- table cells. The default is 1.
- \endlist
- \row \i \c{<tr>...</tr>}
- \i A table row. This is only valid within a \c table. Rows
- support the following attribute:
- \list
- \i \c bgcolor -- The background color.
- \endlist
- \row \i \c{<th>...</th>}
- \i A table header cell. Similar to \c td, but defaults to
- center tqalignment and a bold font.
- \row \i \c{<td>...</td>}
- \i A table data cell. This is only valid within a \c tr.
- Cells support the following attributes:
- \list
- \i \c bgcolor -- The background color.
- \i \c width -- The cell width. This is either an absolute
- pixel width or a relative percentage of table's width,
- for example \c width=50%.
- \i \c colspan -- Specifies how many columns this cell spans.
- The default is 1.
- \i \c rowspan -- Specifies how many rows this cell spans. The
- default is 1.
- \i \c align -- Alignment; possible values are \c left, \c
- right, and \c center. The default is \c left.
- \i \c valign -- Vertical tqalignment; possible values are \c
- top, \c middle, and \c bottom. The default is \c middle.
- \endlist
- \endtable
-*/
-
-/*!
- Creates a style sheet called \a name, with parent \a parent. Like
- any TQObject it will be deleted when its parent is destroyed (if
- the child still exists).
-
- By default the style sheet has the tag definitions defined above.
-*/
-TQStyleSheet::TQStyleSheet( TQObject *parent, const char *name )
- : TQObject( parent, name )
-{
- init();
-}
-
-/*!
- Destroys the style sheet. All styles inserted into the style sheet
- will be deleted.
-*/
-TQStyleSheet::~TQStyleSheet()
-{
-}
-
-/*!
- \internal
- Initialized the style sheet to the basic TQt style.
-*/
-void TQStyleSheet::init()
-{
- styles.setAutoDelete( TRUE );
-
- nullstyle = new TQStyleSheetItem( this,
- TQString::tqfromLatin1("") );
-
- TQStyleSheetItem* style;
-
- style = new TQStyleSheetItem( this, "qml" ); // compatibility
- style->setDisplayMode( TQStyleSheetItem::DisplayBlock );
-
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("qt") );
- style->setDisplayMode( TQStyleSheetItem::DisplayBlock );
-
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("a") );
- style->setAnchor( TRUE );
-
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("em") );
- style->setFontItalic( TRUE );
-
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("i") );
- style->setFontItalic( TRUE );
-
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("big") );
- style->setLogicalFontSizeStep( 1 );
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("large") ); // compatibility
- style->setLogicalFontSizeStep( 1 );
-
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("small") );
- style->setLogicalFontSizeStep( -1 );
-
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("strong") );
- style->setFontWeight( TQFont::Bold);
-
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("b") );
- style->setFontWeight( TQFont::Bold);
-
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("h1") );
- style->setFontWeight( TQFont::Bold);
- style->setLogicalFontSize(6);
- style->setDisplayMode(TQStyleSheetItem::DisplayBlock);
- style-> setMargin(TQStyleSheetItem::MarginTop, 18);
- style-> setMargin(TQStyleSheetItem::MarginBottom, 12);
-
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("h2") );
- style->setFontWeight( TQFont::Bold);
- style->setLogicalFontSize(5);
- style->setDisplayMode(TQStyleSheetItem::DisplayBlock);
- style-> setMargin(TQStyleSheetItem::MarginTop, 16);
- style-> setMargin(TQStyleSheetItem::MarginBottom, 12);
-
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("h3") );
- style->setFontWeight( TQFont::Bold);
- style->setLogicalFontSize(4);
- style->setDisplayMode(TQStyleSheetItem::DisplayBlock);
- style-> setMargin(TQStyleSheetItem::MarginTop, 14);
- style-> setMargin(TQStyleSheetItem::MarginBottom, 12);
-
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("h4") );
- style->setFontWeight( TQFont::Bold);
- style->setLogicalFontSize(3);
- style->setDisplayMode(TQStyleSheetItem::DisplayBlock);
- style-> setMargin(TQStyleSheetItem::MarginVertical, 12);
-
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("h5") );
- style->setFontWeight( TQFont::Bold);
- style->setLogicalFontSize(2);
- style->setDisplayMode(TQStyleSheetItem::DisplayBlock);
- style-> setMargin(TQStyleSheetItem::MarginTop, 12);
- style-> setMargin(TQStyleSheetItem::MarginBottom, 4);
-
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("p") );
- style->setDisplayMode(TQStyleSheetItem::DisplayBlock);
- style-> setMargin(TQStyleSheetItem::MarginVertical, 12);
- style->setSelfNesting( FALSE );
-
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("center") );
- style->setDisplayMode(TQStyleSheetItem::DisplayBlock);
- style->tqsetAlignment( Qt::AlignCenter );
-
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("twocolumn") );
- style->setDisplayMode(TQStyleSheetItem::DisplayBlock);
- style->setNumberOfColumns( 2 );
-
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("multicol") );
- style->setDisplayMode(TQStyleSheetItem::DisplayBlock);
- (void) new TQStyleSheetItem( this, TQString::tqfromLatin1("font") );
-
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("ul") );
- style->setDisplayMode(TQStyleSheetItem::DisplayBlock);
- style->setListStyle( TQStyleSheetItem::ListDisc );
- style-> setMargin(TQStyleSheetItem::MarginVertical, 12);
- style->setMargin( TQStyleSheetItem::MarginLeft, 40 );
-
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("ol") );
- style->setDisplayMode(TQStyleSheetItem::DisplayBlock);
- style->setListStyle( TQStyleSheetItem::ListDecimal );
- style-> setMargin(TQStyleSheetItem::MarginVertical, 12);
- style->setMargin( TQStyleSheetItem::MarginLeft, 40 );
-
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("li") );
- style->setDisplayMode(TQStyleSheetItem::DisplayListItem);
- style->setSelfNesting( FALSE );
-
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("code") );
- style->setFontFamily( TQString::tqfromLatin1("Courier New,courier") );
-
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("tt") );
- style->setFontFamily( TQString::tqfromLatin1("Courier New,courier") );
-
- new TQStyleSheetItem(this, TQString::tqfromLatin1("img"));
- new TQStyleSheetItem(this, TQString::tqfromLatin1("br"));
- new TQStyleSheetItem(this, TQString::tqfromLatin1("hr"));
-
- style = new TQStyleSheetItem(this, TQString::tqfromLatin1("sub"));
- style->setVerticalAlignment( TQStyleSheetItem::VAlignSub );
- style = new TQStyleSheetItem(this, TQString::tqfromLatin1("sup"));
- style->setVerticalAlignment( TQStyleSheetItem::VAlignSuper );
-
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("pre") );
- style->setFontFamily( TQString::tqfromLatin1("Courier New,courier") );
- style->setDisplayMode(TQStyleSheetItem::DisplayBlock);
- style->setWhiteSpaceMode(TQStyleSheetItem::WhiteSpacePre);
- style-> setMargin(TQStyleSheetItem::MarginVertical, 12);
-
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("blockquote") );
- style->setDisplayMode(TQStyleSheetItem::DisplayBlock);
- style->setMargin(TQStyleSheetItem::MarginHorizontal, 40 );
-
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("head") );
- style->setDisplayMode(TQStyleSheetItem::DisplayNone);
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("body") );
- style->setDisplayMode(TQStyleSheetItem::DisplayBlock);
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("div") );
- style->setDisplayMode(TQStyleSheetItem::DisplayBlock) ;
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("span") );
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("dl") );
- style-> setMargin(TQStyleSheetItem::MarginVertical, 8);
- style->setDisplayMode(TQStyleSheetItem::DisplayBlock);
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("dt") );
- style->setDisplayMode(TQStyleSheetItem::DisplayBlock);
- style->setContexts(TQString::tqfromLatin1("dl") );
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("dd") );
- style->setDisplayMode(TQStyleSheetItem::DisplayBlock);
- style->setMargin(TQStyleSheetItem::MarginLeft, 30);
- style->setContexts(TQString::tqfromLatin1("dt dl") );
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("u") );
- style->setFontUnderline( TRUE);
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("s") );
- style->setFontStrikeOut( TRUE);
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("nobr") );
- style->setWhiteSpaceMode( TQStyleSheetItem::WhiteSpaceNoWrap );
-
- // compatibily with some minor 3.0.x TQt versions that had an
- // undocumented <wsp> tag. ### Remove 3.1
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("wsp") );
- style->setWhiteSpaceMode( TQStyleSheetItem::WhiteSpacePre );
-
- // tables
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("table") );
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("tr") );
- style->setContexts(TQString::tqfromLatin1("table"));
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("td") );
- style->setContexts(TQString::tqfromLatin1("tr"));
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("th") );
- style->setFontWeight( TQFont::Bold );
- style->tqsetAlignment( TQt::AlignCenter );
- style->setContexts(TQString::tqfromLatin1("tr"));
-
- style = new TQStyleSheetItem( this, TQString::tqfromLatin1("html") );
-}
-
-
-
-static TQStyleSheet* defaultsheet = 0;
-static TQSingleCleanupHandler<TQStyleSheet> qt_cleanup_stylesheet;
-
-/*!
- Returns the application-wide default style sheet. This style sheet
- is used by rich text rendering classes such as TQSimpleRichText,
- TQWhatsThis and TQMessageBox to define the rendering style and
- available tags within rich text documents. It also serves as the
- initial style sheet for the more complex render widgets, TQTextEdit
- and TQTextBrowser.
-
- \sa setDefaultSheet()
-*/
-TQStyleSheet* TQStyleSheet::defaultSheet()
-{
- if (!defaultsheet) {
- defaultsheet = new TQStyleSheet();
- qt_cleanup_stylesheet.set( &defaultsheet );
- }
- return defaultsheet;
-}
-
-/*!
- Sets the application-wide default style sheet to \a sheet,
- deleting any style sheet previously set. The ownership is
- transferred to TQStyleSheet.
-
- \sa defaultSheet()
-*/
-void TQStyleSheet::setDefaultSheet( TQStyleSheet* sheet)
-{
- if ( defaultsheet != sheet ) {
- if ( defaultsheet )
- qt_cleanup_stylesheet.reset();
- delete defaultsheet;
- }
- defaultsheet = sheet;
- if ( defaultsheet )
- qt_cleanup_stylesheet.set( &defaultsheet );
-}
-
-/*!\internal
- Inserts \a style. Any tags generated after this time will be
- bound to this style. Note that \a style becomes owned by the
- style sheet and will be deleted when the style sheet is destroyed.
-*/
-void TQStyleSheet::insert( TQStyleSheetItem* style )
-{
- styles.insert(style->name(), style);
-}
-
-
-/*!
- Returns the style called \a name or 0 if there is no such style.
-*/
-TQStyleSheetItem* TQStyleSheet::item( const TQString& name)
-{
- if ( name.isNull() )
- return 0;
- return styles[name];
-}
-
-/*!
- \overload
-
- Returns the style called \a name or 0 if there is no such style
- (const version)
-*/
-const TQStyleSheetItem* TQStyleSheet::item( const TQString& name) const
-{
- if ( name.isNull() )
- return 0;
- return styles[name];
-}
-
-
-/*!
- \preliminary
-
- Generates an internal object for the tag called \a name, given the
- attributes \a attr, and using additional information provided by
- the mime source factory \a factory.
-
- \a context is the optional context of the document, i.e. the path
- to look for relative links. This becomes important if the text
- contains relative references, for example within image tags.
- TQSimpleRichText always uses the default mime source factory (see
- \l{TQMimeSourceFactory::defaultFactory()}) to resolve these
- references. The context will then be used to calculate the
- absolute path. See TQMimeSourceFactory::makeAbsolute() for details.
-
- \a emptyTag and \a doc are for internal use only.
-
- This function should not be used in application code.
-*/
-#ifndef TQT_NO_TEXTCUSTOMITEM
-TQTextCustomItem* TQStyleSheet::tag( const TQString& name,
- const TQMap<TQString, TQString> &attr,
- const TQString& context,
- const TQMimeSourceFactory& factory,
- bool /*emptyTag */, TQTextDocument *doc ) const
-{
- const TQStyleSheetItem* style = item( name );
- // first some known tags
- if ( !style )
- return 0;
- if ( style->name() == "img" )
- return new TQTextImage( doc, attr, context, (TQMimeSourceFactory&)factory );
- if ( style->name() == "hr" )
- return new TQTextHorizontalLine( doc, attr, context, (TQMimeSourceFactory&)factory );
- return 0;
-}
-#endif
-
-
-/*! Auxiliary function. Converts the plain text string \a plain to a
- rich text formatted paragraph while preserving most of its look.
-
- \a mode defines the whitespace mode. Possible values are \c
- TQStyleSheetItem::WhiteSpacePre (no wrapping, all whitespaces
- preserved) and \c TQStyleSheetItem::WhiteSpaceNormal (wrapping,
- simplified whitespaces).
-
- \sa escape()
-*/
-TQString TQStyleSheet::convertFromPlainText( const TQString& plain, TQStyleSheetItem::WhiteSpaceMode mode )
-{
- int col = 0;
- TQString rich;
- rich += "<p>";
- for ( int i = 0; i < int(plain.length()); ++i ) {
- if ( plain[i] == '\n' ){
- int c = 1;
- while ( i+1 < int(plain.length()) && plain[i+1] == '\n' ) {
- i++;
- c++;
- }
- if ( c == 1)
- rich += "<br>\n";
- else {
- rich += "</p>\n";
- while ( --c > 1 )
- rich += "<br>\n";
- rich += "<p>";
- }
- col = 0;
- } else {
- if ( mode == TQStyleSheetItem::WhiteSpacePre && plain[i] == '\t' ){
- rich += 0x00a0U;
- ++col;
- while ( col % 8 ) {
- rich += 0x00a0U;
- ++col;
- }
- }
- else if ( mode == TQStyleSheetItem::WhiteSpacePre && plain[i].isSpace() )
- rich += 0x00a0U;
- else if ( plain[i] == '<' )
- rich +="&lt;";
- else if ( plain[i] == '>' )
- rich +="&gt;";
- else if ( plain[i] == '&' )
- rich +="&amp;";
- else
- rich += plain[i];
- ++col;
- }
- }
- if ( col != 0 )
- rich += "</p>";
- return rich;
-}
-
-/*!
- Auxiliary function. Converts the plain text string \a plain to a
- rich text formatted string with any HTML meta-characters escaped.
-
- \sa convertFromPlainText()
-*/
-TQString TQStyleSheet::escape( const TQString& plain)
-{
- TQString rich;
- for ( int i = 0; i < int(plain.length()); ++i ) {
- if ( plain[i] == '<' )
- rich +="&lt;";
- else if ( plain[i] == '>' )
- rich +="&gt;";
- else if ( plain[i] == '&' )
- rich +="&amp;";
- else
- rich += plain[i];
- }
- return rich;
-}
-
-// Must doc this enum somewhere, and it is logically related to TQStyleSheet
-
-/*!
- \enum TQt::TextFormat
-
- This enum is used in widgets that can display both plain text and
- rich text, e.g. TQLabel. It is used for deciding whether a text
- string should be interpreted as one or the other. This is normally
- done by passing one of the enum values to a setTextFormat()
- function.
-
- \value PlainText The text string is interpreted as a plain text
- string.
-
- \value RichText The text string is interpreted as a rich text
- string using the current TQStyleSheet::defaultSheet().
-
- \value AutoText The text string is interpreted as for \c RichText
- if TQStyleSheet::mightBeRichText() returns TRUE, otherwise as
- \c PlainText.
-
- \value LogText A special, limited text format which is only used
- by TQTextEdit in an optimized mode.
-*/
-
-/*!
- Returns TRUE if the string \a text is likely to be rich text;
- otherwise returns FALSE.
-
- This function uses a fast and therefore simple heuristic. It
- mainly checks whether there is something that looks like a tag
- before the first line break. Although the result may be correct
- for common cases, there is no guarantee.
-*/
-bool TQStyleSheet::mightBeRichText( const TQString& text)
-{
- if ( text.isEmpty() )
- return FALSE;
- int start = 0;
-
- while ( start < int(text.length()) && text[start].isSpace() )
- ++start;
- if ( TQT_TQSTRING(text.mid( start, 5 )).lower() == "<!doc" )
- return TRUE;
- int open = start;
- while ( open < int(text.length()) && text[open] != '<'
- && text[open] != '\n' ) {
- if ( text[open] == '&' && text.mid(open+1,3) == "lt;" )
- return TRUE; // support desperate attempt of user to see <...>
- ++open;
- }
- if ( open < (int)text.length() && text[open] == '<' ) {
- int close = text.find('>', open);
- if ( close > -1 ) {
- TQString tag;
- for (int i = open+1; i < close; ++i) {
- if ( text[i].isDigit() || text[i].isLetter() )
- tag += text[i];
- else if ( !tag.isEmpty() && text[i].isSpace() )
- break;
- else if ( !text[i].isSpace() && (!tag.isEmpty() || text[i] != '!' ) )
- return FALSE; // that's not a tag
- }
- return defaultSheet()->item( tag.lower() ) != 0;
- }
- }
- return FALSE;
-}
-
-
-/*!
- \fn void TQStyleSheet::error( const TQString& msg) const
-
- This virtual function is called when an error occurs when
- processing rich text. Reimplement it if you need to catch error
- messages.
-
- Errors might occur if some rich text strings contain tags that are
- not understood by the stylesheet, if some tags are nested
- incorrectly, or if tags are not closed properly.
-
- \a msg is the error message.
-*/
-void TQStyleSheet::error( const TQString& ) const
-{
-}
-
-
-/*!
- Scales the font \a font to the appropriate physical point size
- corresponding to the logical font size \a logicalSize.
-
- When calling this function, \a font has a point size corresponding
- to the logical font size 3.
-
- Logical font sizes range from 1 to 7, with 1 being the smallest.
-
- \sa TQStyleSheetItem::logicalFontSize(), TQStyleSheetItem::logicalFontSizeStep(), TQFont::setPointSize()
- */
-void TQStyleSheet::scaleFont( QFont& font, int logicalSize ) const
-{
- if ( logicalSize < 1 )
- logicalSize = 1;
- if ( logicalSize > 7 )
- logicalSize = 7;
- int baseSize = font.pointSize();
- bool pixel = FALSE;
- if ( baseSize == -1 ) {
- baseSize = font.pixelSize();
- pixel = TRUE;
- }
- int s;
- switch ( logicalSize ) {
- case 1:
- s = 7*baseSize/10;
- break;
- case 2:
- s = (8 * baseSize) / 10;
- break;
- case 4:
- s = (12 * baseSize) / 10;
- break;
- case 5:
- s = (15 * baseSize) / 10;
- break;
- case 6:
- s = 2 * baseSize;
- break;
- case 7:
- s = (24 * baseSize) / 10;
- break;
- default:
- s = baseSize;
- }
- if ( pixel )
- font.setPixelSize( s );
- else
- font.setPointSize( s );
-}
-
-#endif // TQT_NO_RICHTEXT