From 5f35b46aabdab414602d27bb92034c371bc09d2e Mon Sep 17 00:00:00 2001
From: Julian Smart <julian@anthemion.co.uk>
Date: Sat, 1 Jul 2006 20:30:58 +0000
Subject: [PATCH] First cut at wxRichTextCtrl documentation Put wxTextAttr into
 separate file to allow correct ordering

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39924 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 docs/latex/wx/category.tex                    |    2 +
 docs/latex/wx/classes.tex                     |   17 +
 docs/latex/wx/dcclipper.tex                   |    1 -
 docs/latex/wx/richtextattr.tex                |  640 +++++++++
 docs/latex/wx/richtextbuffer.tex              |  573 ++++++++
 .../wx/richtextcharacterstyledefinition.tex   |   27 +
 docs/latex/wx/richtextctrl.bmp                |  Bin 0 -> 351054 bytes
 docs/latex/wx/richtextctrl.gif                |  Bin 0 -> 60502 bytes
 docs/latex/wx/richtextctrl.tex                | 1205 +++++++++++++++++
 docs/latex/wx/richtextevent.tex               |   70 +
 docs/latex/wx/richtextfilehandler.tex         |  130 ++
 docs/latex/wx/richtexthtmlhandler.tex         |   27 +
 docs/latex/wx/richtextoverview.tex            |   34 +
 .../wx/richtextparagraphstyledefinition.tex   |   39 +
 docs/latex/wx/richtextrange.tex               |  122 ++
 docs/latex/wx/richtextstyledefinition.tex     |   72 +
 docs/latex/wx/richtextstylelistbox.tex        |   96 ++
 docs/latex/wx/richtextstylesheet.tex          |  104 ++
 docs/latex/wx/richtextxmlhandler.tex          |  104 ++
 docs/latex/wx/text.tex                        |  254 ----
 docs/latex/wx/textattr.tex                    |  252 ++++
 docs/latex/wx/textattrex.tex                  |  333 +++++
 docs/latex/wx/topics.tex                      |    1 +
 23 files changed, 3848 insertions(+), 255 deletions(-)
 create mode 100644 docs/latex/wx/richtextattr.tex
 create mode 100644 docs/latex/wx/richtextbuffer.tex
 create mode 100644 docs/latex/wx/richtextcharacterstyledefinition.tex
 create mode 100644 docs/latex/wx/richtextctrl.bmp
 create mode 100644 docs/latex/wx/richtextctrl.gif
 create mode 100644 docs/latex/wx/richtextctrl.tex
 create mode 100644 docs/latex/wx/richtextevent.tex
 create mode 100644 docs/latex/wx/richtextfilehandler.tex
 create mode 100644 docs/latex/wx/richtexthtmlhandler.tex
 create mode 100644 docs/latex/wx/richtextoverview.tex
 create mode 100644 docs/latex/wx/richtextparagraphstyledefinition.tex
 create mode 100644 docs/latex/wx/richtextrange.tex
 create mode 100644 docs/latex/wx/richtextstyledefinition.tex
 create mode 100644 docs/latex/wx/richtextstylelistbox.tex
 create mode 100644 docs/latex/wx/richtextstylesheet.tex
 create mode 100644 docs/latex/wx/richtextxmlhandler.tex
 create mode 100644 docs/latex/wx/textattr.tex
 create mode 100644 docs/latex/wx/textattrex.tex

diff --git a/docs/latex/wx/category.tex b/docs/latex/wx/category.tex
index f7a2271ebb..4c095c6535 100644
--- a/docs/latex/wx/category.tex
+++ b/docs/latex/wx/category.tex
@@ -103,6 +103,7 @@ that are not static can have \helpref{validators}{wxvalidator} associated with t
 \twocolitem{\helpref{wxListCtrl}{wxlistctrl}}{A control for displaying lists of strings and/or icons, plus a multicolumn report view}
 \twocolitem{\helpref{wxListView}{wxlistview}}{A simpler interface ({\it fa\c{c}ade} for wxListCtrl in report mode}
 \twocolitem{\helpref{wxOwnerDrawnComboBox}{wxownerdrawncombobox}}{A combobox with owner-drawn list items}
+\twocolitem{\helpref{wxRichTextCtrl}{wxrichtextctrl}}{Generic rich text editing control}
 \twocolitem{\helpref{wxTextCtrl}{wxtextctrl}}{Single or multiline text editing control}
 \twocolitem{\helpref{wxTreeCtrl}{wxtreectrl}}{Tree (hierarchy) control}
 \twocolitem{\helpref{wxScrollBar}{wxscrollbar}}{Scrollbar control}
@@ -263,6 +264,7 @@ An event object contains information about a specific event. Event handlers
 \twocolitem{\helpref{wxPaintEvent}{wxpaintevent}}{A paint event}
 \twocolitem{\helpref{wxProcessEvent}{wxprocessevent}}{A process ending event}
 \twocolitem{\helpref{wxQueryLayoutInfoEvent}{wxquerylayoutinfoevent}}{Used to query layout information}
+\twocolitem{\helpref{wxRichTextEvent}{wxrichtextevent}}{A rich text editing event}
 \twocolitem{\helpref{wxScrollEvent}{wxscrollevent}}{A scroll event from sliders, stand-alone scrollbars and spin buttons}
 \twocolitem{\helpref{wxScrollWinEvent}{wxscrollwinevent}}{A scroll event from scrolled windows}
 \twocolitem{\helpref{wxSizeEvent}{wxsizeevent}}{A size event}
diff --git a/docs/latex/wx/classes.tex b/docs/latex/wx/classes.tex
index 94fe59bc49..30138b1fb6 100644
--- a/docs/latex/wx/classes.tex
+++ b/docs/latex/wx/classes.tex
@@ -285,6 +285,21 @@
 \input regkey.tex
 \input renderer.tex
 \input rendver.tex
+
+\input richtextattr.tex
+\input richtextbuffer.tex
+\input richtextcharacterstyledefinition.tex
+\input richtextctrl.tex
+\input richtextevent.tex
+\input richtextfilehandler.tex
+\input richtexthtmlhandler.tex
+\input richtextparagraphstyledefinition.tex
+\input richtextrange.tex
+\input richtextstyledefinition.tex
+\input richtextstylelistbox.tex
+\input richtextstylesheet.tex
+\input richtextxmlhandler.tex
+
 \input sashevt.tex
 \input sashlayw.tex
 \input sashwin.tex
@@ -346,6 +361,8 @@
 \input tcpservr.tex
 \input tempfile.tex
 \input tempfilestrm.tex
+\input textattr.tex
+\input textattrex.tex
 \input text.tex
 \input txtdatob.tex
 \input txtdrptg.tex
diff --git a/docs/latex/wx/dcclipper.tex b/docs/latex/wx/dcclipper.tex
index e5dfdce39e..9c43cf2a10 100644
--- a/docs/latex/wx/dcclipper.tex
+++ b/docs/latex/wx/dcclipper.tex
@@ -60,4 +60,3 @@ and size (\arg{w} ad \arg{h}).
 
 The clipping region is automatically unset when this object is destroyed.
 
-
diff --git a/docs/latex/wx/richtextattr.tex b/docs/latex/wx/richtextattr.tex
new file mode 100644
index 0000000000..dad254d20c
--- /dev/null
+++ b/docs/latex/wx/richtextattr.tex
@@ -0,0 +1,640 @@
+\section{\class{wxRichTextAttr}}\label{wxrichtextattr}
+
+wxRichTextAttr represents the character and paragraph attributes, or style,
+for a range of text in a \helpref{wxRichTextCtrl}{wxrichtextctrl}. This class
+is specific to wxRichTextCtrl, although you can also use the
+standard \helpref{wxTextAttr}{wxtextattr} class with wxRichTextCtrl.
+
+When setting up a wxRichTextAttr object, pass a bitlist mask to \helpref{SetFlags}{wxrichtextattrsetflags} to
+indicate which style elements should be changed. As a convenience, when you call a setter such
+s SetFont, the relevant bit will be set.
+
+wxRichTextAttr stores attributes without a wxFont object, so is a much more
+efficient way to query styles than using a \helpref{wxTextAttr}{wxtextattr} or \helpref{wxTextAttrEx}{wxtextattrex} object.
+
+\wxheading{Derived from}
+
+No base class
+
+\wxheading{Include files}
+
+<wx/richtext/richtextbuffer.h>
+
+\wxheading{Constants}
+
+The following values can be passed to SetAlignment to determine
+paragraph alignment.
+
+{\small
+\begin{verbatim}
+enum wxTextAttrAlignment
+{
+    wxTEXT_ALIGNMENT_DEFAULT,
+    wxTEXT_ALIGNMENT_LEFT,
+    wxTEXT_ALIGNMENT_CENTRE,
+    wxTEXT_ALIGNMENT_CENTER = wxTEXT_ALIGNMENT_CENTRE,
+    wxTEXT_ALIGNMENT_RIGHT,
+    wxTEXT_ALIGNMENT_JUSTIFIED
+};
+\end{verbatim}
+}
+
+These values are passed in a bitlist to SetFlags to determine
+what attributes will be considered when setting the attributes
+for a text control.
+
+{\small
+\begin{verbatim}
+// Standard wxTextAttr constants
+
+#define wxTEXT_ATTR_TEXT_COLOUR             0x0001
+#define wxTEXT_ATTR_BACKGROUND_COLOUR       0x0002
+#define wxTEXT_ATTR_FONT_FACE               0x0004
+#define wxTEXT_ATTR_FONT_SIZE               0x0008
+#define wxTEXT_ATTR_FONT_WEIGHT             0x0010
+#define wxTEXT_ATTR_FONT_ITALIC             0x0020
+#define wxTEXT_ATTR_FONT_UNDERLINE          0x0040
+#define wxTEXT_ATTR_FONT \
+  wxTEXT_ATTR_FONT_FACE | wxTEXT_ATTR_FONT_SIZE | wxTEXT_ATTR_FONT_WEIGHT \
+| wxTEXT_ATTR_FONT_ITALIC | wxTEXT_ATTR_FONT_UNDERLINE
+#define wxTEXT_ATTR_ALIGNMENT               0x0080
+#define wxTEXT_ATTR_LEFT_INDENT             0x0100
+#define wxTEXT_ATTR_RIGHT_INDENT            0x0200
+#define wxTEXT_ATTR_TABS                    0x0400
+
+// Extra formatting flags not in wxTextAttr
+
+#define wxTEXT_ATTR_PARA_SPACING_AFTER      0x00000800
+#define wxTEXT_ATTR_PARA_SPACING_BEFORE     0x00001000
+#define wxTEXT_ATTR_LINE_SPACING            0x00002000
+#define wxTEXT_ATTR_CHARACTER_STYLE_NAME    0x00004000
+#define wxTEXT_ATTR_PARAGRAPH_STYLE_NAME    0x00008000
+#define wxTEXT_ATTR_BULLET_STYLE            0x00010000
+#define wxTEXT_ATTR_BULLET_NUMBER           0x00020000
+#define wxTEXT_ATTR_BULLET_SYMBOL           0x00040000
+\end{verbatim}
+}
+
+The following styles can be passed to wxRichTextAttr::SetBulletStyle:
+
+{\small
+\begin{verbatim}
+#define wxTEXT_ATTR_BULLET_STYLE_NONE           0x0000
+#define wxTEXT_ATTR_BULLET_STYLE_ARABIC         0x0001
+#define wxTEXT_ATTR_BULLET_STYLE_LETTERS_UPPER  0x0002
+#define wxTEXT_ATTR_BULLET_STYLE_LETTERS_LOWER  0x0004
+#define wxTEXT_ATTR_BULLET_STYLE_ROMAN_UPPER    0x0008
+#define wxTEXT_ATTR_BULLET_STYLE_ROMAN_LOWER    0x0010
+#define wxTEXT_ATTR_BULLET_STYLE_SYMBOL         0x0020
+#define wxTEXT_ATTR_BULLET_STYLE_BITMAP         0x0040
+#define wxTEXT_ATTR_BULLET_STYLE_PARENTHESES    0x0080
+#define wxTEXT_ATTR_BULLET_STYLE_PERIOD         0x0100
+\end{verbatim}
+}
+
+The following constants can be passed to wxRichTextAttr::SetLineSpacing:
+
+{\small
+\begin{verbatim}
+#define wxTEXT_ATTR_LINE_SPACING_NORMAL         10
+#define wxTEXT_ATTR_LINE_SPACING_HALF           15
+#define wxTEXT_ATTR_LINE_SPACING_TWICE          20
+\end{verbatim}
+}
+
+\wxheading{See also}
+
+\helpref{wxTextAttr}{wxtextattr}, \helpref{wxTextAttrEx}{wxtextattrex}, \helpref{wxRichTextCtrl}{wxrichtextctrl}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxRichTextAttr::wxRichTextAttr}\label{wxrichtextattrwxrichtextattr}
+
+\func{}{wxRichTextAttr}{\void}
+
+\func{}{wxRichTextAttr}{\param{const wxColour\& }{colText}, \param{const wxColour\& }{colBack = wxNullColour}, \param{wxTextAttrAlignment }{alignment = wxTEXT\_ALIGNMENT\_DEFAULT}}
+
+\func{}{wxRichTextAttr}{\param{const wxTextAttrEx\& }{attr}}
+
+Constructors.
+
+\membersection{wxRichTextAttr::CopyTo}\label{wxrichtextattrcopyto}
+
+\constfunc{void}{CopyTo}{\param{wxTextAttrEx\& }{attr}}
+
+Copies the wxRichTextAttr attributes to a \helpref{wxTextAttrEx}{wxtextattrex} object.
+
+\membersection{wxRichTextAttr::CreateFont}\label{wxrichtextattrcreatefont}
+
+\constfunc{wxFont}{CreateFont}{\void}
+
+Creates a font from the font attributes.
+
+\membersection{wxRichTextAttr::GetAlignment}\label{wxrichtextattrgetalignment}
+
+\constfunc{wxTextAttrAlignment}{GetAlignment}{\void}
+
+Returns the alignment flags.
+See \helpref{wxRichTextAttr::SetAlignment}{wxrichtextattrsetalignment} for a list of available styles.
+
+\membersection{wxRichTextAttr::GetBackgroundColour}\label{wxrichtextattrgetbackgroundcolour}
+
+\constfunc{const wxColour\&}{GetBackgroundColour}{\void}
+
+Returns the background colour.
+
+\membersection{wxRichTextAttr::GetBulletNumber}\label{wxrichtextattrgetbulletnumber}
+
+\constfunc{int}{GetBulletNumber}{\void}
+
+Returns the bullet number.
+
+\membersection{wxRichTextAttr::GetBulletStyle}\label{wxrichtextattrgetbulletstyle}
+
+\constfunc{int}{GetBulletStyle}{\void}
+
+Returns the bullet style.
+See \helpref{wxRichTextAttr::SetBulletStyle}{wxrichtextattrsetbulletstyle} for a list of available styles.
+
+\membersection{wxRichTextAttr::GetBulletSymbol}\label{wxrichtextattrgetbulletsymbol}
+
+\constfunc{wxChar}{GetBulletSymbol}{\void}
+
+Returns the bullet symbol, a character.
+
+\membersection{wxRichTextAttr::GetCharacterStyleName}\label{wxrichtextattrgetcharacterstylename}
+
+\constfunc{const wxString\&}{GetCharacterStyleName}{\void}
+
+Returns the name of the character style.
+
+\membersection{wxRichTextAttr::GetFlags}\label{wxrichtextattrgetflags}
+
+\constfunc{long}{GetFlags}{\void}
+
+Returns flags indicating which attributes are applicable.
+See \helpref{wxRichTextAttr::SetFlags}{wxrichtextattrsetflags} for a list of available flags.
+
+\membersection{wxRichTextAttr::GetFontAttributes}\label{wxrichtextattrgetfontattributes}
+
+\func{bool}{GetFontAttributes}{\param{const wxFont\& }{font}}
+
+Sets the font attributes from the given font.
+
+\membersection{wxRichTextAttr::GetFontFaceName}\label{wxrichtextattrgetfontfacename}
+
+\constfunc{const wxString\&}{GetFontFaceName}{\void}
+
+Returns the font face name.
+
+\membersection{wxRichTextAttr::GetFontSize}\label{wxrichtextattrgetfontsize}
+
+\constfunc{int}{GetFontSize}{\void}
+
+Returns the font size in points.
+
+\membersection{wxRichTextAttr::GetFontStyle}\label{wxrichtextattrgetfontstyle}
+
+\constfunc{int}{GetFontStyle}{\void}
+
+Returns the font style.
+
+\membersection{wxRichTextAttr::GetFontUnderlined}\label{wxrichtextattrgetfontunderlined}
+
+\constfunc{bool}{GetFontUnderlined}{\void}
+
+Returns \true if the font is underlined.
+
+\membersection{wxRichTextAttr::GetFontWeight}\label{wxrichtextattrgetfontweight}
+
+\constfunc{int}{GetFontWeight}{\void}
+
+Returns the font weight.
+
+\membersection{wxRichTextAttr::GetLeftIndent}\label{wxrichtextattrgetleftindent}
+
+\constfunc{long}{GetLeftIndent}{\void}
+
+Returns the left indent in tenths of a millimetre.
+
+\membersection{wxRichTextAttr::GetLeftSubIndent}\label{wxrichtextattrgetleftsubindent}
+
+\constfunc{long}{GetLeftSubIndent}{\void}
+
+Returns the left sub-indent in tenths of a millimetre.
+
+\membersection{wxRichTextAttr::GetLineSpacing}\label{wxrichtextattrgetlinespacing}
+
+\constfunc{int}{GetLineSpacing}{\void}
+
+Returns the line spacing value, one of wxTEXT\_ATTR\_LINE\_SPACING\_NORMAL,
+wxTEXT\_ATTR\_LINE\_SPACING\_HALF, and wxTEXT\_ATTR\_LINE\_SPACING\_TWICE.
+
+\membersection{wxRichTextAttr::GetParagraphSpacingAfter}\label{wxrichtextattrgetparagraphspacingafter}
+
+\constfunc{int}{GetParagraphSpacingAfter}{\void}
+
+Returns the space in tenths of a millimeter after the paragraph.
+
+\membersection{wxRichTextAttr::GetParagraphSpacingBefore}\label{wxrichtextattrgetparagraphspacingbefore}
+
+\constfunc{int}{GetParagraphSpacingBefore}{\void}
+
+Returns the space in tenths of a millimeter before the paragraph.
+
+\membersection{wxRichTextAttr::GetParagraphStyleName}\label{wxrichtextattrgetparagraphstylename}
+
+\constfunc{const wxString\&}{GetParagraphStyleName}{\void}
+
+Returns the name of the paragraph style.
+
+\membersection{wxRichTextAttr::GetRightIndent}\label{wxrichtextattrgetrightindent}
+
+\constfunc{long}{GetRightIndent}{\void}
+
+Returns the right indent in tenths of a millimeter.
+
+\membersection{wxRichTextAttr::GetTabs}\label{wxrichtextattrgettabs}
+
+\constfunc{const wxArrayInt\&}{GetTabs}{\void}
+
+Returns an array of tab stops, each expressed in tenths of a millimeter. Each stop
+is measured from the left margin and therefore each value must be larger than the last.
+
+\membersection{wxRichTextAttr::GetTextColour}\label{wxrichtextattrgettextcolour}
+
+\constfunc{const wxColour\&}{GetTextColour}{\void}
+
+Returns the text foreground colour.
+
+\membersection{wxRichTextAttr::HasAlignment}\label{wxrichtextattrhasalignment}
+
+\constfunc{bool}{HasAlignment}{\void}
+
+Returns \true if the attribute object specifies alignment.
+
+\membersection{wxRichTextAttr::HasBackgroundColour}\label{wxrichtextattrhasbackgroundcolour}
+
+\constfunc{bool}{HasBackgroundColour}{\void}
+
+Returns \true if the attribute object specifies a background colour.
+
+\membersection{wxRichTextAttr::HasBulletNumber}\label{wxrichtextattrhasbulletnumber}
+
+\constfunc{bool}{HasBulletNumber}{\void}
+
+Returns \true if the attribute object specifies a bullet number.
+
+\membersection{wxRichTextAttr::HasBulletStyle}\label{wxrichtextattrhasbulletstyle}
+
+\constfunc{bool}{HasBulletStyle}{\void}
+
+Returns \true if the attribute object specifies a bullet style.
+
+\membersection{wxRichTextAttr::HasBulletSymbol}\label{wxrichtextattrhasbulletsymbol}
+
+\constfunc{bool}{HasBulletSymbol}{\void}
+
+Returns \true if the attribute object specifies a bullet symbol.
+
+\membersection{wxRichTextAttr::HasCharacterStyleName}\label{wxrichtextattrhascharacterstylename}
+
+\constfunc{bool}{HasCharacterStyleName}{\void}
+
+Returns \true if the attribute object specifies a character style name.
+
+\membersection{wxRichTextAttr::HasFaceName}\label{wxrichtextattrhasfacename}
+
+\constfunc{bool}{HasFaceName}{\void}
+
+Returns \true if the attribute object specifies a font face name.
+
+\membersection{wxRichTextAttr::HasFlag}\label{wxrichtextattrhasflag}
+
+\constfunc{bool}{HasFlag}{\param{long }{flag}}
+
+Returns \true if the {\it flag} is present in the attribute object's flag bitlist.
+
+\membersection{wxRichTextAttr::HasFont}\label{wxrichtextattrhasfont}
+
+\constfunc{bool}{HasFont}{\void}
+
+Returns \true if the attribute object specifies any font attributes.
+
+\membersection{wxRichTextAttr::HasItalic}\label{wxrichtextattrhasitalic}
+
+\constfunc{bool}{HasItalic}{\void}
+
+Returns \true if the attribute object specifies italic style.
+
+\membersection{wxRichTextAttr::HasLeftIndent}\label{wxrichtextattrhasleftindent}
+
+\constfunc{bool}{HasLeftIndent}{\void}
+
+Returns \true if the attribute object specifies a left indent.
+
+\membersection{wxRichTextAttr::HasLineSpacing}\label{wxrichtextattrhaslinespacing}
+
+\constfunc{bool}{HasLineSpacing}{\void}
+
+Returns \true if the attribute object specifies line spacing.
+
+\membersection{wxRichTextAttr::HasParagraphSpacingAfter}\label{wxrichtextattrhasparagraphspacingafter}
+
+\constfunc{bool}{HasParagraphSpacingAfter}{\void}
+
+Returns \true if the attribute object specifies spacing after a paragraph.
+
+\membersection{wxRichTextAttr::HasParagraphSpacingBefore}\label{wxrichtextattrhasparagraphspacingbefore}
+
+\constfunc{bool}{HasParagraphSpacingBefore}{\void}
+
+Returns \true if the attribute object specifies spacing before a paragraph.
+
+\membersection{wxRichTextAttr::HasParagraphStyleName}\label{wxrichtextattrhasparagraphstylename}
+
+\constfunc{bool}{HasParagraphStyleName}{\void}
+
+Returns \true if the attribute object specifies a paragraph style name.
+
+\membersection{wxRichTextAttr::HasRightIndent}\label{wxrichtextattrhasrightindent}
+
+\constfunc{bool}{HasRightIndent}{\void}
+
+Returns \true if the attribute object specifies a right indent.
+
+\membersection{wxRichTextAttr::HasSize}\label{wxrichtextattrhassize}
+
+\constfunc{bool}{HasSize}{\void}
+
+Returns \true if the attribute object specifies a font point size.
+
+\membersection{wxRichTextAttr::HasTabs}\label{wxrichtextattrhastabs}
+
+\constfunc{bool}{HasTabs}{\void}
+
+Returns \true if the attribute object specifies tab stops.
+
+\membersection{wxRichTextAttr::HasTextColour}\label{wxrichtextattrhastextcolour}
+
+\constfunc{bool}{HasTextColour}{\void}
+
+Returns \true if the attribute object specifies a text foreground colour.
+
+\membersection{wxRichTextAttr::HasUnderlined}\label{wxrichtextattrhasunderlined}
+
+\constfunc{bool}{HasUnderlined}{\void}
+
+Returns \true if the attribute object specifies either underlining or no underlining.
+
+\membersection{wxRichTextAttr::HasWeight}\label{wxrichtextattrhasweight}
+
+\constfunc{bool}{HasWeight}{\void}
+
+Returns \true if the attribute object specifies font weight (bold, light or normal).
+
+\membersection{wxRichTextAttr::Init}\label{wxrichtextattrinit}
+
+\func{void}{Init}{\void}
+
+Initialise the object.
+
+\membersection{wxRichTextAttr::IsCharacterStyle}\label{wxrichtextattrischaracterstyle}
+
+\constfunc{bool}{IsCharacterStyle}{\void}
+
+Returns \true if the object represents a character style, that is,
+the flags specify a font or a text background or foreground colour.
+
+\membersection{wxRichTextAttr::IsDefault}\label{wxrichtextattrisdefault}
+
+\constfunc{bool}{IsDefault}{\void}
+
+Returns \false if we have any attributes set, \true otherwise.
+
+\membersection{wxRichTextAttr::IsParagraphStyle}\label{wxrichtextattrisparagraphstyle}
+
+\constfunc{bool}{IsParagraphStyle}{\void}
+
+Returns \true if the object represents a paragraph style, that is,
+the flags specify alignment, indentation, tabs, paragraph spacing, or
+bullet style.
+
+\membersection{wxRichTextAttr::SetAlignment}\label{wxrichtextattrsetalignment}
+
+\func{void}{SetAlignment}{\param{wxTextAttrAlignment }{alignment}}
+
+Sets the paragraph alignment. These are the possible values for {\it alignment}:
+
+{\small
+\begin{verbatim}
+enum wxTextAttrAlignment
+{
+    wxTEXT_ALIGNMENT_DEFAULT,
+    wxTEXT_ALIGNMENT_LEFT,
+    wxTEXT_ALIGNMENT_CENTRE,
+    wxTEXT_ALIGNMENT_CENTER = wxTEXT_ALIGNMENT_CENTRE,
+    wxTEXT_ALIGNMENT_RIGHT,
+    wxTEXT_ALIGNMENT_JUSTIFIED
+};
+\end{verbatim}
+}
+
+\membersection{wxRichTextAttr::SetBackgroundColour}\label{wxrichtextattrsetbackgroundcolour}
+
+\func{void}{SetBackgroundColour}{\param{const wxColour\& }{colBack}}
+
+Sets the background colour.
+
+\membersection{wxRichTextAttr::SetBulletNumber}\label{wxrichtextattrsetbulletnumber}
+
+\func{void}{SetBulletNumber}{\param{int }{n}}
+
+Sets the bullet number.
+
+\membersection{wxRichTextAttr::SetBulletStyle}\label{wxrichtextattrsetbulletstyle}
+
+\func{void}{SetBulletStyle}{\param{int }{style}}
+
+Sets the bullet style. The following styles can be passed:
+
+{\small
+\begin{verbatim}
+#define wxTEXT_ATTR_BULLET_STYLE_NONE           0x0000
+#define wxTEXT_ATTR_BULLET_STYLE_ARABIC         0x0001
+#define wxTEXT_ATTR_BULLET_STYLE_LETTERS_UPPER  0x0002
+#define wxTEXT_ATTR_BULLET_STYLE_LETTERS_LOWER  0x0004
+#define wxTEXT_ATTR_BULLET_STYLE_ROMAN_UPPER    0x0008
+#define wxTEXT_ATTR_BULLET_STYLE_ROMAN_LOWER    0x0010
+#define wxTEXT_ATTR_BULLET_STYLE_SYMBOL         0x0020
+#define wxTEXT_ATTR_BULLET_STYLE_BITMAP         0x0040
+#define wxTEXT_ATTR_BULLET_STYLE_PARENTHESES    0x0080
+#define wxTEXT_ATTR_BULLET_STYLE_PERIOD         0x0100
+\end{verbatim}
+}
+
+\membersection{wxRichTextAttr::SetBulletSymbol}\label{wxrichtextattrsetbulletsymbol}
+
+\func{void}{SetBulletSymbol}{\param{wxChar }{symbol}}
+
+Sets the paragraph symbol.
+
+\membersection{wxRichTextAttr::SetCharacterStyleName}\label{wxrichtextattrsetcharacterstylename}
+
+\func{void}{SetCharacterStyleName}{\param{const wxString\& }{name}}
+
+Sets the character style name.
+
+\membersection{wxRichTextAttr::SetFlags}\label{wxrichtextattrsetflags}
+
+\func{void}{SetFlags}{\param{long }{flags}}
+
+Sets the flags determining which styles are being specified. The following
+flags can be passed in a bitlist:
+
+{\small
+\begin{verbatim}
+// Standard wxTextAttr constants
+
+#define wxTEXT_ATTR_TEXT_COLOUR             0x0001
+#define wxTEXT_ATTR_BACKGROUND_COLOUR       0x0002
+#define wxTEXT_ATTR_FONT_FACE               0x0004
+#define wxTEXT_ATTR_FONT_SIZE               0x0008
+#define wxTEXT_ATTR_FONT_WEIGHT             0x0010
+#define wxTEXT_ATTR_FONT_ITALIC             0x0020
+#define wxTEXT_ATTR_FONT_UNDERLINE          0x0040
+#define wxTEXT_ATTR_FONT \
+  wxTEXT_ATTR_FONT_FACE | wxTEXT_ATTR_FONT_SIZE | wxTEXT_ATTR_FONT_WEIGHT \
+| wxTEXT_ATTR_FONT_ITALIC | wxTEXT_ATTR_FONT_UNDERLINE
+#define wxTEXT_ATTR_ALIGNMENT               0x0080
+#define wxTEXT_ATTR_LEFT_INDENT             0x0100
+#define wxTEXT_ATTR_RIGHT_INDENT            0x0200
+#define wxTEXT_ATTR_TABS                    0x0400
+
+// Extra formatting flags not in wxTextAttr
+
+#define wxTEXT_ATTR_PARA_SPACING_AFTER      0x00000800
+#define wxTEXT_ATTR_PARA_SPACING_BEFORE     0x00001000
+#define wxTEXT_ATTR_LINE_SPACING            0x00002000
+#define wxTEXT_ATTR_CHARACTER_STYLE_NAME    0x00004000
+#define wxTEXT_ATTR_PARAGRAPH_STYLE_NAME    0x00008000
+#define wxTEXT_ATTR_BULLET_STYLE            0x00010000
+#define wxTEXT_ATTR_BULLET_NUMBER           0x00020000
+#define wxTEXT_ATTR_BULLET_SYMBOL           0x00040000
+\end{verbatim}
+}
+
+\membersection{wxRichTextAttr::SetFontFaceName}\label{wxrichtextattrsetfontfacename}
+
+\func{void}{SetFontFaceName}{\param{const wxString\& }{faceName}}
+
+Sets the paragraph alignment.
+
+\membersection{wxRichTextAttr::SetFontSize}\label{wxrichtextattrsetfontsize}
+
+\func{void}{SetFontSize}{\param{int }{pointSize}}
+
+Sets the font size in points.
+
+\membersection{wxRichTextAttr::SetFontStyle}\label{wxrichtextattrsetfontstyle}
+
+\func{void}{SetFontStyle}{\param{int }{fontStyle}}
+
+Sets the font style (normal, italic or slanted).
+
+\membersection{wxRichTextAttr::SetFontUnderlined}\label{wxrichtextattrsetfontunderlined}
+
+\func{void}{SetFontUnderlined}{\param{bool }{underlined}}
+
+Sets the font underlining.
+
+\membersection{wxRichTextAttr::SetFontWeight}\label{wxrichtextattrsetfontweight}
+
+\func{void}{SetFontWeight}{\param{int }{fontWeight}}
+
+Sets the font weight.
+
+\membersection{wxRichTextAttr::SetLeftIndent}\label{wxrichtextattrsetleftindent}
+
+\func{void}{SetLeftIndent}{\param{int }{indent}, \param{int }{subIndent = 0}}
+
+Sets the left indent and left subindent in tenths of a millimetre.
+
+The sub-indent is an offset from the left of the paragraph, and is used for all but the
+first line in a paragraph. A positive value will cause the first line to appear to the left
+of the subsequent lines, and a negative value will cause the first line to be indented
+relative to the subsequent lines.
+
+wxRichTextBuffer uses indentation to render a bulleted item. The left indent is the distance between
+the margin and the bullet. The content of the paragraph, including the first line, starts
+at leftMargin + leftSubIndent. So the distance between the left edge of the bullet and the
+left of the actual paragraph is leftSubIndent.
+
+\membersection{wxRichTextAttr::SetLineSpacing}\label{wxrichtextattrsetlinespacing}
+
+\func{void}{SetLineSpacing}{\param{int }{spacing}}
+
+Sets the line spacing. {\it spacing} is a multiple, where 10 means single-spacing,
+15 means 1.5 spacing, and 20 means double spacing. The following constants are
+defined for convenience:
+
+{\small
+\begin{verbatim}
+#define wxTEXT_ATTR_LINE_SPACING_NORMAL         10
+#define wxTEXT_ATTR_LINE_SPACING_HALF           15
+#define wxTEXT_ATTR_LINE_SPACING_TWICE          20
+\end{verbatim}
+}
+
+\membersection{wxRichTextAttr::SetParagraphSpacingAfter}\label{wxrichtextattrsetparagraphspacingafter}
+
+\func{void}{SetParagraphSpacingAfter}{\param{int }{spacing}}
+
+Sets the spacing after a paragraph, in tenths of a millimetre.
+
+\membersection{wxRichTextAttr::SetParagraphSpacingBefore}\label{wxrichtextattrsetparagraphspacingbefore}
+
+\func{void}{SetParagraphSpacingBefore}{\param{int }{spacing}}
+
+Sets the spacing before a paragraph, in tenths of a millimetre.
+
+\membersection{wxRichTextAttr::SetParagraphStyleName}\label{wxrichtextattrsetparagraphstylename}
+
+\func{void}{SetParagraphStyleName}{\param{const wxString\& }{name}}
+
+Sets the name of the paragraph style.
+
+\membersection{wxRichTextAttr::SetRightIndent}\label{wxrichtextattrsetrightindent}
+
+\func{void}{SetRightIndent}{\param{int }{indent}}
+
+Sets the right indent in tenths of a millimetre.
+
+\membersection{wxRichTextAttr::SetTabs}\label{wxrichtextattrsettabs}
+
+\func{void}{SetTabs}{\param{const wxArrayInt\& }{tabs}}
+
+Sets the tab stops, expressed in tenths of a millimetre.
+Each stop is measured from the left margin and therefore each value must be larger than the last.
+
+\membersection{wxRichTextAttr::SetTextColour}\label{wxrichtextattrsettextcolour}
+
+\func{void}{SetTextColour}{\param{const wxColour\& }{colText}}
+
+Sets the text foreground colout.
+
+\membersection{wxRichTextAttr::operator=}\label{wxrichtextattroperatorassign}
+
+\func{void operator}{operator=}{\param{const wxTextAttrEx\& }{attr}}
+
+Assignment from a \helpref{wxTextAttrEx}{wxtextattr} object.
+
+\func{void operator}{operator=}{\param{const wxRichTextAttr\& }{attr}}
+
+Assignment from a \helpref{wxRichTextAttr}{wxrichtextattr} object.
+
+\membersection{wxRichTextAttr::wxTextAttrEx}\label{wxrichtextattrwxtextattrex}
+
+\constfunc{operator}{wxTextAttrEx}{\void}
+
+Makes a \helpref{wxTextAttrEx}{wxtextattrex} object from this object.
diff --git a/docs/latex/wx/richtextbuffer.tex b/docs/latex/wx/richtextbuffer.tex
new file mode 100644
index 0000000000..bcefb8c2f7
--- /dev/null
+++ b/docs/latex/wx/richtextbuffer.tex
@@ -0,0 +1,573 @@
+\section{\class{wxRichTextBuffer}}\label{wxrichtextbuffer}
+
+This class represents the whole buffer associated with a \helpref{wxRichTextCtrl}{wxrichtextctrl}.
+
+\wxheading{Derived from}
+
+wxRichTextParagraphLayoutBox
+
+\wxheading{Include files}
+
+<wx/richtext/richtextbuffer.h>
+
+\wxheading{Data structures}
+
+\wxheading{See also}
+
+\helpref{wxTextAttr}{wxtextattr}, \helpref{wxTextAttrEx}{wxtextattrex}, \helpref{wxRichTextAttr}{wxrichtextattr}, \helpref{wxRichTextCtrl}{wxrichtextctrl}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxRichTextBuffer::wxRichTextBuffer}\label{wxrichtextbufferwxrichtextbuffer}
+
+\func{}{wxRichTextBuffer}{\param{const wxRichTextBuffer\& }{obj}}
+
+Copy constructor.
+
+\func{}{wxRichTextBuffer}{\void}
+
+Default constructors.
+
+\membersection{wxRichTextBuffer::\destruct{wxRichTextBuffer}}\label{wxrichtextbufferdtor}
+
+\func{}{\destruct{wxRichTextBuffer}}{\void}
+
+Destructor.
+
+\membersection{wxRichTextBuffer::AddHandler}\label{wxrichtextbufferaddhandler}
+
+\func{void}{AddHandler}{\param{wxRichTextFileHandler* }{handler}}
+
+Adds a file handler.
+
+\membersection{wxRichTextBuffer::AddParagraph}\label{wxrichtextbufferaddparagraph}
+
+\func{wxRichTextRange}{AddParagraph}{\param{const wxString\& }{text}}
+
+Adds a paragraph of text.
+
+\membersection{wxRichTextBuffer::BatchingUndo}\label{wxrichtextbufferbatchingundo}
+
+\constfunc{bool}{BatchingUndo}{\void}
+
+Returns \true if the buffer is currently collapsing commands into a single notional command.
+
+\membersection{wxRichTextBuffer::BeginAlignment}\label{wxrichtextbufferbeginalignment}
+
+\func{bool}{BeginAlignment}{\param{wxTextAttrAlignment }{alignment}}
+
+Begins using alignment.
+
+\membersection{wxRichTextBuffer::BeginBatchUndo}\label{wxrichtextbufferbeginbatchundo}
+
+\func{bool}{BeginBatchUndo}{\param{const wxString\& }{cmdName}}
+
+Begins collapsing undo/redo commands. Note that this may not work properly
+if combining commands that delete or insert content, changing ranges for
+subsequent actions.
+
+{\it cmdName} should be the name of the combined command that will appear
+next to Undo and Redo in the edit menu.
+
+\membersection{wxRichTextBuffer::BeginBold}\label{wxrichtextbufferbeginbold}
+
+\func{bool}{BeginBold}{\void}
+
+Begin applying bold.
+
+\membersection{wxRichTextBuffer::BeginCharacterStyle}\label{wxrichtextbufferbegincharacterstyle}
+
+\func{bool}{BeginCharacterStyle}{\param{const wxString\& }{characterStyle}}
+
+Begins applying the named character style.
+
+\membersection{wxRichTextBuffer::BeginFont}\label{wxrichtextbufferbeginfont}
+
+\func{bool}{BeginFont}{\param{const wxFont\& }{font}}
+
+Begins using this font.
+
+\membersection{wxRichTextBuffer::BeginFontSize}\label{wxrichtextbufferbeginfontsize}
+
+\func{bool}{BeginFontSize}{\param{int }{pointSize}}
+
+Begins using the given point size.
+
+\membersection{wxRichTextBuffer::BeginItalic}\label{wxrichtextbufferbeginitalic}
+
+\func{bool}{BeginItalic}{\void}
+
+Begins using italic.
+
+\membersection{wxRichTextBuffer::BeginLeftIndent}\label{wxrichtextbufferbeginleftindent}
+
+\func{bool}{BeginLeftIndent}{\param{int }{leftIndent}, \param{int }{leftSubIndent = 0}}
+
+Begin using {\it leftIndent} for the left indent, and optionally {\it leftSubIndent} for
+the sub-indent. Both are expressed in tenths of a millimetre.
+
+The sub-indent is an offset from the left of the paragraph, and is used for all but the
+first line in a paragraph. A positive value will cause the first line to appear to the left
+of the subsequent lines, and a negative value will cause the first line to be indented
+relative to the subsequent lines.
+
+\membersection{wxRichTextBuffer::BeginLineSpacing}\label{wxrichtextbufferbeginlinespacing}
+
+\func{bool}{BeginLineSpacing}{\param{int }{lineSpacing}}
+
+Begins line spacing using the specified value. {\it spacing} is a multiple, where 10 means single-spacing,
+15 means 1.5 spacing, and 20 means double spacing. The following constants are
+defined for convenience:
+
+{\small
+\begin{verbatim}
+#define wxTEXT_ATTR_LINE_SPACING_NORMAL         10
+#define wxTEXT_ATTR_LINE_SPACING_HALF           15
+#define wxTEXT_ATTR_LINE_SPACING_TWICE          20
+\end{verbatim}
+}
+
+\membersection{wxRichTextBuffer::BeginNumberedBullet}\label{wxrichtextbufferbeginnumberedbullet}
+
+\func{bool}{BeginNumberedBullet}{\param{int }{bulletNumber}, \param{int }{leftIndent}, \param{int }{leftSubIndent}, \param{int }{bulletStyle = wxTEXT\_ATTR\_BULLET\_STYLE\_ARABIC|wxTEXT\_ATTR\_BULLET\_STYLE\_PERIOD}}
+
+Begins a numbered bullet. This call will be needed for each item in the list, and the
+application should take care of incrementing the numbering.
+
+{\it bulletNumber} is a number, usually starting with 1.
+
+{\it leftIndent} and {\it leftSubIndent} are values in tenths of a millimetre.
+
+{\it bulletStyle} is a bitlist of the following values:
+
+{\small
+\begin{verbatim}
+#define wxTEXT_ATTR_BULLET_STYLE_NONE           0x0000
+#define wxTEXT_ATTR_BULLET_STYLE_ARABIC         0x0001
+#define wxTEXT_ATTR_BULLET_STYLE_LETTERS_UPPER  0x0002
+#define wxTEXT_ATTR_BULLET_STYLE_LETTERS_LOWER  0x0004
+#define wxTEXT_ATTR_BULLET_STYLE_ROMAN_UPPER    0x0008
+#define wxTEXT_ATTR_BULLET_STYLE_ROMAN_LOWER    0x0010
+#define wxTEXT_ATTR_BULLET_STYLE_SYMBOL         0x0020
+#define wxTEXT_ATTR_BULLET_STYLE_BITMAP         0x0040
+#define wxTEXT_ATTR_BULLET_STYLE_PARENTHESES    0x0080
+#define wxTEXT_ATTR_BULLET_STYLE_PERIOD         0x0100
+\end{verbatim}
+}
+
+wxRichTextBuffer uses indentation to render a bulleted item. The left indent is the distance between
+the margin and the bullet. The content of the paragraph, including the first line, starts
+at leftMargin + leftSubIndent. So the distance between the left edge of the bullet and the
+left of the actual paragraph is leftSubIndent.
+
+\membersection{wxRichTextBuffer::BeginParagraphSpacing}\label{wxrichtextbufferbeginparagraphspacing}
+
+\func{bool}{BeginParagraphSpacing}{\param{int }{before}, \param{int }{after}}
+
+Begins paragraph spacing; pass the before-paragraph and after-paragraph spacing in tenths of
+a millimetre.
+
+\membersection{wxRichTextBuffer::BeginParagraphStyle}\label{wxrichtextbufferbeginparagraphstyle}
+
+\func{bool}{BeginParagraphStyle}{\param{const wxString\& }{paragraphStyle}}
+
+Begins applying the named paragraph style.
+
+\membersection{wxRichTextBuffer::BeginRightIndent}\label{wxrichtextbufferbeginrightindent}
+
+\func{bool}{BeginRightIndent}{\param{int }{rightIndent}}
+
+Begins a right indent, specified in tenths of a millimetre.
+
+\membersection{wxRichTextBuffer::BeginStyle}\label{wxrichtextbufferbeginstyle}
+
+\func{bool}{BeginStyle}{\param{const wxTextAttrEx\& }{style}}
+
+Begins using a specified style.
+
+\membersection{wxRichTextBuffer::BeginSuppressUndo}\label{wxrichtextbufferbeginsuppressundo}
+
+\func{bool}{BeginSuppressUndo}{\void}
+
+Begins suppressing undo/redo commands. The way undo is suppressed may be implemented
+differently by each command. If not dealt with by a command implementation, then
+it will be implemented automatically by not storing the command in the undo history
+when the action is submitted to the command processor.
+
+\membersection{wxRichTextBuffer::BeginSymbolBullet}\label{wxrichtextbufferbeginsymbolbullet}
+
+\func{bool}{BeginSymbolBullet}{\param{wxChar }{symbol}, \param{int }{leftIndent}, \param{int }{leftSubIndent}, \param{int }{bulletStyle = wxTEXT\_ATTR\_BULLET\_STYLE\_SYMBOL}}
+
+Begins applying a symbol bullet, using a character from the current font. See \helpref{BeginNumberedBullet}{wxrichtextbufferbeginnumberedbullet} for
+an explanation of how indentation is used to render the bulleted paragraph.
+
+\membersection{wxRichTextBuffer::BeginTextColour}\label{wxrichtextbufferbegintextcolour}
+
+\func{bool}{BeginTextColour}{\param{const wxColour\& }{colour}}
+
+Begins using the specified text foreground colour.
+
+\membersection{wxRichTextBuffer::BeginUnderline}\label{wxrichtextbufferbeginunderline}
+
+\func{bool}{BeginUnderline}{\void}
+
+Begins using underline.
+
+\membersection{wxRichTextBuffer::CanPasteFromClipboard}\label{wxrichtextbuffercanpastefromclipboard}
+
+\constfunc{bool}{CanPasteFromClipboard}{\void}
+
+Returns \true if content can be pasted from the clipboard.
+
+\membersection{wxRichTextBuffer::CleanUpHandlers}\label{wxrichtextbuffercleanuphandlers}
+
+\func{void}{CleanUpHandlers}{\void}
+
+Cleans up the file handlers.
+
+\membersection{wxRichTextBuffer::Clear}\label{wxrichtextbufferclear}
+
+\func{void}{Clear}{\void}
+
+Clears the buffer and resets the command processor.
+
+\membersection{wxRichTextBuffer::ClearStyleStack}\label{wxrichtextbufferclearstylestack}
+
+\func{void}{ClearStyleStack}{\void}
+
+Clears the style stack.
+
+\membersection{wxRichTextBuffer::Clone}\label{wxrichtextbufferclone}
+
+\constfunc{wxRichTextObject*}{Clone}{\void}
+
+Clones the object.
+
+\membersection{wxRichTextBuffer::Copy}\label{wxrichtextbuffercopy}
+
+\func{void}{Copy}{\param{const wxRichTextBuffer\& }{obj}}
+
+Copies the given buffer.
+
+\membersection{wxRichTextBuffer::CopyToClipboard}\label{wxrichtextbuffercopytoclipboard}
+
+\func{bool}{CopyToClipboard}{\param{const wxRichTextRange\& }{range}}
+
+Copy the given range to the clipboard.
+
+\membersection{wxRichTextBuffer::DeleteRangeWithUndo}\label{wxrichtextbufferdeleterangewithundo}
+
+\func{bool}{DeleteRangeWithUndo}{\param{const wxRichTextRange\& }{range}, \param{long }{initialCaretPosition}, \param{long }{newCaretPositon}, \param{wxRichTextCtrl* }{ctrl}}
+
+Submits a command to delete the given range.
+
+\membersection{wxRichTextBuffer::Dump}\label{wxrichtextbufferdump}
+
+\func{void}{Dump}{\void}
+
+\func{void}{Dump}{\param{wxTextOutputStream\& }{stream}}
+
+Dumps the contents of the buffer for debugging purposes.
+
+\membersection{wxRichTextBuffer::EndAlignment}\label{wxrichtextbufferendalignment}
+
+\func{bool}{EndAlignment}{\void}
+
+Ends alignment.
+
+\membersection{wxRichTextBuffer::EndAllStyles}\label{wxrichtextbufferendallstyles}
+
+\func{bool}{EndAllStyles}{\void}
+
+Ends all styles that have been started with a Begin... command.
+
+\membersection{wxRichTextBuffer::EndBatchUndo}\label{wxrichtextbufferendbatchundo}
+
+\func{bool}{EndBatchUndo}{\void}
+
+Ends collapsing undo/redo commands, and submits the combined command.
+
+\membersection{wxRichTextBuffer::EndBold}\label{wxrichtextbufferendbold}
+
+\func{bool}{EndBold}{\void}
+
+Ends using bold.
+
+\membersection{wxRichTextBuffer::EndCharacterStyle}\label{wxrichtextbufferendcharacterstyle}
+
+\func{bool}{EndCharacterStyle}{\void}
+
+Ends using the named character style.
+
+\membersection{wxRichTextBuffer::EndFont}\label{wxrichtextbufferendfont}
+
+\func{bool}{EndFont}{\void}
+
+Ends using a font.
+
+\membersection{wxRichTextBuffer::EndFontSize}\label{wxrichtextbufferendfontsize}
+
+\func{bool}{EndFontSize}{\void}
+
+Ends using a point size.
+
+\membersection{wxRichTextBuffer::EndItalic}\label{wxrichtextbufferenditalic}
+
+\func{bool}{EndItalic}{\void}
+
+Ends using italic.
+
+\membersection{wxRichTextBuffer::EndLeftIndent}\label{wxrichtextbufferendleftindent}
+
+\func{bool}{EndLeftIndent}{\void}
+
+Ends using a left indent.
+
+\membersection{wxRichTextBuffer::EndLineSpacing}\label{wxrichtextbufferendlinespacing}
+
+\func{bool}{EndLineSpacing}{\void}
+
+Ends using a line spacing.
+
+\membersection{wxRichTextBuffer::EndNumberedBullet}\label{wxrichtextbufferendnumberedbullet}
+
+\func{bool}{EndNumberedBullet}{\void}
+
+Ends a numbered bullet.
+
+\membersection{wxRichTextBuffer::EndParagraphSpacing}\label{wxrichtextbufferendparagraphspacing}
+
+\func{bool}{EndParagraphSpacing}{\void}
+
+Ends paragraph spacing.
+
+\membersection{wxRichTextBuffer::EndParagraphStyle}\label{wxrichtextbufferendparagraphstyle}
+
+\func{bool}{EndParagraphStyle}{\void}
+
+Ends applying a named character style.
+
+\membersection{wxRichTextBuffer::EndRightIndent}\label{wxrichtextbufferendrightindent}
+
+\func{bool}{EndRightIndent}{\void}
+
+Ends using a right indent.
+
+\membersection{wxRichTextBuffer::EndStyle}\label{wxrichtextbufferendstyle}
+
+\func{bool}{EndStyle}{\void}
+
+Ends the current style.
+
+\membersection{wxRichTextBuffer::EndSuppressUndo}\label{wxrichtextbufferendsuppressundo}
+
+\func{bool}{EndSuppressUndo}{\void}
+
+Ends suppressing undo/redo commands.
+
+\membersection{wxRichTextBuffer::EndSymbolBullet}\label{wxrichtextbufferendsymbolbullet}
+
+\func{bool}{EndSymbolBullet}{\void}
+
+Ends using a symbol bullet.
+
+\membersection{wxRichTextBuffer::EndTextColour}\label{wxrichtextbufferendtextcolour}
+
+\func{bool}{EndTextColour}{\void}
+
+Ends using a text foreground colour.
+
+\membersection{wxRichTextBuffer::EndUnderline}\label{wxrichtextbufferendunderline}
+
+\func{bool}{EndUnderline}{\void}
+
+Ends using underline.
+
+\membersection{wxRichTextBuffer::FindHandler}\label{wxrichtextbufferfindhandler}
+
+\func{wxRichTextFileHandler*}{FindHandler}{\param{int }{imageType}}
+
+Finds a handler by type.
+
+\func{wxRichTextFileHandler*}{FindHandler}{\param{const wxString\& }{extension}, \param{int }{imageType}}
+
+Finds a handler by extension and type.
+
+\func{wxRichTextFileHandler*}{FindHandler}{\param{const wxString\& }{name}}
+
+Finds a handler by name.
+
+\membersection{wxRichTextBuffer::FindHandlerFilenameOrType}\label{wxrichtextbufferfindhandlerfilenameortype}
+
+\func{wxRichTextFileHandler*}{FindHandlerFilenameOrType}{\param{const wxString\& }{filename}, \param{int }{imageType}}
+
+Finds a handler by filename or, if supplied, type.
+
+\membersection{wxRichTextBuffer::GetBatchedCommand}\label{wxrichtextbuffergetbatchedcommand}
+
+\constfunc{wxRichTextCommand*}{GetBatchedCommand}{\void}
+
+Gets the collapsed command.
+
+\membersection{wxRichTextBuffer::GetCommandProcessor}\label{wxrichtextbuffergetcommandprocessor}
+
+\constfunc{wxCommandProcessor*}{GetCommandProcessor}{\void}
+
+Gets the command processor. A text buffer always creates its own command processor when it is
+initialized.
+
+\membersection{wxRichTextBuffer::GetExtWildcard}\label{wxrichtextbuffergetextwildcard}
+
+\func{wxString}{GetExtWildcard}{\param{bool }{combine = false}, \param{bool }{save = false}, \param{wxArrayInt* }{types = NULL}}
+
+Gets a wildcard incorporating all visible handlers. If {\it types} is present,
+it will be filled with the file type corresponding to each filter. This can be
+used to determine the type to pass to \helpref{LoadFile}{wxrichtextbuffergetextwildcard} given a selected filter.
+
+\membersection{wxRichTextBuffer::GetHandlers}\label{wxrichtextbuffergethandlers}
+
+\func{wxList\&}{GetHandlers}{\void}
+
+Returns the list of file handlers.
+
+\membersection{wxRichTextBuffer::GetStyleSheet}\label{wxrichtextbuffergetstylesheet}
+
+\constfunc{wxRichTextStyleSheet*}{GetStyleSheet}{\void}
+
+Returns the current style sheet associated with the buffer, if any.
+
+\membersection{wxRichTextBuffer::GetStyleStackSize}\label{wxrichtextbuffergetstylestacksize}
+
+\constfunc{size\_t}{GetStyleStackSize}{\void}
+
+Get the size of the style stack, for example to check correct nesting.
+
+\membersection{wxRichTextBuffer::HitTest}\label{wxrichtextbufferhittest}
+
+\func{int}{HitTest}{\param{wxDC\& }{dc}, \param{const wxPoint\& }{pt}, \param{long\& }{textPosition}}
+
+Finds the text position for the given position, putting the position in {\it textPosition} if
+one is found. {\it pt} is in logical units (a zero y position is
+at the beginning of the buffer).
+
+The function returns one of the following values:
+
+{\small
+\begin{verbatim}
+// The point was not on this object
+#define wxRICHTEXT_HITTEST_NONE     0x01
+// The point was before the position returned from HitTest
+#define wxRICHTEXT_HITTEST_BEFORE   0x02
+// The point was after the position returned from HitTest
+#define wxRICHTEXT_HITTEST_AFTER    0x04
+// The point was on the position returned from HitTest
+#define wxRICHTEXT_HITTEST_ON       0x08
+\end{verbatim}
+}
+
+\membersection{wxRichTextBuffer::Init}\label{wxrichtextbufferinit}
+
+\func{void}{Init}{\void}
+
+Initialisation.
+
+\membersection{wxRichTextBuffer::InitStandardHandlers}\label{wxrichtextbufferinitstandardhandlers}
+
+\func{void}{InitStandardHandlers}{\void}
+
+Initialises the standard handlers. Currently, only the plain text loading/saving handler
+is initialised by default.
+
+\membersection{wxRichTextBuffer::InsertHandler}\label{wxrichtextbufferinserthandler}
+
+\func{void}{InsertHandler}{\param{wxRichTextFileHandler* }{handler}}
+
+Inserts a handler at the front of the list.
+
+\membersection{wxRichTextBuffer::InsertImageWithUndo}\label{wxrichtextbufferinsertimagewithundo}
+
+\func{bool}{InsertImageWithUndo}{\param{long }{pos}, \param{const wxRichTextImageBlock\& }{imageBlock}, \param{wxRichTextCtrl* }{ctrl}}
+
+Submits a command to insert the given image.
+
+\membersection{wxRichTextBuffer::InsertNewlineWithUndo}\label{wxrichtextbufferinsertnewlinewithundo}
+
+\func{bool}{InsertNewlineWithUndo}{\param{long }{pos}, \param{wxRichTextCtrl* }{ctrl}}
+
+Submits a command to insert a newline.
+
+\membersection{wxRichTextBuffer::InsertTextWithUndo}\label{wxrichtextbufferinserttextwithundo}
+
+\func{bool}{InsertTextWithUndo}{\param{long }{pos}, \param{const wxString\& }{text}, \param{wxRichTextCtrl* }{ctrl}}
+
+Submits a command to insert the given text.
+
+\membersection{wxRichTextBuffer::IsModified}\label{wxrichtextbufferismodified}
+
+\constfunc{bool}{IsModified}{\void}
+
+Returns \true if the buffer has been modified.
+
+\membersection{wxRichTextBuffer::LoadFile}\label{wxrichtextbufferloadfile}
+
+\func{bool}{LoadFile}{\param{wxInputStream\& }{stream}, \param{int }{type = wxRICHTEXT\_TYPE\_ANY}}
+
+Loads content from a stream.
+
+\func{bool}{LoadFile}{\param{const wxString\& }{filename}, \param{int }{type = wxRICHTEXT\_TYPE\_ANY}}
+
+Loads content from a file.
+
+\membersection{wxRichTextBuffer::Modify}\label{wxrichtextbuffermodify}
+
+\func{void}{Modify}{\param{bool }{modify = true}}
+
+Marks the buffer as modified or unmodified.
+
+\membersection{wxRichTextBuffer::PasteFromClipboard}\label{wxrichtextbufferpastefromclipboard}
+
+\func{bool}{PasteFromClipboard}{\param{long }{position}}
+
+Pastes the clipboard content to the buffer at the given position.
+
+\membersection{wxRichTextBuffer::RemoveHandler}\label{wxrichtextbufferremovehandler}
+
+\func{bool}{RemoveHandler}{\param{const wxString\& }{name}}
+
+Removes a handler.
+
+\membersection{wxRichTextBuffer::Reset}\label{wxrichtextbufferreset}
+
+\func{void}{Reset}{\void}
+
+The same as \helpref{Clear}{wxrichtextbufferclear}, plus an empty paragraph is added.
+
+\membersection{wxRichTextBuffer::SaveFile}\label{wxrichtextbuffersavefile}
+
+\func{bool}{SaveFile}{\param{wxOutputStream\& }{stream}, \param{int }{type = wxRICHTEXT\_TYPE\_ANY}}
+
+Saves content to a stream.
+
+\func{bool}{SaveFile}{\param{const wxString\& }{filename}, \param{int }{type = wxRICHTEXT\_TYPE\_ANY}}
+
+Saves content to a file.
+
+\membersection{wxRichTextBuffer::SetStyleSheet}\label{wxrichtextbuffersetstylesheet}
+
+\func{void}{SetStyleSheet}{\param{wxRichTextStyleSheet* }{styleSheet}}
+
+Sets the current style sheet, if any. This will allow the application to use
+named character and paragraph styles found in the style sheet.
+
+\membersection{wxRichTextBuffer::SubmitAction}\label{wxrichtextbuffersubmitaction}
+
+\func{bool}{SubmitAction}{\param{wxRichTextAction* }{action}}
+
+Submit an action immediately, or delay it according to whether collapsing is on.
+
+\membersection{wxRichTextBuffer::SuppressingUndo}\label{wxrichtextbuffersuppressingundo}
+
+\constfunc{bool}{SuppressingUndo}{\void}
+
+Returns \true if undo suppression is currently on.
+
diff --git a/docs/latex/wx/richtextcharacterstyledefinition.tex b/docs/latex/wx/richtextcharacterstyledefinition.tex
new file mode 100644
index 0000000000..04995f286a
--- /dev/null
+++ b/docs/latex/wx/richtextcharacterstyledefinition.tex
@@ -0,0 +1,27 @@
+\section{\class{wxRichTextCharacterStyleDefinition}}\label{wxrichtextcharacterstyledefinition}
+
+This class represents a character style definition, usually added to a \helpref{wxRichTextStyleSheet}{wxrichtextstylesheet}.
+
+\wxheading{Derived from}
+
+\helpref{wxRichTextStyleDefinition}{wxrichtextstyledefinition}
+
+\wxheading{Include files}
+
+<wx/richtext/richtextstyles.h>
+
+\wxheading{Data structures}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxRichTextCharacterStyleDefinition::wxRichTextCharacterStyleDefinition}\label{wxrichtextcharacterstyledefinitionwxrichtextcharacterstyledefinition}
+
+\func{}{wxRichTextCharacterStyleDefinition}{\param{const wxString\& }{name = wxEmptyString}}
+
+Constructor.
+
+\membersection{wxRichTextCharacterStyleDefinition::\destruct{wxRichTextCharacterStyleDefinition}}\label{wxrichtextcharacterstyledefinitiondtor}
+
+\func{}{\destruct{wxRichTextCharacterStyleDefinition}}{\void}
+
+Destructor.
diff --git a/docs/latex/wx/richtextctrl.bmp b/docs/latex/wx/richtextctrl.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..29bfb472fc22f3a6d0c012951c644fda31d2d53e
GIT binary patch
literal 351054
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%0Dt-@cbbLIR0OO)*5q?-tBQSHpA!^R|
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

literal 0
HcmV?d00001

diff --git a/docs/latex/wx/richtextctrl.gif b/docs/latex/wx/richtextctrl.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c900aa5963de2e60794df6e166cefefb8502ef4a
GIT binary patch
literal 60502
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
DWFaOO

literal 0
HcmV?d00001

diff --git a/docs/latex/wx/richtextctrl.tex b/docs/latex/wx/richtextctrl.tex
new file mode 100644
index 0000000000..04193110fb
--- /dev/null
+++ b/docs/latex/wx/richtextctrl.tex
@@ -0,0 +1,1205 @@
+\section{\class{wxRichTextCtrl}}\label{wxrichtextctrl}
+
+wxRichTextCtrl provides a generic, ground-up implementation of a text control
+capable of showing multiple styles and images.
+
+\wxheading{Derived from}
+
+wxTextCtrlBase
+
+\wxheading{Include files}
+
+<wx/richtext/richtextctrl.h>
+
+\wxheading{Data structures}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxRichTextCtrl::wxRichTextCtrl}\label{wxrichtextctrlwxrichtextctrl}
+
+\func{}{wxRichTextCtrl}{\void}
+
+\func{}{wxRichTextCtrl}{\param{wxWindow* }{parent}, \param{wxWindowID }{id = -1}, \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{long }{style = wxRE\_MULTILINE}}
+
+Constructors.
+
+\membersection{wxRichTextCtrl::\destruct{wxRichTextCtrl}}\label{wxrichtextctrldtor}
+
+\func{}{\destruct{wxRichTextCtrl}}{\void}
+
+Destructor.
+
+\membersection{wxRichTextCtrl::AddImage}\label{wxrichtextctrladdimage}
+
+\func{wxRichTextRange}{AddImage}{\param{const wxImage\& }{image}}
+
+Adds an image to the control's buffer.
+
+\membersection{wxRichTextCtrl::AddParagraph}\label{wxrichtextctrladdparagraph}
+
+\func{wxRichTextRange}{AddParagraph}{\param{const wxString\& }{text}}
+
+Adds a new paragraph of text to the end of the buffer.
+
+\membersection{wxRichTextCtrl::AppendText}\label{wxrichtextctrlappendtext}
+
+\func{void}{AppendText}{\param{const wxString\& }{text}}
+
+Sets the insertion point to the end of the buffer and writes the text.
+
+\membersection{wxRichTextCtrl::ApplyAlignmentToSelection}\label{wxrichtextctrlapplyalignmenttoselection}
+
+\func{bool}{ApplyAlignmentToSelection}{\param{wxTextAttrAlignment }{alignment}}
+
+Applies the given alignment to the selection (undoable).
+
+For alignment values, see \helpref{wxTextAttrEx}{wxtextattrex}.
+
+\membersection{wxRichTextCtrl::ApplyBoldToSelection}\label{wxrichtextctrlapplyboldtoselection}
+
+\func{bool}{ApplyBoldToSelection}{\void}
+
+Apples bold to the selection (undoable).
+
+\membersection{wxRichTextCtrl::ApplyItalicToSelection}\label{wxrichtextctrlapplyitalictoselection}
+
+\func{bool}{ApplyItalicToSelection}{\void}
+
+Applies italic to the selection (undoable).
+
+\membersection{wxRichTextCtrl::ApplyUnderlineToSelection}\label{wxrichtextctrlapplyunderlinetoselection}
+
+\func{bool}{ApplyUnderlineToSelection}{\void}
+
+Applies underline to the selection (undoable).
+
+\membersection{wxRichTextCtrl::BatchingUndo}\label{wxrichtextctrlbatchingundo}
+
+\constfunc{bool}{BatchingUndo}{\void}
+
+Returns \true if undo commands are being batched.
+
+\membersection{wxRichTextCtrl::BeginAlignment}\label{wxrichtextctrlbeginalignment}
+
+\func{bool}{BeginAlignment}{\param{wxTextAttrAlignment }{alignment}}
+
+Begins using alignment
+
+For alignment values, see \helpref{wxTextAttrEx}{wxtextattrex}.
+
+\membersection{wxRichTextCtrl::BeginBatchUndo}\label{wxrichtextctrlbeginbatchundo}
+
+\func{bool}{BeginBatchUndo}{\param{const wxString\& }{cmdName}}
+
+Starts batching undo history for commands.
+
+\membersection{wxRichTextCtrl::BeginBold}\label{wxrichtextctrlbeginbold}
+
+\func{bool}{BeginBold}{\void}
+
+Begins using bold.
+
+\membersection{wxRichTextCtrl::BeginCharacterStyle}\label{wxrichtextctrlbegincharacterstyle}
+
+\func{bool}{BeginCharacterStyle}{\param{const wxString\& }{characterStyle}}
+
+Begins using the named character style.
+
+\membersection{wxRichTextCtrl::BeginFont}\label{wxrichtextctrlbeginfont}
+
+\func{bool}{BeginFont}{\param{const wxFont\& }{font}}
+
+Begins using this font.
+
+\membersection{wxRichTextCtrl::BeginFontSize}\label{wxrichtextctrlbeginfontsize}
+
+\func{bool}{BeginFontSize}{\param{int }{pointSize}}
+
+Begins using the given point size.
+
+\membersection{wxRichTextCtrl::BeginItalic}\label{wxrichtextctrlbeginitalic}
+
+\func{bool}{BeginItalic}{\void}
+
+Begins using italic.
+
+\membersection{wxRichTextCtrl::BeginLeftIndent}\label{wxrichtextctrlbeginleftindent}
+
+\func{bool}{BeginLeftIndent}{\param{int }{leftIndent}, \param{int }{leftSubIndent = 0}}
+
+Begins applying a left indent and subindent in tenths of a millimetre.
+
+The sub-indent is an offset from the left of the paragraph, and is used for all but the
+first line in a paragraph. A positive value will cause the first line to appear to the left
+of the subsequent lines, and a negative value will cause the first line to be indented
+relative to the subsequent lines.
+
+wxRichTextBuffer uses indentation to render a bulleted item. The left indent is the distance between
+the margin and the bullet. The content of the paragraph, including the first line, starts
+at leftMargin + leftSubIndent. So the distance between the left edge of the bullet and the
+left of the actual paragraph is leftSubIndent.
+
+\membersection{wxRichTextCtrl::BeginLineSpacing}\label{wxrichtextctrlbeginlinespacing}
+
+\func{bool}{BeginLineSpacing}{\param{int }{lineSpacing}}
+
+Begins appling line spacing. {\it spacing} is a multiple, where 10 means single-spacing,
+15 means 1.5 spacing, and 20 means double spacing. The following constants are
+defined for convenience:
+
+
+{\small
+\begin{verbatim}
+#define wxTEXT_ATTR_LINE_SPACING_NORMAL         10
+#define wxTEXT_ATTR_LINE_SPACING_HALF           15
+#define wxTEXT_ATTR_LINE_SPACING_TWICE          20
+\end{verbatim}
+}
+
+\membersection{wxRichTextCtrl::BeginNumberedBullet}\label{wxrichtextctrlbeginnumberedbullet}
+
+\func{bool}{BeginNumberedBullet}{\param{int }{bulletNumber}, \param{int }{leftIndent}, \param{int }{leftSubIndent}, \param{int }{bulletStyle = wxTEXT\_ATTR\_BULLET\_STYLE\_ARABIC|wxTEXT\_ATTR\_BULLET\_STYLE\_PERIOD}}
+
+Begins a numbered bullet. This call will be needed for each item in the list, and the
+application should take care of incrementing the numbering.
+
+{\it bulletNumber} is a number, usually starting with 1.
+
+{\it leftIndent} and {\it leftSubIndent} are values in tenths of a millimetre.
+
+{\it bulletStyle} is a bitlist of the following values:
+
+{\small
+\begin{verbatim}
+#define wxTEXT_ATTR_BULLET_STYLE_NONE           0x0000
+#define wxTEXT_ATTR_BULLET_STYLE_ARABIC         0x0001
+#define wxTEXT_ATTR_BULLET_STYLE_LETTERS_UPPER  0x0002
+#define wxTEXT_ATTR_BULLET_STYLE_LETTERS_LOWER  0x0004
+#define wxTEXT_ATTR_BULLET_STYLE_ROMAN_UPPER    0x0008
+#define wxTEXT_ATTR_BULLET_STYLE_ROMAN_LOWER    0x0010
+#define wxTEXT_ATTR_BULLET_STYLE_SYMBOL         0x0020
+#define wxTEXT_ATTR_BULLET_STYLE_BITMAP         0x0040
+#define wxTEXT_ATTR_BULLET_STYLE_PARENTHESES    0x0080
+#define wxTEXT_ATTR_BULLET_STYLE_PERIOD         0x0100
+\end{verbatim}
+}
+
+wxRichTextBuffer uses indentation to render a bulleted item. The left indent is the distance between
+the margin and the bullet. The content of the paragraph, including the first line, starts
+at leftMargin + leftSubIndent. So the distance between the left edge of the bullet and the
+left of the actual paragraph is leftSubIndent.
+
+\membersection{wxRichTextCtrl::BeginParagraphSpacing}\label{wxrichtextctrlbeginparagraphspacing}
+
+\func{bool}{BeginParagraphSpacing}{\param{int }{before}, \param{int }{after}}
+
+Begins paragraph spacing; pass the before-paragraph and after-paragraph spacing in tenths of
+a millimetre.
+
+\membersection{wxRichTextCtrl::BeginParagraphStyle}\label{wxrichtextctrlbeginparagraphstyle}
+
+\func{bool}{BeginParagraphStyle}{\param{const wxString\& }{paragraphStyle}}
+
+Begins applying the named paragraph style.
+
+\membersection{wxRichTextCtrl::BeginRightIndent}\label{wxrichtextctrlbeginrightindent}
+
+\func{bool}{BeginRightIndent}{\param{int }{rightIndent}}
+
+Begins a right indent, specified in tenths of a millimetre.
+
+\membersection{wxRichTextCtrl::BeginStyle}\label{wxrichtextctrlbeginstyle}
+
+\func{bool}{BeginStyle}{\param{const wxTextAttrEx\& }{style}}
+
+Begins applying a style.
+
+\membersection{wxRichTextCtrl::BeginSuppressUndo}\label{wxrichtextctrlbeginsuppressundo}
+
+\func{bool}{BeginSuppressUndo}{\void}
+
+Starts suppressing undo history for commands.
+
+\membersection{wxRichTextCtrl::BeginSymbolBullet}\label{wxrichtextctrlbeginsymbolbullet}
+
+\func{bool}{BeginSymbolBullet}{\param{wxChar }{symbol}, \param{int }{leftIndent}, \param{int }{leftSubIndent}, \param{int }{bulletStyle = wxTEXT\_ATTR\_BULLET\_STYLE\_SYMBOL}}
+
+Begins applying a symbol bullet, using a character from the current font. See \helpref{BeginNumberedBullet}{wxrichtextctrlbeginnumberedbullet} for
+an explanation of how indentation is used to render the bulleted paragraph.
+
+\membersection{wxRichTextCtrl::BeginTextColour}\label{wxrichtextctrlbegintextcolour}
+
+\func{bool}{BeginTextColour}{\param{const wxColour\& }{colour}}
+
+Begins using this colour.
+
+\membersection{wxRichTextCtrl::BeginUnderline}\label{wxrichtextctrlbeginunderline}
+
+\func{bool}{BeginUnderline}{\void}
+
+Begins using underlining.
+
+\membersection{wxRichTextCtrl::CanCopy}\label{wxrichtextctrlcancopy}
+
+\constfunc{bool}{CanCopy}{\void}
+
+Returns \true if selected content can be copied to the clipboard.
+
+\membersection{wxRichTextCtrl::CanCut}\label{wxrichtextctrlcancut}
+
+\constfunc{bool}{CanCut}{\void}
+
+Returns \true if selected content can be copied to the clipboard and deleted.
+
+\membersection{wxRichTextCtrl::CanDeleteSelection}\label{wxrichtextctrlcandeleteselection}
+
+\constfunc{bool}{CanDeleteSelection}{\void}
+
+Returns \true if selected content can be deleted.
+
+\membersection{wxRichTextCtrl::CanPaste}\label{wxrichtextctrlcanpaste}
+
+\constfunc{bool}{CanPaste}{\void}
+
+Returns \true if the clipboard content can be pasted to the buffer.
+
+\membersection{wxRichTextCtrl::CanRedo}\label{wxrichtextctrlcanredo}
+
+\constfunc{bool}{CanRedo}{\void}
+
+Returns \true if there is a command in the command history that can be redone.
+
+\membersection{wxRichTextCtrl::CanUndo}\label{wxrichtextctrlcanundo}
+
+\constfunc{bool}{CanUndo}{\void}
+
+Returns \true if there is a command in the command history that can be undone.
+
+\membersection{wxRichTextCtrl::Clear}\label{wxrichtextctrlclear}
+
+\func{void}{Clear}{\void}
+
+Clears the buffer content, leaving a single empty paragraph. Cannot be undone.
+
+\membersection{wxRichTextCtrl::Command}\label{wxrichtextctrlcommand}
+
+\func{void}{Command}{\param{wxCommandEvent\& }{event}}
+
+Sends the event to the control.
+
+\membersection{wxRichTextCtrl::Copy}\label{wxrichtextctrlcopy}
+
+\func{void}{Copy}{\void}
+
+Copies the selected content (if any) to the clipboard.
+
+\membersection{wxRichTextCtrl::Create}\label{wxrichtextctrlcreate}
+
+\func{bool}{Create}{\param{wxWindow* }{parent}, \param{wxWindowID }{id = -1}, \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{long }{style = wxRE\_MULTILINE}}
+
+Creates the underlying window.
+
+\membersection{wxRichTextCtrl::Cut}\label{wxrichtextctrlcut}
+
+\func{void}{Cut}{\void}
+
+Copies the selected content (if any) to the clipboard and deletes the selection.
+This is undoable.
+
+\membersection{wxRichTextCtrl::DeleteSelectedContent}\label{wxrichtextctrldeleteselectedcontent}
+
+\func{bool}{DeleteSelectedContent}{\param{long* }{newPos = NULL}}
+
+Deletes content if there is a selection, e.g. when pressing a key.
+Returns the new caret position in {\it newPos}, or leaves it if there
+was no action. This is undoable.
+
+\membersection{wxRichTextCtrl::DeleteSelection}\label{wxrichtextctrldeleteselection}
+
+\func{void}{DeleteSelection}{\void}
+
+Deletes the content in the selection, if any. This is undoable.
+
+\membersection{wxRichTextCtrl::DiscardEdits}\label{wxrichtextctrldiscardedits}
+
+\func{void}{DiscardEdits}{\void}
+
+Sets the buffer's modified status to \false, and clears the buffer's command history.
+
+\membersection{wxRichTextCtrl::DoGetBestSize}\label{wxrichtextctrldogetbestsize}
+
+\constfunc{wxSize}{DoGetBestSize}{\void}
+
+Currently this simply returns {\tt wxSize(10, 10)}.
+
+\membersection{wxRichTextCtrl::EndAlignment}\label{wxrichtextctrlendalignment}
+
+\func{bool}{EndAlignment}{\void}
+
+Ends alignment.
+
+\membersection{wxRichTextCtrl::EndAllStyles}\label{wxrichtextctrlendallstyles}
+
+\func{bool}{EndAllStyles}{\void}
+
+Ends application of all styles in the current style stack.
+
+\membersection{wxRichTextCtrl::EndBatchUndo}\label{wxrichtextctrlendbatchundo}
+
+\func{bool}{EndBatchUndo}{\void}
+
+Ends batching undo command history.
+
+\membersection{wxRichTextCtrl::EndBold}\label{wxrichtextctrlendbold}
+
+\func{bool}{EndBold}{\void}
+
+Ends using bold.
+
+\membersection{wxRichTextCtrl::EndCharacterStyle}\label{wxrichtextctrlendcharacterstyle}
+
+\func{bool}{EndCharacterStyle}{\void}
+
+Ends application of a named character style.
+
+\membersection{wxRichTextCtrl::EndFont}\label{wxrichtextctrlendfont}
+
+\func{bool}{EndFont}{\void}
+
+Ends using a font.
+
+\membersection{wxRichTextCtrl::EndFontSize}\label{wxrichtextctrlendfontsize}
+
+\func{bool}{EndFontSize}{\void}
+
+Ends using a point size.
+
+\membersection{wxRichTextCtrl::EndItalic}\label{wxrichtextctrlenditalic}
+
+\func{bool}{EndItalic}{\void}
+
+Ends using italic.
+
+\membersection{wxRichTextCtrl::EndLeftIndent}\label{wxrichtextctrlendleftindent}
+
+\func{bool}{EndLeftIndent}{\void}
+
+Ends left indent.
+
+\membersection{wxRichTextCtrl::EndLineSpacing}\label{wxrichtextctrlendlinespacing}
+
+\func{bool}{EndLineSpacing}{\void}
+
+Ends line spacing.
+
+\membersection{wxRichTextCtrl::EndNumberedBullet}\label{wxrichtextctrlendnumberedbullet}
+
+\func{bool}{EndNumberedBullet}{\void}
+
+Ends application of a numbered bullet.
+
+\membersection{wxRichTextCtrl::EndParagraphSpacing}\label{wxrichtextctrlendparagraphspacing}
+
+\func{bool}{EndParagraphSpacing}{\void}
+
+Ends paragraph spacing.
+
+\membersection{wxRichTextCtrl::EndParagraphStyle}\label{wxrichtextctrlendparagraphstyle}
+
+\func{bool}{EndParagraphStyle}{\void}
+
+Ends application of a named character style.
+
+\membersection{wxRichTextCtrl::EndRightIndent}\label{wxrichtextctrlendrightindent}
+
+\func{bool}{EndRightIndent}{\void}
+
+Ends right indent.
+
+\membersection{wxRichTextCtrl::EndStyle}\label{wxrichtextctrlendstyle}
+
+\func{bool}{EndStyle}{\void}
+
+Ends the current style.
+
+\membersection{wxRichTextCtrl::EndSuppressUndo}\label{wxrichtextctrlendsuppressundo}
+
+\func{bool}{EndSuppressUndo}{\void}
+
+Ends suppressing undo command history.
+
+\membersection{wxRichTextCtrl::EndSymbolBullet}\label{wxrichtextctrlendsymbolbullet}
+
+\func{bool}{EndSymbolBullet}{\void}
+
+Ends applying a symbol bullet.
+
+\membersection{wxRichTextCtrl::EndTextColour}\label{wxrichtextctrlendtextcolour}
+
+\func{bool}{EndTextColour}{\void}
+
+Ends applying a text colour.
+
+\membersection{wxRichTextCtrl::EndUnderline}\label{wxrichtextctrlendunderline}
+
+\func{bool}{EndUnderline}{\void}
+
+End applying underlining.
+
+\membersection{wxRichTextCtrl::ExtendSelection}\label{wxrichtextctrlextendselection}
+
+\func{bool}{ExtendSelection}{\param{long }{oldPosition}, \param{long }{newPosition}, \param{int }{flags}}
+
+Helper function for extending the selection, returning \true if the selection was
+changed. Selections are in caret positions.
+
+\membersection{wxRichTextCtrl::FindNextWordPosition}\label{wxrichtextctrlfindnextwordposition}
+
+\constfunc{long}{FindNextWordPosition}{\param{int }{direction = 1}}
+
+Helper function for finding the caret position for the next word. Direction
+is 1 (forward) or -1 (backwards).
+
+\membersection{wxRichTextCtrl::Freeze}\label{wxrichtextctrlfreeze}
+
+\func{void}{Freeze}{\void}
+
+Call this function to prevent refresh and allow fast updates, and then \helpref{Thaw}{wxrichtextctrlthaw} to
+refresh the control.
+
+\membersection{wxRichTextCtrl::GetBasicStyle}\label{wxrichtextctrlgetbasicstyle}
+
+\constfunc{const wxTextAttrEx\&}{GetBasicStyle}{\void}
+
+Gets the basic (overall) style. This is the style of the whole
+buffer before further styles are applied, unlike the default style, which
+only affects the style currently being applied (for example, setting the default
+style to bold will cause subsequently inserted text to be bold).
+
+\membersection{wxRichTextCtrl::GetBuffer}\label{wxrichtextctrlgetbuffer}
+
+\constfunc{const wxRichTextBuffer\&}{GetBuffer}{\void}
+
+\func{wxRichTextBuffer\&}{GetBuffer}{\void}
+
+Returns the buffer associated with the control.
+
+\membersection{wxRichTextCtrl::GetCaretPosition}\label{wxrichtextctrlgetcaretposition}
+
+\constfunc{long}{GetCaretPosition}{\void}
+
+Returns the current caret position.
+
+\membersection{wxRichTextCtrl::GetCaretPositionForIndex}\label{wxrichtextctrlgetcaretpositionforindex}
+
+\func{bool}{GetCaretPositionForIndex}{\param{long }{position}, \param{wxRect\& }{rect}}
+
+Returns the caret height and position for the given character position
+
+\membersection{wxRichTextCtrl::GetCommandProcessor}\label{wxrichtextctrlgetcommandprocessor}
+
+\constfunc{wxCommandProcessor*}{GetCommandProcessor}{\void}
+
+Gets the command processor associated with the control's buffer.
+
+\membersection{wxRichTextCtrl::GetDefaultStyleEx}\label{wxrichtextctrlgetdefaultstyleex}
+
+\constfunc{const wxTextAttrEx\&}{GetDefaultStyleEx}{\void}
+
+Returns the current default style, which can be used to change how subsequently inserted
+text is displayed. When wxTextAttrEx is merged with wxTextAttr, this function
+will become GetDefaultStyle.
+
+\membersection{wxRichTextCtrl::GetDelayedLayoutThreshold}\label{wxrichtextctrlgetdelayedlayoutthreshold}
+
+\constfunc{long}{GetDelayedLayoutThreshold}{\void}
+
+Gets the size of the buffer beyond which layout is delayed during resizing.
+This optimizes sizing for large buffers. The default is 20000.
+
+\membersection{wxRichTextCtrl::GetFilename}\label{wxrichtextctrlgetfilename}
+
+\constfunc{wxString}{GetFilename}{\void}
+
+Gets the current filename associated with the control.
+
+\membersection{wxRichTextCtrl::GetFirstVisiblePosition}\label{wxrichtextctrlgetfirstvisibleposition}
+
+\constfunc{long}{GetFirstVisiblePosition}{\void}
+
+Returns the first visible position in the current view.
+
+\membersection{wxRichTextCtrl::GetInsertionPoint}\label{wxrichtextctrlgetinsertionpoint}
+
+\constfunc{long}{GetInsertionPoint}{\void}
+
+Returns the current insertion point.
+
+\membersection{wxRichTextCtrl::GetLastPosition}\label{wxrichtextctrlgetlastposition}
+
+\constfunc{wxTextPos}{GetLastPosition}{\void}
+
+Returns the last position in the buffer.
+
+\membersection{wxRichTextCtrl::GetLineLength}\label{wxrichtextctrlgetlinelength}
+
+\constfunc{int}{GetLineLength}{\param{long }{lineNo}}
+
+Returns the length of the specified line in characters.
+
+\membersection{wxRichTextCtrl::GetLineText}\label{wxrichtextctrlgetlinetext}
+
+\constfunc{wxString}{GetLineText}{\param{long }{lineNo}}
+
+Returns the text for the given line.
+
+\membersection{wxRichTextCtrl::GetLogicalPoint}\label{wxrichtextctrlgetlogicalpoint}
+
+\constfunc{wxPoint}{GetLogicalPoint}{\param{const wxPoint\& }{ptPhysical}}
+
+Transforms physical window position to logical (unscrolled) position.
+
+\membersection{wxRichTextCtrl::GetNumberOfLines}\label{wxrichtextctrlgetnumberoflines}
+
+\constfunc{int}{GetNumberOfLines}{\void}
+
+Returns the number of lines in the buffer.
+
+\membersection{wxRichTextCtrl::GetPhysicalPoint}\label{wxrichtextctrlgetphysicalpoint}
+
+\constfunc{wxPoint}{GetPhysicalPoint}{\param{const wxPoint\& }{ptLogical}}
+
+Transforms logical (unscrolled) position to physical window position.
+
+\membersection{wxRichTextCtrl::GetRange}\label{wxrichtextctrlgetrange}
+
+\constfunc{wxString}{GetRange}{\param{long }{from}, \param{long }{to}}
+
+Gets the text for the given range.
+
+\membersection{wxRichTextCtrl::GetSelection}\label{wxrichtextctrlgetselection}
+
+\constfunc{void}{GetSelection}{\param{long* }{from}, \param{long* }{to}}
+
+Returns the range of the current selection. If the return values {\it from} and {\it to} are the same, there is no selection.
+
+\membersection{wxRichTextCtrl::GetSelectionRange}\label{wxrichtextctrlgetselectionrange}
+
+\constfunc{const wxRichTextRange\&}{GetSelectionRange}{\void}
+
+Returns the selection range in character positions. -1, -1 means no selection.
+
+\membersection{wxRichTextCtrl::GetStringSelection}\label{wxrichtextctrlgetstringselection}
+
+\constfunc{wxString}{GetStringSelection}{\void}
+
+Returns the text within the current selection range, if any.
+
+\membersection{wxRichTextCtrl::GetStyle}\label{wxrichtextctrlgetstyle}
+
+\constfunc{bool}{GetStyle}{\param{long }{position}, \param{wxRichTextAttr\& }{style}}
+
+\constfunc{bool}{GetStyle}{\param{long }{position}, \param{wxTextAttrEx\& }{style}}
+
+Gets the attributes at the given position. The wxRichTextAttr version is generally more efficient
+because it does not use wxFont objects.
+
+\membersection{wxRichTextCtrl::GetStyleSheet}\label{wxrichtextctrlgetstylesheet}
+
+\constfunc{wxRichTextStyleSheet*}{GetStyleSheet}{\void}
+
+Returns the style sheet associated with the control, if any. A style sheet allows named
+character and paragraph styles to be applied.
+
+\membersection{wxRichTextCtrl::GetValue}\label{wxrichtextctrlgetvalue}
+
+\constfunc{wxString}{GetValue}{\void}
+
+Returns the content of the entire control as a string.
+
+\membersection{wxRichTextCtrl::GetVisibleLineForCaretPosition}\label{wxrichtextctrlgetvisiblelineforcaretposition}
+
+\constfunc{wxRichTextLine*}{GetVisibleLineForCaretPosition}{\param{long }{caretPosition}}
+
+Internal helper function returning the line for the visible caret position. If the caret is
+shown at the very end of the line, it means the next character is actually
+on the following line. So this function gets the line we're expecting to find
+if this is the case.
+
+\membersection{wxRichTextCtrl::HasCharacterAttributes}\label{wxrichtextctrlhascharacterattributes}
+
+\constfunc{bool}{HasCharacterAttributes}{\param{const wxRichTextRange\& }{range}, \param{const wxTextAttrEx\& }{style}}
+
+\constfunc{bool}{HasCharacterAttributes}{\param{const wxRichTextRange\& }{range}, \param{const wxRichTextAttr\& }{style}}
+
+Test if this whole range has character attributes of the specified kind. If any
+of the attributes are different within the range, the test fails. You
+can use this to implement, for example, bold button updating. {\it style} must have
+flags indicating which attributes are of interest.
+
+\membersection{wxRichTextCtrl::HasParagraphAttributes}\label{wxrichtextctrlhasparagraphattributes}
+
+\constfunc{bool}{HasParagraphAttributes}{\param{const wxRichTextRange\& }{range}, \param{const wxTextAttrEx\& }{style}}
+
+\constfunc{bool}{HasParagraphAttributes}{\param{const wxRichTextRange\& }{range}, \param{const wxRichTextAttr\& }{style}}
+
+Test if this whole range has paragraph attributes of the specified kind. If any
+of the attributes are different within the range, the test fails. You
+can use this to implement, for example, centering button updating. {\it style} must have
+flags indicating which attributes are of interest.
+
+\membersection{wxRichTextCtrl::HasSelection}\label{wxrichtextctrlhasselection}
+
+\constfunc{bool}{HasSelection}{\void}
+
+Returns \true if there is a selection.
+
+\membersection{wxRichTextCtrl::HitTest}\label{wxrichtextctrlhittest}
+
+\constfunc{wxTextCtrlHitTestResult}{HitTest}{\param{const wxPoint\& }{pt}, \param{long* }{pos}}
+
+\constfunc{wxTextCtrlHitTestResult}{HitTest}{\param{const wxPoint\& }{pt}, \param{wxTextCoord* }{col}, \param{wxTextCoord* }{row}}
+
+Finds the character at the given position in pixels.
+
+{\it pt} is in device coords (not adjusted for the client area origin nor for scrolling).
+
+\membersection{wxRichTextCtrl::Init}\label{wxrichtextctrlinit}
+
+\func{void}{Init}{\void}
+
+Initialises the members of the control.
+
+\membersection{wxRichTextCtrl::InitCommandEvent}\label{wxrichtextctrlinitcommandevent}
+
+\constfunc{void}{InitCommandEvent}{\param{wxCommandEvent\& }{event}}
+
+Initialises the command event.
+
+\membersection{wxRichTextCtrl::IsEditable}\label{wxrichtextctrliseditable}
+
+\constfunc{bool}{IsEditable}{\void}
+
+Returns \true if the control is editable.
+
+\membersection{wxRichTextCtrl::IsFrozen}\label{wxrichtextctrlisfrozen}
+
+\constfunc{bool}{IsFrozen}{\void}
+
+Returns \true if Freeze has been called without a Thaw.
+
+\membersection{wxRichTextCtrl::IsModified}\label{wxrichtextctrlismodified}
+
+\constfunc{bool}{IsModified}{\void}
+
+Returns \true if the buffer has been modified.
+
+\membersection{wxRichTextCtrl::IsMultiLine}\label{wxrichtextctrlismultiline}
+
+\constfunc{bool}{IsMultiLine}{\void}
+
+Returns \true if the control is multiline.
+
+\membersection{wxRichTextCtrl::IsPositionVisible}\label{wxrichtextctrlispositionvisible}
+
+\constfunc{bool}{IsPositionVisible}{\param{long }{pos}}
+
+Returns \true if the given position is visible on the screen.
+
+\membersection{wxRichTextCtrl::IsSelectionAligned}\label{wxrichtextctrlisselectionaligned}
+
+\constfunc{bool}{IsSelectionAligned}{\param{wxTextAttrAlignment }{alignment}}
+
+Returns \true if all of the selection is aligned according to the specified flag.
+
+\membersection{wxRichTextCtrl::IsSelectionBold}\label{wxrichtextctrlisselectionbold}
+
+\constfunc{bool}{IsSelectionBold}{\void}
+
+Returns \true if all of the selection is bold.
+
+\membersection{wxRichTextCtrl::IsSelectionItalics}\label{wxrichtextctrlisselectionitalics}
+
+\constfunc{bool}{IsSelectionItalics}{\void}
+
+Returns \true if all of the selection is italic.
+
+\membersection{wxRichTextCtrl::IsSelectionUnderlined}\label{wxrichtextctrlisselectionunderlined}
+
+\constfunc{bool}{IsSelectionUnderlined}{\void}
+
+Returns \true if all of the selection is underlined.
+
+\membersection{wxRichTextCtrl::IsSingleLine}\label{wxrichtextctrlissingleline}
+
+\constfunc{bool}{IsSingleLine}{\void}
+
+Returns \true if the control is single-line. Currently wxRichTextCtrl does not
+support single-line editing.
+
+\membersection{wxRichTextCtrl::KeyboardNavigate}\label{wxrichtextctrlkeyboardnavigate}
+
+\func{bool}{KeyboardNavigate}{\param{int }{keyCode}, \param{int }{flags}}
+
+Helper function implementing keyboard navigation.
+
+\membersection{wxRichTextCtrl::LayoutContent}\label{wxrichtextctrllayoutcontent}
+
+\func{bool}{LayoutContent}{\param{bool }{onlyVisibleRect = false}}
+
+Lays out the buffer, which must be done before certain operations, such as
+setting the caret position. This function should not normally be required by the
+application.
+
+\membersection{wxRichTextCtrl::LoadFile}\label{wxrichtextctrlloadfile}
+
+\func{bool}{LoadFile}{\param{const wxString\& }{file}, \param{int }{type = wxRICHTEXT\_TYPE\_ANY}}
+
+Loads content into the control's buffer using the given type. If the specified type
+is wxRICHTEXT\_TYPE\_ANY, the type is deduced from the filename extension.
+
+This function looks for a suitable \helpref{wxRichTextFileHandler}{wxrichtextfilehandler} object.
+
+\membersection{wxRichTextCtrl::MarkDirty}\label{wxrichtextctrlmarkdirty}
+
+\func{void}{MarkDirty}{\void}
+
+Marks the buffer as modified.
+
+\membersection{wxRichTextCtrl::MoveCaret}\label{wxrichtextctrlmovecaret}
+
+\func{bool}{MoveCaret}{\param{long }{pos}, \param{bool }{showAtLineStart = false}}
+
+Move the caret to the given character position.
+
+\membersection{wxRichTextCtrl::MoveCaretBack}\label{wxrichtextctrlmovecaretback}
+
+\func{void}{MoveCaretBack}{\param{long }{oldPosition}}
+
+Move the caret one visual step forward: this may mean setting a flag
+and keeping the same position if we're going from the end of one line
+to the start of the next, which may be the exact same caret position.
+
+\membersection{wxRichTextCtrl::MoveCaretForward}\label{wxrichtextctrlmovecaretforward}
+
+\func{void}{MoveCaretForward}{\param{long }{oldPosition}}
+
+Move the caret one visual step forward: this may mean setting a flag
+and keeping the same position if we're going from the end of one line
+to the start of the next, which may be the exact same caret position.
+
+\membersection{wxRichTextCtrl::MoveDown}\label{wxrichtextctrlmovedown}
+
+\func{bool}{MoveDown}{\param{int }{noLines = 1}, \param{int }{flags = 0}}
+
+Moves the caret down.
+
+\membersection{wxRichTextCtrl::MoveEnd}\label{wxrichtextctrlmoveend}
+
+\func{bool}{MoveEnd}{\param{int }{flags = 0}}
+
+Moves to the end of the buffer.
+
+\membersection{wxRichTextCtrl::MoveHome}\label{wxrichtextctrlmovehome}
+
+\func{bool}{MoveHome}{\param{int }{flags = 0}}
+
+Moves to the start of the buffer.
+
+\membersection{wxRichTextCtrl::MoveLeft}\label{wxrichtextctrlmoveleft}
+
+\func{bool}{MoveLeft}{\param{int }{noPositions = 1}, \param{int }{flags = 0}}
+
+Moves left.
+
+\membersection{wxRichTextCtrl::MoveRight}\label{wxrichtextctrlmoveright}
+
+\func{bool}{MoveRight}{\param{int }{noPositions = 1}, \param{int }{flags = 0}}
+
+Moves right.
+
+\membersection{wxRichTextCtrl::MoveToLineEnd}\label{wxrichtextctrlmovetolineend}
+
+\func{bool}{MoveToLineEnd}{\param{int }{flags = 0}}
+
+Moves to the end of the line.
+
+\membersection{wxRichTextCtrl::MoveToLineStart}\label{wxrichtextctrlmovetolinestart}
+
+\func{bool}{MoveToLineStart}{\param{int }{flags = 0}}
+
+Moves to the start of the line.
+
+\membersection{wxRichTextCtrl::MoveToParagraphEnd}\label{wxrichtextctrlmovetoparagraphend}
+
+\func{bool}{MoveToParagraphEnd}{\param{int }{flags = 0}}
+
+Moves to the end of the paragraph.
+
+\membersection{wxRichTextCtrl::MoveToParagraphStart}\label{wxrichtextctrlmovetoparagraphstart}
+
+\func{bool}{MoveToParagraphStart}{\param{int }{flags = 0}}
+
+Moves to the start of the paragraph.
+
+\membersection{wxRichTextCtrl::MoveUp}\label{wxrichtextctrlmoveup}
+
+\func{bool}{MoveUp}{\param{int }{noLines = 1}, \param{int }{flags = 0}}
+
+Moves up.
+
+\membersection{wxRichTextCtrl::Newline}\label{wxrichtextctrlnewline}
+
+\func{bool}{Newline}{\void}
+
+Insert a newline (actually paragraph) at the current insertion point.
+
+\membersection{wxRichTextCtrl::OnClear}\label{wxrichtextctrlonclear}
+
+\func{void}{OnClear}{\param{wxCommandEvent\& }{event}}
+
+Standard handler for the wxID\_CLEAR command.
+
+\membersection{wxRichTextCtrl::OnContextMenu}\label{wxrichtextctrloncontextmenu}
+
+\func{void}{OnContextMenu}{\param{wxContextMenuEvent\& }{event}}
+
+Shows a standard context menu with undo, redo, cut, copy, paste, clear, and select all commands.
+
+\membersection{wxRichTextCtrl::OnCopy}\label{wxrichtextctrloncopy}
+
+\func{void}{OnCopy}{\param{wxCommandEvent\& }{event}}
+
+Standard handler for the wxID\_COPY command.
+
+\membersection{wxRichTextCtrl::OnCut}\label{wxrichtextctrloncut}
+
+\func{void}{OnCut}{\param{wxCommandEvent\& }{event}}
+
+Standard handler for the wxID\_CUT command.
+
+\membersection{wxRichTextCtrl::OnDropFiles}\label{wxrichtextctrlondropfiles}
+
+\func{void}{OnDropFiles}{\param{wxDropFilesEvent\& }{event}}
+
+Loads the first dropped file.
+
+\membersection{wxRichTextCtrl::OnPaste}\label{wxrichtextctrlonpaste}
+
+\func{void}{OnPaste}{\param{wxCommandEvent\& }{event}}
+
+Standard handler for the wxID\_PASTE command.
+
+\membersection{wxRichTextCtrl::OnRedo}\label{wxrichtextctrlonredo}
+
+\func{void}{OnRedo}{\param{wxCommandEvent\& }{event}}
+
+Standard handler for the wxID\_REDO command.
+
+\membersection{wxRichTextCtrl::OnSelectAll}\label{wxrichtextctrlonselectall}
+
+\func{void}{OnSelectAll}{\param{wxCommandEvent\& }{event}}
+
+Standard handler for the wxID\_SELECTALL command.
+
+\membersection{wxRichTextCtrl::OnUndo}\label{wxrichtextctrlonundo}
+
+\func{void}{OnUndo}{\param{wxCommandEvent\& }{event}}
+
+Standard handler for the wxID\_PASTE command.
+
+\membersection{wxRichTextCtrl::OnUpdateClear}\label{wxrichtextctrlonupdateclear}
+
+\func{void}{OnUpdateClear}{\param{wxUpdateUIEvent\& }{event}}
+
+Standard update handler for the wxID\_CLEAR command.
+
+\membersection{wxRichTextCtrl::OnUpdateCopy}\label{wxrichtextctrlonupdatecopy}
+
+\func{void}{OnUpdateCopy}{\param{wxUpdateUIEvent\& }{event}}
+
+Standard update handler for the wxID\_COPY command.
+
+\membersection{wxRichTextCtrl::OnUpdateCut}\label{wxrichtextctrlonupdatecut}
+
+\func{void}{OnUpdateCut}{\param{wxUpdateUIEvent\& }{event}}
+
+Standard update handler for the wxID\_CUT command.
+
+\membersection{wxRichTextCtrl::OnUpdatePaste}\label{wxrichtextctrlonupdatepaste}
+
+\func{void}{OnUpdatePaste}{\param{wxUpdateUIEvent\& }{event}}
+
+Standard update handler for the wxID\_PASTE command.
+
+\membersection{wxRichTextCtrl::OnUpdateRedo}\label{wxrichtextctrlonupdateredo}
+
+\func{void}{OnUpdateRedo}{\param{wxUpdateUIEvent\& }{event}}
+
+Standard update handler for the wxID\_REDO command.
+
+\membersection{wxRichTextCtrl::OnUpdateSelectAll}\label{wxrichtextctrlonupdateselectall}
+
+\func{void}{OnUpdateSelectAll}{\param{wxUpdateUIEvent\& }{event}}
+
+Standard update handler for the wxID\_SELECTALL command.
+
+\membersection{wxRichTextCtrl::OnUpdateUndo}\label{wxrichtextctrlonupdateundo}
+
+\func{void}{OnUpdateUndo}{\param{wxUpdateUIEvent\& }{event}}
+
+Standard update handler for the wxID\_UNDO command.
+
+\membersection{wxRichTextCtrl::PageDown}\label{wxrichtextctrlpagedown}
+
+\func{bool}{PageDown}{\param{int }{noPages = 1}, \param{int }{flags = 0}}
+
+Moves one or more pages down.
+
+\membersection{wxRichTextCtrl::PageUp}\label{wxrichtextctrlpageup}
+
+\func{bool}{PageUp}{\param{int }{noPages = 1}, \param{int }{flags = 0}}
+
+Moves one or more pages up.
+
+\membersection{wxRichTextCtrl::PaintBackground}\label{wxrichtextctrlpaintbackground}
+
+\func{void}{PaintBackground}{\param{wxDC\& }{dc}}
+
+Paints the background.
+
+\membersection{wxRichTextCtrl::Paste}\label{wxrichtextctrlpaste}
+
+\func{void}{Paste}{\void}
+
+Pastes content from the clipboard to the buffer.
+
+\membersection{wxRichTextCtrl::PositionCaret}\label{wxrichtextctrlpositioncaret}
+
+\func{void}{PositionCaret}{\void}
+
+Internal function to position the visible caret according to the current caret position.
+
+\membersection{wxRichTextCtrl::PositionToXY}\label{wxrichtextctrlpositiontoxy}
+
+\constfunc{bool}{PositionToXY}{\param{long }{pos}, \param{long* }{x}, \param{long* }{y}}
+
+Converts a text position to zero-based column and line numbers.
+
+\membersection{wxRichTextCtrl::Redo}\label{wxrichtextctrlredo}
+
+\func{void}{Redo}{\void}
+
+Redoes the current command.
+
+\membersection{wxRichTextCtrl::Remove}\label{wxrichtextctrlremove}
+
+\func{void}{Remove}{\param{long }{from}, \param{long }{to}}
+
+Removes the content in the specified range.
+
+\membersection{wxRichTextCtrl::Replace}\label{wxrichtextctrlreplace}
+
+\func{void}{Replace}{\param{long }{from}, \param{long }{to}, \param{const wxString\& }{value}}
+
+Replaces the content in the specified range with the string specified by {\it value}.
+
+\membersection{wxRichTextCtrl::SaveFile}\label{wxrichtextctrlsavefile}
+
+\func{bool}{SaveFile}{\param{const wxString\& }{file = wxEmptyString}, \param{int }{type = wxRICHTEXT\_TYPE\_ANY}}
+
+Saves the buffer content using the given type. If the specified type
+is wxRICHTEXT\_TYPE\_ANY, the type is deduced from the filename extension.
+
+This function looks for a suitable \helpref{wxRichTextFileHandler}{wxrichtextfilehandler} object.
+
+\membersection{wxRichTextCtrl::ScrollIntoView}\label{wxrichtextctrlscrollintoview}
+
+\func{bool}{ScrollIntoView}{\param{long }{position}, \param{int }{keyCode}}
+
+Scrolls {\it position} into view. This function takes a caret position.
+
+\membersection{wxRichTextCtrl::SelectAll}\label{wxrichtextctrlselectall}
+
+\func{void}{SelectAll}{\void}
+
+Selects all the text in the buffer.
+
+\membersection{wxRichTextCtrl::SelectNone}\label{wxrichtextctrlselectnone}
+
+\func{void}{SelectNone}{\void}
+
+Cancels any selection.
+
+\membersection{wxRichTextCtrl::SetBasicStyle}\label{wxrichtextctrlsetbasicstyle}
+
+\func{void}{SetBasicStyle}{\param{const wxRichTextAttr\& }{style}}
+
+\func{void}{SetBasicStyle}{\param{const wxTextAttrEx\& }{style}}
+
+Sets the basic (overall) style. This is the style of the whole
+buffer before further styles are applied, unlike the default style, which
+only affects the style currently being applied (for example, setting the default
+style to bold will cause subsequently inserted text to be bold).
+
+\membersection{wxRichTextCtrl::SetCaretPosition}\label{wxrichtextctrlsetcaretposition}
+
+\func{void}{SetCaretPosition}{\param{long }{position}, \param{bool }{showAtLineStart = false}}
+
+The caret position is the character position just before the caret.
+A value of -1 means the caret is at the start of the buffer.
+
+\membersection{wxRichTextCtrl::SetDefaultStyle}\label{wxrichtextctrlsetdefaultstyle}
+
+\func{bool}{SetDefaultStyle}{\param{const wxTextAttrEx\& }{style}}
+
+Sets the current default style, which can be used to change how subsequently inserted
+text is displayed.
+
+\membersection{wxRichTextCtrl::SetDefaultStyleToCursorStyle}\label{wxrichtextctrlsetdefaultstyletocursorstyle}
+
+\func{bool}{SetDefaultStyleToCursorStyle}{\void}
+
+Sets the default style to the style under the cursor.
+
+\membersection{wxRichTextCtrl::SetDelayedLayoutThreshold}\label{wxrichtextctrlsetdelayedlayoutthreshold}
+
+\func{void}{SetDelayedLayoutThreshold}{\param{long }{threshold}}
+
+Sets the size of the buffer beyond which layout is delayed during resizing.
+This optimizes sizing for large buffers. The default is 20000.
+
+\membersection{wxRichTextCtrl::SetEditable}\label{wxrichtextctrlseteditable}
+
+\func{void}{SetEditable}{\param{bool }{editable}}
+
+Makes the control editable, or not.
+
+\membersection{wxRichTextCtrl::SetFilename}\label{wxrichtextctrlsetfilename}
+
+\func{void}{SetFilename}{\param{const wxString\& }{filename}}
+
+Sets the current filename.
+
+\membersection{wxRichTextCtrl::SetFont}\label{wxrichtextctrlsetfont}
+
+\func{bool}{SetFont}{\param{const wxFont\& }{font}}
+
+Sets the font, and also the basic and default attributes (see \helpref{SetDefaultStyle}{wxrichtextctrlsetdefaultstyle}).
+
+\membersection{wxRichTextCtrl::SetInsertionPoint}\label{wxrichtextctrlsetinsertionpoint}
+
+\func{void}{SetInsertionPoint}{\param{long }{pos}}
+
+Sets the insertion point.
+
+\membersection{wxRichTextCtrl::SetInsertionPointEnd}\label{wxrichtextctrlsetinsertionpointend}
+
+\func{void}{SetInsertionPointEnd}{\void}
+
+Sets the insertion point to the end of the text control.
+
+\membersection{wxRichTextCtrl::SetSelection}\label{wxrichtextctrlsetselection}
+
+\func{void}{SetSelection}{\param{long }{from}, \param{long }{to}}
+
+Sets the selection to the given range.
+
+\membersection{wxRichTextCtrl::SetSelectionRange}\label{wxrichtextctrlsetselectionrange}
+
+\func{void}{SetSelectionRange}{\param{const wxRichTextRange\& }{range}}
+
+Sets the selection to the given range.
+
+\membersection{wxRichTextCtrl::SetStyle}\label{wxrichtextctrlsetstyle}
+
+\func{bool}{SetStyle}{\param{const wxRichTextRange\& }{range}, \param{const wxRichTextAttr\& }{style}}
+
+\func{bool}{SetStyle}{\param{long }{start}, \param{long }{end}, \param{const wxTextAttrEx\& }{style}}
+
+Sets the attributes for the given range. The wxRichTextAttr version is more efficient
+because it does not use wxFont objects.
+
+\membersection{wxRichTextCtrl::SetStyleSheet}\label{wxrichtextctrlsetstylesheet}
+
+\func{void}{SetStyleSheet}{\param{wxRichTextStyleSheet* }{styleSheet}}
+
+Sets the style sheet associated with the control. A style sheet allows named
+character and paragraph styles to be applied.
+
+\membersection{wxRichTextCtrl::SetValue}\label{wxrichtextctrlsetvalue}
+
+\func{void}{SetValue}{\param{const wxString\& }{value}}
+
+Replaces existing content with the given text.
+
+\membersection{wxRichTextCtrl::SetupScrollbars}\label{wxrichtextctrlsetupscrollbars}
+
+\func{void}{SetupScrollbars}{\param{bool }{atTop = false}}
+
+A helper function setting up scrollbars, for example after a resize.
+
+\membersection{wxRichTextCtrl::ShowPosition}\label{wxrichtextctrlshowposition}
+
+\func{void}{ShowPosition}{\param{long }{pos}}
+
+Scrolls the buffer so that the given position is in view.
+
+\membersection{wxRichTextCtrl::SuppressingUndo}\label{wxrichtextctrlsuppressingundo}
+
+\constfunc{bool}{SuppressingUndo}{\void}
+
+Returns \true if undo history suppression is on.
+
+\membersection{wxRichTextCtrl::Thaw}\label{wxrichtextctrlthaw}
+
+\func{void}{Thaw}{\void}
+
+Call this function to end a Freeze and refresh the display.
+
+\membersection{wxRichTextCtrl::Undo}\label{wxrichtextctrlundo}
+
+\func{void}{Undo}{\void}
+
+Undoes the command at the top of the command history, if there is one.
+
+\membersection{wxRichTextCtrl::WordLeft}\label{wxrichtextctrlwordleft}
+
+\func{bool}{WordLeft}{\param{int }{noWords = 1}, \param{int }{flags = 0}}
+
+Moves a number of words to the left.
+
+\membersection{wxRichTextCtrl::WordRight}\label{wxrichtextctrlwordright}
+
+\func{bool}{WordRight}{\param{int }{noWords = 1}, \param{int }{flags = 0}}
+
+Move a nuber of words to the right.
+
+\membersection{wxRichTextCtrl::WriteImage}\label{wxrichtextctrlwriteimage}
+
+\func{bool}{WriteImage}{\param{const wxString\& }{filename}, \param{int }{bitmapType}}
+
+Loads an image from a file and writes it at the current insertion point.
+
+\func{bool}{WriteImage}{\param{const wxRichTextImageBlock\& }{imageBlock}}
+
+Writes an image block at the current insertion point.
+
+\func{bool}{WriteImage}{\param{const wxBitmap\& }{bitmap}, \param{int }{bitmapType = wxBITMAP\_TYPE\_PNG}}
+
+\func{bool}{WriteImage}{\param{const wxImage\& }{image}, \param{int }{bitmapType = wxBITMAP\_TYPE\_PNG}}
+
+Write a bitmap or image at the current insertion point. Supply an optional type to use
+for internal and file storage of the raw data.
+
+\membersection{wxRichTextCtrl::WriteText}\label{wxrichtextctrlwritetext}
+
+\func{void}{WriteText}{\param{const wxString\& }{text}}
+
+Writes text at the current position.
+
+\membersection{wxRichTextCtrl::XYToPosition}\label{wxrichtextctrlxytoposition}
+
+\constfunc{long}{XYToPosition}{\param{long }{x}, \param{long }{y}}
+
+Translates from column and line number to position.
diff --git a/docs/latex/wx/richtextevent.tex b/docs/latex/wx/richtextevent.tex
new file mode 100644
index 0000000000..6214a6dea7
--- /dev/null
+++ b/docs/latex/wx/richtextevent.tex
@@ -0,0 +1,70 @@
+\section{\class{wxRichTextEvent}}\label{wxrichtextevent}
+
+This is the event class for wxRichTextCtrl notifications. Note that event generation
+is very incomplete; we need to implement events such as selection of text, deletion,
+insertion, and so on.
+
+\wxheading{Event table macros}
+
+To process a rich text event, use these event handler macros to direct input to a member
+function that takes a wxRichTextEvent argument.
+
+\twocolwidtha{7cm}
+\begin{twocollist}\itemsep=0pt
+\twocolitem{{\bf EVT\_RICHTEXT\_LEFT\_CLICK(id, func)}}{Process a wxEVT\_COMMAND\_RICHTEXT\_LEFT\_CLICK event. Not currently implemented.}
+\twocolitem{{\bf EVT\_RICHTEXT\_RIGHT\_CLICK(id, func)}}{Process a wxEVT\_COMMAND\_RICHTEXT\_RIGHT\_CLICK event. Not currently implemented.}
+\twocolitem{{\bf EVT\_RICHTEXT\_MIDDLE\_CLICK(id, func)}}{Process a wxEVT\_COMMAND\_RICHTEXT\_MIDDLE\_CLICK event. Not currently implemented.}
+\twocolitem{{\bf EVT\_RICHTEXT\_LEFT\_DCLICK(id, func)}}{Process a wxEVT\_COMMAND\_RICHTEXT\_LEFT\_DCLICK event. Not currently implemented.}
+\twocolitem{{\bf EVT\_RICHTEXT\_RETURN(id, func)}}{Process a wxEVT\_COMMAND\_RICHTEXT\_RETURN event, generated when the user presses the return key.}
+\end{twocollist}%
+ 
+\wxheading{Derived from}
+
+\helpref{wxNotifyEvent}{wxnotifyevent}
+
+\wxheading{Include files}
+
+<wx/richtext/richtextctrl.h>
+
+\wxheading{Data structures}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxRichTextEvent::wxRichTextEvent}\label{wxrichtexteventwxrichtextevent}
+
+\func{}{wxRichTextEvent}{\param{const wxRichTextEvent\& }{event}}
+
+\func{}{wxRichTextEvent}{\param{wxEventType }{commandType = wxEVT\_NULL}, \param{int }{winid = 0}}
+
+Constructors.
+
+\membersection{wxRichTextEvent::Clone}\label{wxrichtexteventclone}
+
+\constfunc{wxEvent*}{Clone}{\void}
+
+Clones the event.
+
+\membersection{wxRichTextEvent::GetFlags}\label{wxrichtexteventgetflags}
+
+\constfunc{int}{GetFlags}{\void}
+
+Returns flags indicating modifier keys pressed.
+
+\membersection{wxRichTextEvent::GetIndex}\label{wxrichtexteventgetindex}
+
+\constfunc{int}{GetIndex}{\void}
+
+Not currently used.
+
+\membersection{wxRichTextEvent::SetFlags}\label{wxrichtexteventsetflags}
+
+\func{void}{SetFlags}{\param{int }{flags}}
+
+Sets flags indicating modifier keys pressed. Possible values are wxRICHTEXT\_CTRL\_DOWN,
+wxRICHTEXT\_SHIFT\_DOWN, andwxRICHTEXT\_ALT\_DOWN.
+
+\membersection{wxRichTextEvent::SetIndex}\label{wxrichtexteventsetindex}
+
+\func{void}{SetIndex}{\param{int }{n}}
+
+Not currently used.
diff --git a/docs/latex/wx/richtextfilehandler.tex b/docs/latex/wx/richtextfilehandler.tex
new file mode 100644
index 0000000000..0e6c27c1b9
--- /dev/null
+++ b/docs/latex/wx/richtextfilehandler.tex
@@ -0,0 +1,130 @@
+\section{\class{wxRichTextFileHandler}}\label{wxrichtextfilehandler}
+
+This is the base class for file handlers, for loading and/or saving content
+associated with a \helpref{wxRichTextBuffer}{wxrichtextbuffer}.
+
+\wxheading{Derived from}
+
+\helpref{wxObject}{wxobject}
+
+\wxheading{Include files}
+
+<wx/richtext/richtextbuffer.h>
+
+\wxheading{Data structures}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxRichTextFileHandler::wxRichTextFileHandler}\label{wxrichtextfilehandlerwxrichtextfilehandler}
+
+\func{}{wxRichTextFileHandler}{\param{const wxString\& }{name = wxEmptyString}, \param{const wxString\& }{ext = wxEmptyString}, \param{int }{type = 0}}
+
+Constructor.
+
+\membersection{wxRichTextFileHandler::CanHandle}\label{wxrichtextfilehandlercanhandle}
+
+\constfunc{bool}{CanHandle}{\param{const wxString\& }{filename}}
+
+Override this function and return \true if this handler can we handle {\it filename}. By default,
+this function checks the extension.
+
+\membersection{wxRichTextFileHandler::CanLoad}\label{wxrichtextfilehandlercanload}
+
+\constfunc{bool}{CanLoad}{\void}
+
+Override and return \true if this handler can load content.
+
+\membersection{wxRichTextFileHandler::CanSave}\label{wxrichtextfilehandlercansave}
+
+\constfunc{bool}{CanSave}{\void}
+
+Override and return \true if this handler can save content.
+
+\membersection{wxRichTextFileHandler::DoLoadFile}\label{wxrichtextfilehandlerdoloadfile}
+
+\func{bool}{DoLoadFile}{\param{wxRichTextBuffer* }{buffer}, \param{wxInputStream\& }{stream}}
+
+Override to load content from {\it stream} into {\it buffer}.
+
+\membersection{wxRichTextFileHandler::DoSaveFile}\label{wxrichtextfilehandlerdosavefile}
+
+\func{bool}{DoSaveFile}{\param{wxRichTextBuffer* }{buffer}, \param{wxOutputStream\& }{stream}}
+
+Override to save content to {\it stream} from {\it buffer}.
+
+\membersection{wxRichTextFileHandler::GetEncoding}\label{wxrichtextfilehandlergetencoding}
+
+\constfunc{const wxString\&}{GetEncoding}{\void}
+
+Returns the encoding associated with the handler (if any).
+
+\membersection{wxRichTextFileHandler::GetExtension}\label{wxrichtextfilehandlergetextension}
+
+\constfunc{wxString}{GetExtension}{\void}
+
+Returns the extension associated with the handler.
+
+\membersection{wxRichTextFileHandler::GetName}\label{wxrichtextfilehandlergetname}
+
+\constfunc{wxString}{GetName}{\void}
+
+Returns the name of the handler.
+
+\membersection{wxRichTextFileHandler::GetType}\label{wxrichtextfilehandlergettype}
+
+\constfunc{int}{GetType}{\void}
+
+Returns the type of the handler.
+
+\membersection{wxRichTextFileHandler::IsVisible}\label{wxrichtextfilehandlerisvisible}
+
+\constfunc{bool}{IsVisible}{\void}
+
+Returns \true if this handler should be visible to the user.
+
+\membersection{wxRichTextFileHandler::LoadFile}\label{wxrichtextfilehandlerloadfile}
+
+\func{bool}{LoadFile}{\param{wxRichTextBuffer* }{buffer}, \param{wxInputStream\& }{stream}}
+
+\func{bool}{LoadFile}{\param{wxRichTextBuffer* }{buffer}, \param{const wxString\& }{filename}}
+
+Loads content from a stream or file. Not all handlers will implement file loading.
+
+\membersection{wxRichTextFileHandler::SaveFile}\label{wxrichtextfilehandlersavefile}
+
+\func{bool}{SaveFile}{\param{wxRichTextBuffer* }{buffer}, \param{wxOutputStream\& }{stream}}
+
+\func{bool}{SaveFile}{\param{wxRichTextBuffer* }{buffer}, \param{const wxString\& }{filename}}
+
+Saves content to a stream or file. Not all handlers will implement file saving.
+
+\membersection{wxRichTextFileHandler::SetEncoding}\label{wxrichtextfilehandlersetencoding}
+
+\func{void}{SetEncoding}{\param{const wxString\& }{encoding}}
+
+Sets the encoding to use when saving a file. If empty, a suitable encoding is chosen.
+
+\membersection{wxRichTextFileHandler::SetExtension}\label{wxrichtextfilehandlersetextension}
+
+\func{void}{SetExtension}{\param{const wxString\& }{ext}}
+
+Sets the default extension to recognise.
+
+\membersection{wxRichTextFileHandler::SetName}\label{wxrichtextfilehandlersetname}
+
+\func{void}{SetName}{\param{const wxString\& }{name}}
+
+Sets the name of the handler.
+
+\membersection{wxRichTextFileHandler::SetType}\label{wxrichtextfilehandlersettype}
+
+\func{void}{SetType}{\param{int }{type}}
+
+Sets the handler type.
+
+\membersection{wxRichTextFileHandler::SetVisible}\label{wxrichtextfilehandlersetvisible}
+
+\func{void}{SetVisible}{\param{bool }{visible}}
+
+Sets whether the handler should be visible to the user (via the application's load and save
+dialogs).
diff --git a/docs/latex/wx/richtexthtmlhandler.tex b/docs/latex/wx/richtexthtmlhandler.tex
new file mode 100644
index 0000000000..17a90e9137
--- /dev/null
+++ b/docs/latex/wx/richtexthtmlhandler.tex
@@ -0,0 +1,27 @@
+\section{\class{wxRichTextHTMLHandler}}\label{wxrichtexthtmlhandler}
+
+Handles HTML output (only) for \helpref{wxRichTextCtrl}{wxrichtextctrl} content.
+
+\wxheading{Derived from}
+
+\helpref{wxRichTextFileHandler}{wxrichtextfilehandler}
+
+\wxheading{Include files}
+
+<wx/richtext/richtexthtml.h>
+
+\wxheading{Data structures}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxRichTextHTMLHandler::wxRichTextHTMLHandler}\label{wxrichtexthtmlhandlerwxrichtexthtmlhandler}
+
+\func{}{wxRichTextHTMLHandler}{\param{const wxString\& }{name = wxT("HTML")}, \param{const wxString\& }{ext = wxT("html")}, \param{int }{type = wxRICHTEXT\_TYPE\_HTML}}
+
+Constructor.
+
+\membersection{wxRichTextHTMLHandler::DoSaveFile}\label{wxrichtexthtmlhandlerdosavefile}
+
+\func{bool}{DoSaveFile}{\param{wxRichTextBuffer* }{buffer}, \param{wxOutputStream\& }{stream}}
+
+Saves the buffer content to the HTML stream.
diff --git a/docs/latex/wx/richtextoverview.tex b/docs/latex/wx/richtextoverview.tex
new file mode 100644
index 0000000000..e9a5116a6d
--- /dev/null
+++ b/docs/latex/wx/richtextoverview.tex
@@ -0,0 +1,34 @@
+\section{wxRichTextCtrl overview}\label{wxrichtextctrloverview}
+
+Classes: \helpref{wxRichTextCtrl}{wxrichtextctrl}, \helpref{wxRichTextBuffer}{wxrichtextbuffer}, 
+\helpref{wxRichTextAttr}{wxrichtextattr}, \helpref{wxTextAttrEx}{wxtextattrex}, 
+\helpref{wxRichTextCharacterStyleDefinition}{wxrichtextcharacterstyledefinition}, 
+\helpref{wxRichTextParagraphStyleDefinition}{wxrichtextparagraphstyledefinition}, 
+\helpref{wxRichTextStyleSheet}{wxrichtextstylesheet}, 
+\helpref{wxRichTextStyleListBox}{wxrichtextstylelistbox}, 
+\helpref{wxRichTextEvent}{wxrichtextevent}, \helpref{wxRichTextRange}{wxrichtextrange}, 
+\helpref{wxRichTextFileHandler}{wxrichtextfilehandler}, \helpref{wxRichTextHTMLHandler}{wxrichtexthtmlhandler}, 
+\helpref{wxRichTextXMLHandler}{wxrichtextxmlhandler}
+
+wxRichTextCtrl provides a generic implementation of a rich text editor
+
+The following screenshot shows the wxRichTextCtrl sample in action:
+
+$$\image{8cm;0cm}{richtextctrl.gif}$$
+
+\wxheading{Example}\label{wxrichtextctrlexample}
+
+TODO
+
+{\small
+\begin{verbatim}
+\end{verbatim}
+}
+
+\wxheading{Programming with wxRichTextCtrl}
+
+TODO
+
+\wxheading{How wxRichTextCtrl is implemented}
+
+TODO
diff --git a/docs/latex/wx/richtextparagraphstyledefinition.tex b/docs/latex/wx/richtextparagraphstyledefinition.tex
new file mode 100644
index 0000000000..c6491d0409
--- /dev/null
+++ b/docs/latex/wx/richtextparagraphstyledefinition.tex
@@ -0,0 +1,39 @@
+\section{\class{wxRichTextParagraphStyleDefinition}}\label{wxrichtextparagraphstyledefinition}
+
+This class represents a paragraph style definition, usually added to a \helpref{wxRichTextStyleSheet}{wxrichtextstylesheet}.
+
+\wxheading{Derived from}
+
+\helpref{wxRichTextStyleDefinition}{wxrichtextstyledefinition}
+
+\wxheading{Include files}
+
+<wx/richtext/richtextstyles.h>
+
+\wxheading{Data structures}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxRichTextParagraphStyleDefinition::wxRichTextParagraphStyleDefinition}\label{wxrichtextparagraphstyledefinitionwxrichtextparagraphstyledefinition}
+
+\func{}{wxRichTextParagraphStyleDefinition}{\param{const wxString\& }{name = wxEmptyString}}
+
+Constructor.
+
+\membersection{wxRichTextParagraphStyleDefinition::\destruct{wxRichTextParagraphStyleDefinition}}\label{wxrichtextparagraphstyledefinitiondtor}
+
+\func{}{\destruct{wxRichTextParagraphStyleDefinition}}{\void}
+
+Destructor.
+
+\membersection{wxRichTextParagraphStyleDefinition::GetNextStyle}\label{wxrichtextparagraphstyledefinitiongetnextstyle}
+
+\constfunc{const wxString\&}{GetNextStyle}{\void}
+
+Returns the style that should normally follow this style.
+
+\membersection{wxRichTextParagraphStyleDefinition::SetNextStyle}\label{wxrichtextparagraphstyledefinitionsetnextstyle}
+
+\func{void}{SetNextStyle}{\param{const wxString\& }{name}}
+
+Sets the style that should normally follow this style.
diff --git a/docs/latex/wx/richtextrange.tex b/docs/latex/wx/richtextrange.tex
new file mode 100644
index 0000000000..fd3d0fa622
--- /dev/null
+++ b/docs/latex/wx/richtextrange.tex
@@ -0,0 +1,122 @@
+\section{\class{wxRichTextRange}}\label{wxrichtextrange}
+
+This class stores beginning and end positions for a range of data.
+
+\wxheading{Derived from}
+
+No base class
+
+\wxheading{Include files}
+
+<wx/richtext/richtextbuffer.h>
+
+\wxheading{Data structures}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxRichTextRange::wxRichTextRange}\label{wxrichtextrangewxrichtextrange}
+
+\func{}{wxRichTextRange}{\param{long }{start}, \param{long }{end}}
+
+\func{}{wxRichTextRange}{\param{const wxRichTextRange\& }{range}}
+
+\func{}{wxRichTextRange}{\void}
+
+Constructors.
+
+\membersection{wxRichTextRange::\destruct{wxRichTextRange}}\label{wxrichtextrangedtor}
+
+\func{}{\destruct{wxRichTextRange}}{\void}
+
+Destructor.
+
+\membersection{wxRichTextRange::Contains}\label{wxrichtextrangecontains}
+
+\constfunc{bool}{Contains}{\param{long }{pos}}
+
+Returns \true if the given position is within this range. Does not
+match if the range is empty.
+
+\membersection{wxRichTextRange::GetEnd}\label{wxrichtextrangegetend}
+
+\constfunc{long}{GetEnd}{\void}
+
+Returns the end position.
+
+\membersection{wxRichTextRange::GetLength}\label{wxrichtextrangegetlength}
+
+\constfunc{long}{GetLength}{\void}
+
+Returns the length of the range.
+
+\membersection{wxRichTextRange::GetStart}\label{wxrichtextrangegetstart}
+
+\constfunc{long}{GetStart}{\void}
+
+Returns the start of the range.
+
+\membersection{wxRichTextRange::IsOutside}\label{wxrichtextrangeisoutside}
+
+\constfunc{bool}{IsOutside}{\param{const wxRichTextRange\& }{range}}
+
+Returns \true if this range is completely outside {\it range}.
+
+\membersection{wxRichTextRange::IsWithin}\label{wxrichtextrangeiswithin}
+
+\constfunc{bool}{IsWithin}{\param{const wxRichTextRange\& }{range}}
+
+Returns \true if this range is completely within {\it range}.
+
+\membersection{wxRichTextRange::LimitTo}\label{wxrichtextrangelimitto}
+
+\func{bool}{LimitTo}{\param{const wxRichTextRange\& }{range}}
+
+Limits this range to be within {\it range}.
+
+\membersection{wxRichTextRange::SetEnd}\label{wxrichtextrangesetend}
+
+\func{void}{SetEnd}{\param{long }{end}}
+
+Sets the end of the range.
+
+\membersection{wxRichTextRange::SetRange}\label{wxrichtextrangesetrange}
+
+\func{void}{SetRange}{\param{long }{start}, \param{long }{end}}
+
+Sets the range.
+
+\membersection{wxRichTextRange::SetStart}\label{wxrichtextrangesetstart}
+
+\func{void}{SetStart}{\param{long }{start}}
+
+Sets the start of the range.
+
+\membersection{wxRichTextRange::Swap}\label{wxrichtextrangeswap}
+
+\func{void}{Swap}{\void}
+
+Swaps the start and end.
+
+\membersection{wxRichTextRange::operator+}\label{wxrichtextrangeoperatorplus}
+
+\constfunc{wxRichTextRange}{operator+}{\param{const wxRichTextRange\& }{range}}
+
+Adds {\it range} to this range.
+
+\membersection{wxRichTextRange::operator-}\label{wxrichtextrangeoperatorminus}
+
+\constfunc{wxRichTextRange}{operator-}{\param{const wxRichTextRange\& }{range}}
+
+Subtracs {\it range} from this range.
+
+\membersection{wxRichTextRange::operator=}\label{wxrichtextrangeoperatorassign}
+
+\func{void}{operator=}{\param{const wxRichTextRange\& }{range}}
+
+Assigns {\it range} to this range.
+
+\membersection{wxRichTextRange::operator==}\label{wxrichtextrangeoperatorequal}
+
+\constfunc{bool}{operator==}{\param{const wxRichTextRange\& }{range}}
+
+Returns \true if {\it range} is the same as this range.
diff --git a/docs/latex/wx/richtextstyledefinition.tex b/docs/latex/wx/richtextstyledefinition.tex
new file mode 100644
index 0000000000..19e5fcc514
--- /dev/null
+++ b/docs/latex/wx/richtextstyledefinition.tex
@@ -0,0 +1,72 @@
+\section{\class{wxRichTextStyleDefinition}}\label{wxrichtextstyledefinition}
+
+This is a base class for paragraph and character styles.
+
+\wxheading{Derived from}
+
+\helpref{wxObject}{wxobject}
+
+\wxheading{Include files}
+
+<wx/richtext/richtextstyles.h>
+
+\wxheading{Data structures}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxRichTextStyleDefinition::wxRichTextStyleDefinition}\label{wxrichtextstyledefinitionwxrichtextstyledefinition}
+
+\func{}{wxRichTextStyleDefinition}{\param{const wxString\& }{name = wxEmptyString}}
+
+Constructor.
+
+\membersection{wxRichTextStyleDefinition::\destruct{wxRichTextStyleDefinition}}\label{wxrichtextstyledefinitiondtor}
+
+\func{}{\destruct{wxRichTextStyleDefinition}}{\void}
+
+Destructor.
+
+\membersection{wxRichTextStyleDefinition::GetBaseStyle}\label{wxrichtextstyledefinitiongetbasestyle}
+
+\constfunc{const wxString\&}{GetBaseStyle}{\void}
+
+Returns the style on which this style is based.
+
+\membersection{wxRichTextStyleDefinition::GetName}\label{wxrichtextstyledefinitiongetname}
+
+\constfunc{const wxString\&}{GetName}{\void}
+
+Returns the style name.
+
+\membersection{wxRichTextStyleDefinition::GetStyle}\label{wxrichtextstyledefinitiongetstyle}
+
+\func{wxRichTextAttr\&}{GetStyle}{\void}
+
+\constfunc{const wxRichTextAttr\&}{GetStyle}{\void}
+
+Returns the attributes associated with this style.
+
+\membersection{wxRichTextStyleDefinition::Init}\label{wxrichtextstyledefinitioninit}
+
+\func{void}{Init}{\void}
+
+Initialises the definition.
+
+\membersection{wxRichTextStyleDefinition::SetBaseStyle}\label{wxrichtextstyledefinitionsetbasestyle}
+
+\func{void}{SetBaseStyle}{\param{const wxString\& }{name}}
+
+Sets the name of the style that this style is based on.
+
+\membersection{wxRichTextStyleDefinition::SetName}\label{wxrichtextstyledefinitionsetname}
+
+\func{void}{SetName}{\param{const wxString\& }{name}}
+
+Sets the name of the style.
+
+\membersection{wxRichTextStyleDefinition::SetStyle}\label{wxrichtextstyledefinitionsetstyle}
+
+\func{void}{SetStyle}{\param{const wxRichTextAttr\& }{style}}
+
+Sets the attributes for this style.
+
diff --git a/docs/latex/wx/richtextstylelistbox.tex b/docs/latex/wx/richtextstylelistbox.tex
new file mode 100644
index 0000000000..c546751105
--- /dev/null
+++ b/docs/latex/wx/richtextstylelistbox.tex
@@ -0,0 +1,96 @@
+\section{\class{wxRichTextStyleListBox}}\label{wxrichtextstylelistbox}
+
+This is a listbox that can display the styles in a \helpref{wxRichTextStyleSheet}{wxrichtextstylesheet},
+and apply the selection to an associated \helpref{wxRichTextCtrl}{wxrichtextctrl}.
+
+See {\tt samples/richtext} for an example of how to use it.
+
+\wxheading{Derived from}
+
+\helpref{wxHtmlListBox}{wxhtmllistbox}
+
+\wxheading{Include files}
+
+<wx/richtext/richtextstyles.h>
+
+\wxheading{Data structures}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxRichTextStyleListBox::wxRichTextStyleListBox}\label{wxrichtextstylelistboxwxrichtextstylelistbox}
+
+\func{}{wxRichTextStyleListBox}{\param{wxWindow* }{parent}, \param{wxWindowID }{id = wxID\_ANY}, \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{long }{style = 0}}
+
+Constructor.
+
+\membersection{wxRichTextStyleListBox::\destruct{wxRichTextStyleListBox}}\label{wxrichtextstylelistboxdtor}
+
+\func{}{\destruct{wxRichTextStyleListBox}}{\void}
+
+Destructor.
+
+\membersection{wxRichTextStyleListBox::ConvertTenthsMMToPixels}\label{wxrichtextstylelistboxconverttenthsmmtopixels}
+
+\constfunc{int}{ConvertTenthsMMToPixels}{\param{wxDC\& }{dc}, \param{int }{units}}
+
+Converts units in tenths of a millimetre to device units.
+
+\membersection{wxRichTextStyleListBox::CreateHTML}\label{wxrichtextstylelistboxcreatehtml}
+
+\constfunc{wxString}{CreateHTML}{\param{wxRichTextStyleDefinition* }{def}}
+
+Creates a suitable HTML fragment for a definition.
+
+\membersection{wxRichTextStyleListBox::GetRichTextCtrl}\label{wxrichtextstylelistboxgetrichtextctrl}
+
+\constfunc{wxRichTextCtrl*}{GetRichTextCtrl}{\void}
+
+Returns the \helpref{wxRichTextCtrl}{wxrichtextctrl} associated with this listbox.
+
+\membersection{wxRichTextStyleListBox::GetStyle}\label{wxrichtextstylelistboxgetstyle}
+
+\constfunc{wxRichTextStyleDefinition*}{GetStyle}{\param{size\_t }{i}}
+
+Gets a style for a listbox index.
+
+\membersection{wxRichTextStyleListBox::GetStyleSheet}\label{wxrichtextstylelistboxgetstylesheet}
+
+\constfunc{wxRichTextStyleSheet*}{GetStyleSheet}{\void}
+
+Returns the style sheet associated with this listbox.
+
+\membersection{wxRichTextStyleListBox::OnGetItem}\label{wxrichtextstylelistboxongetitem}
+
+\constfunc{wxString}{OnGetItem}{\param{size\_t }{n}}
+
+Returns the HTML for this item.
+
+\membersection{wxRichTextStyleListBox::OnLeftDown}\label{wxrichtextstylelistboxonleftdown}
+
+\func{void}{OnLeftDown}{\param{wxMouseEvent\& }{event}}
+
+Implements left click behaviour, applying the clicked style to the wxRichTextCtrl.
+
+\membersection{wxRichTextStyleListBox::OnSelect}\label{wxrichtextstylelistboxonselect}
+
+\func{void}{OnSelect}{\param{wxCommandEvent\& }{event}}
+
+Reacts to selection.
+
+\membersection{wxRichTextStyleListBox::SetRichTextCtrl}\label{wxrichtextstylelistboxsetrichtextctrl}
+
+\func{void}{SetRichTextCtrl}{\param{wxRichTextCtrl* }{ctrl}}
+
+Associates the listbox with a \helpref{wxRichTextCtrl}{wxrichtextctrl}.
+
+\membersection{wxRichTextStyleListBox::SetStyleSheet}\label{wxrichtextstylelistboxsetstylesheet}
+
+\func{void}{SetStyleSheet}{\param{wxRichTextStyleSheet* }{styleSheet}}
+
+Associates the control with a style sheet.
+
+\membersection{wxRichTextStyleListBox::UpdateStyles}\label{wxrichtextstylelistboxupdatestyles}
+
+\func{void}{UpdateStyles}{\void}
+
+Updates the list from the associated style sheet.
diff --git a/docs/latex/wx/richtextstylesheet.tex b/docs/latex/wx/richtextstylesheet.tex
new file mode 100644
index 0000000000..04fbf34231
--- /dev/null
+++ b/docs/latex/wx/richtextstylesheet.tex
@@ -0,0 +1,104 @@
+\section{\class{wxRichTextStyleSheet}}\label{wxrichtextstylesheet}
+
+A style sheet contains named paragraph and character styles that make it
+easy for a user to apply combinations of attributes to a \helpref{wxRichTextCtrl}{wxrichtextctrl}.
+
+You can use a \helpref{wxRichTextStyleListBox}{wxrichtextstylelistbox} in your
+user interface to show available styles to the user, and allow application
+of styles to the control.
+
+\wxheading{Derived from}
+
+\helpref{wxObject}{wxobject}
+
+\wxheading{Include files}
+
+<wx/richtext/richtextstyles.h>
+
+\wxheading{Data structures}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxRichTextStyleSheet::wxRichTextStyleSheet}\label{wxrichtextstylesheetwxrichtextstylesheet}
+
+\func{}{wxRichTextStyleSheet}{\void}
+
+Constructor.
+
+\membersection{wxRichTextStyleSheet::\destruct{wxRichTextStyleSheet}}\label{wxrichtextstylesheetdtor}
+
+\func{}{\destruct{wxRichTextStyleSheet}}{\void}
+
+Destructor.
+
+\membersection{wxRichTextStyleSheet::AddCharacterStyle}\label{wxrichtextstylesheetaddcharacterstyle}
+
+\func{bool}{AddCharacterStyle}{\param{wxRichTextCharacterStyleDefinition* }{def}}
+
+Adds a definition to the character style list.
+
+\membersection{wxRichTextStyleSheet::AddParagraphStyle}\label{wxrichtextstylesheetaddparagraphstyle}
+
+\func{bool}{AddParagraphStyle}{\param{wxRichTextParagraphStyleDefinition* }{def}}
+
+Adds a definition to the paragraph style list.
+
+\membersection{wxRichTextStyleSheet::DeleteStyles}\label{wxrichtextstylesheetdeletestyles}
+
+\func{void}{DeleteStyles}{\void}
+
+Deletes all styles.
+
+\membersection{wxRichTextStyleSheet::FindCharacterStyle}\label{wxrichtextstylesheetfindcharacterstyle}
+
+\constfunc{wxRichTextCharacterStyleDefinition*}{FindCharacterStyle}{\param{const wxString\& }{name}}
+
+Finds a character definition by name.
+
+\membersection{wxRichTextStyleSheet::FindParagraphStyle}\label{wxrichtextstylesheetfindparagraphstyle}
+
+\constfunc{wxRichTextParagraphStyleDefinition*}{FindParagraphStyle}{\param{const wxString\& }{name}}
+
+Finds a paragraph definition by name.
+
+\membersection{wxRichTextStyleSheet::GetCharacterStyle}\label{wxrichtextstylesheetgetcharacterstyle}
+
+\constfunc{wxRichTextCharacterStyleDefinition*}{GetCharacterStyle}{\param{size\_t }{n}}
+
+Returns the {\it n}th character style.
+
+\membersection{wxRichTextStyleSheet::GetCharacterStyleCount}\label{wxrichtextstylesheetgetcharacterstylecount}
+
+\constfunc{size\_t}{GetCharacterStyleCount}{\void}
+
+Returns the number of character styles.
+
+\membersection{wxRichTextStyleSheet::GetParagraphStyle}\label{wxrichtextstylesheetgetparagraphstyle}
+
+\constfunc{wxRichTextParagraphStyleDefinition*}{GetParagraphStyle}{\param{size\_t }{n}}
+
+Returns the {\it n}th paragraph style.
+
+\membersection{wxRichTextStyleSheet::GetParagraphStyleCount}\label{wxrichtextstylesheetgetparagraphstylecount}
+
+\constfunc{size\_t}{GetParagraphStyleCount}{\void}
+
+Returns the number of paragraph styles.
+
+\membersection{wxRichTextStyleSheet::Init}\label{wxrichtextstylesheetinit}
+
+\func{void}{Init}{\void}
+
+Initialises the style sheet.
+
+\membersection{wxRichTextStyleSheet::RemoveCharacterStyle}\label{wxrichtextstylesheetremovecharacterstyle}
+
+\func{bool}{RemoveCharacterStyle}{\param{wxRichTextStyleDefinition* }{def}, \param{bool }{deleteStyle = false}}
+
+Removes a character style.
+
+\membersection{wxRichTextStyleSheet::RemoveParagraphStyle}\label{wxrichtextstylesheetremoveparagraphstyle}
+
+\func{bool}{RemoveParagraphStyle}{\param{wxRichTextStyleDefinition* }{def}, \param{bool }{deleteStyle = false}}
+
+Removes a paragraph style.
diff --git a/docs/latex/wx/richtextxmlhandler.tex b/docs/latex/wx/richtextxmlhandler.tex
new file mode 100644
index 0000000000..224d132eff
--- /dev/null
+++ b/docs/latex/wx/richtextxmlhandler.tex
@@ -0,0 +1,104 @@
+\section{\class{wxRichTextXMLHandler}}\label{wxrichtextxmlhandler}
+
+A handler for loading and saving content in an XML format specific
+to wxRichTextBuffer. You can either add the handler to the buffer
+and load and save through the buffer or control API, or you can
+create an instance of the handler on the stack and call its
+functions directly.
+
+\wxheading{Derived from}
+
+\helpref{wxRichTextFileHandler}{wxrichtextfilehandler}
+
+\wxheading{Include files}
+
+<wx/richtext/richtextxml.h>
+
+\wxheading{Data structures}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxRichTextXMLHandler::wxRichTextXMLHandler}\label{wxrichtextxmlhandlerwxrichtextxmlhandler}
+
+\func{}{wxRichTextXMLHandler}{\param{const wxString\& }{name = wxT("XML")}, \param{const wxString\& }{ext = wxT("xml")}, \param{int }{type = wxRICHTEXT\_TYPE\_XML}}
+
+Constructor.
+
+\membersection{wxRichTextXMLHandler::CanLoad}\label{wxrichtextxmlhandlercanload}
+
+\constfunc{bool}{CanLoad}{\void}
+
+Returns \true.
+
+\membersection{wxRichTextXMLHandler::CanSave}\label{wxrichtextxmlhandlercansave}
+
+\constfunc{bool}{CanSave}{\void}
+
+Returns \true.
+
+\membersection{wxRichTextXMLHandler::CreateStyle}\label{wxrichtextxmlhandlercreatestyle}
+
+\func{wxString}{CreateStyle}{\param{const wxTextAttrEx\& }{attr}, \param{bool }{isPara = false}}
+
+Creates XML code for a given character or paragraph style.
+
+\membersection{wxRichTextXMLHandler::DoLoadFile}\label{wxrichtextxmlhandlerdoloadfile}
+
+\func{bool}{DoLoadFile}{\param{wxRichTextBuffer* }{buffer}, \param{wxInputStream\& }{stream}}
+
+Loads buffer context from the given stream.
+
+\membersection{wxRichTextXMLHandler::DoSaveFile}\label{wxrichtextxmlhandlerdosavefile}
+
+\func{bool}{DoSaveFile}{\param{wxRichTextBuffer* }{buffer}, \param{wxOutputStream\& }{stream}}
+
+Saves buffer context to the given stream.
+
+\membersection{wxRichTextXMLHandler::ExportXML}\label{wxrichtextxmlhandlerexportxml}
+
+\func{bool}{ExportXML}{\param{wxOutputStream\& }{stream}, \param{wxMBConv* }{convMem}, \param{wxMBConv* }{convFile}, \param{wxRichTextObject\& }{obj}, \param{int }{level}}
+
+Recursively exports an object to the stream.
+
+\membersection{wxRichTextXMLHandler::GetNodeContent}\label{wxrichtextxmlhandlergetnodecontent}
+
+\func{wxString}{GetNodeContent}{\param{wxXmlNode* }{node}}
+
+Helper function: gets node context.
+
+\membersection{wxRichTextXMLHandler::GetParamNode}\label{wxrichtextxmlhandlergetparamnode}
+
+\func{wxXmlNode*}{GetParamNode}{\param{wxXmlNode* }{node}, \param{const wxString\& }{param}}
+
+Helper function: gets a named parameter from the XML node.
+
+\membersection{wxRichTextXMLHandler::GetParamValue}\label{wxrichtextxmlhandlergetparamvalue}
+
+\func{wxString}{GetParamValue}{\param{wxXmlNode* }{node}, \param{const wxString\& }{param}}
+
+Helper function: gets a named parameter from the XML node.
+
+\membersection{wxRichTextXMLHandler::GetStyle}\label{wxrichtextxmlhandlergetstyle}
+
+\func{bool}{GetStyle}{\param{wxTextAttrEx\& }{attr}, \param{wxXmlNode* }{node}, \param{bool }{isPara = false}}
+
+Helper function: gets style parameters from the given XML node.
+
+\membersection{wxRichTextXMLHandler::GetText}\label{wxrichtextxmlhandlergettext}
+
+\func{wxString}{GetText}{\param{wxXmlNode* }{node}, \param{const wxString\& }{param = wxEmptyString}, \param{bool }{translate = false}}
+
+Helper function: gets text from the node.
+
+\membersection{wxRichTextXMLHandler::HasParam}\label{wxrichtextxmlhandlerhasparam}
+
+\func{bool}{HasParam}{\param{wxXmlNode* }{node}, \param{const wxString\& }{param}}
+
+Helper function: returns \true if the node has the given parameter.
+
+\membersection{wxRichTextXMLHandler::ImportXML}\label{wxrichtextxmlhandlerimportxml}
+
+\func{bool}{ImportXML}{\param{wxRichTextBuffer* }{buffer}, \param{wxXmlNode* }{node}}
+
+Recursively imports an object.
+
diff --git a/docs/latex/wx/text.tex b/docs/latex/wx/text.tex
index 7808739ee7..5992858843 100644
--- a/docs/latex/wx/text.tex
+++ b/docs/latex/wx/text.tex
@@ -1,257 +1,3 @@
-%%%%%%%%%%%%%%%%%%%%%%%%%%%% wxTextAttr %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\section{\class{wxTextAttr}}\label{wxtextattr}
-
-wxTextAttr represents the character and paragraph attributes, or style, for a range of text in a\rtfsp
-\helpref{wxTextCtrl}{wxtextctrl}.
-
-When setting up a wxTextAttr object, pass a bitlist mask to SetFlags to indicate
-which style elements should be changed. As a convenience, when you call a
-setter such as SetFont, the relevant bit will be set.
-
-\wxheading{Derived from}
-
-No base class
-
-\wxheading{Include files}
-
-<wx/textctrl.h>
-
-\wxheading{Typedefs}
-
-\texttt{wxTextPos} is the type containing the index of a position in a text
-control. \texttt{wxTextCoord} contains the index of a column or a row in the
-control.
-
-Note that although both of these types should probably have been unsigned, due
-to backwards compatibility reasons, are defined as \texttt{long} currently.
-Their use (instead of plain \texttt{long}) is still encouraged as it makes the
-code more readable.
-
-\wxheading{Constants}
-
-The following values can be passed to SetAlignment to determine
-paragraph alignment.
-
-{\small
-\begin{verbatim}
-enum wxTextAttrAlignment
-{
-    wxTEXT_ALIGNMENT_DEFAULT,
-    wxTEXT_ALIGNMENT_LEFT,
-    wxTEXT_ALIGNMENT_CENTRE,
-    wxTEXT_ALIGNMENT_CENTER = wxTEXT_ALIGNMENT_CENTRE,
-    wxTEXT_ALIGNMENT_RIGHT,
-    wxTEXT_ALIGNMENT_JUSTIFIED
-};
-\end{verbatim}
-}
-
-These values are passed in a bitlist to SetFlags to determine
-what attributes will be considered when setting the attributes
-for a text control.
-
-{\small
-\begin{verbatim}
-#define wxTEXT_ATTR_TEXT_COLOUR             0x0001
-#define wxTEXT_ATTR_BACKGROUND_COLOUR       0x0002
-#define wxTEXT_ATTR_FONT_FACE               0x0004
-#define wxTEXT_ATTR_FONT_SIZE               0x0008
-#define wxTEXT_ATTR_FONT_WEIGHT             0x0010
-#define wxTEXT_ATTR_FONT_ITALIC             0x0020
-#define wxTEXT_ATTR_FONT_UNDERLINE          0x0040
-#define wxTEXT_ATTR_FONT \
-  wxTEXT_ATTR_FONT_FACE | wxTEXT_ATTR_FONT_SIZE | wxTEXT_ATTR_FONT_WEIGHT \
-| wxTEXT_ATTR_FONT_ITALIC | wxTEXT_ATTR_FONT_UNDERLINE
-#define wxTEXT_ATTR_ALIGNMENT               0x0080
-#define wxTEXT_ATTR_LEFT_INDENT             0x0100
-#define wxTEXT_ATTR_RIGHT_INDENT            0x0200
-#define wxTEXT_ATTR_TABS                    0x0400
-\end{verbatim}
-}
-
-\latexignore{\rtfignore{\wxheading{Members}}}
-
-
-\membersection{wxTextAttr::wxTextAttr}\label{wxtextattrctor}
-
-\func{}{wxTextAttr}{\void}
-
-\func{}{wxTextAttr}{\param{const wxColour\& }{colText}, \param{const wxColour\& }{colBack = wxNullColour},
- \param{const wxFont\& }{font = wxNullFont}, \param{wxTextAttrAlignment }{alignment = wxTEXT\_ALIGNMENT\_DEFAULT}}
-
-The constructors initialize one or more of the text foreground colour, background
-colour, font, and alignment. The values not initialized in the constructor can be set
-later, otherwise \helpref{wxTextCtrl::SetStyle}{wxtextctrlsetstyle} will use
-the default values for them.
-
-
-\membersection{wxTextAttr::GetAlignment}\label{wxtextattrgetalignment}
-
-\constfunc{wxTextAttrAlignment}{GetAlignment}{\void}
-
-Returns the paragraph alignment.
-
-
-\membersection{wxTextAttr::GetBackgroundColour}\label{wxtextattrgetbackgroundcolour}
-
-\constfunc{const wxColour\&}{GetBackgroundColour}{\void}
-
-Return the background colour specified by this attribute.
-
-
-\membersection{wxTextAttr::GetFont}\label{wxtextattrgetfont}
-
-\constfunc{const wxFont\&}{GetFont}{\void}
-
-Return the text font specified by this attribute.
-
-
-\membersection{wxTextAttr::GetLeftIndent}\label{wxtextattrgetleftindent}
-
-\constfunc{int}{GetLeftIndent}{\void}
-
-Returns the left indent in tenths of a millimetre.
-
-
-\membersection{wxTextAttr::GetLeftSubIndent}\label{wxtextattrgetleftsubindent}
-
-\constfunc{int}{GetLeftSubIndent}{\void}
-
-Returns the left sub indent for all lines but the first line in a paragraph in
-tenths of a millimetre.
-
-
-\membersection{wxTextAttr::GetRightIndent}\label{wxtextattrgetrightindent}
-
-\constfunc{int}{GetRightIndent}{\void}
-
-Returns the right indent in tenths of a millimetre.
-
-
-\membersection{wxTextAttr::GetTabs}\label{wxtextattrgettabs}
-
-\constfunc{const wxArrayInt\&}{GetTabs}{\void}
-
-Returns the array of integers representing the tab stops. Each
-array element specifies the tab stop in tenths of a millimetre.
-
-
-\membersection{wxTextAttr::GetTextColour}\label{wxtextattrgettextcolour}
-
-\constfunc{const wxColour\&}{GetTextColour}{\void}
-
-Return the text colour specified by this attribute.
-
-
-\membersection{wxTextAttr::HasBackgroundColour}\label{wxtextattrhasbackgroundcolour}
-
-\constfunc{bool}{HasBackgroundColour}{\void}
-
-Returns {\tt true} if this style specifies the background colour to use.
-
-
-\membersection{wxTextAttr::HasFont}\label{wxtextattrhasfont}
-
-\constfunc{bool}{HasFont}{\void}
-
-Returns {\tt true} if this style specifies the font to use.
-
-
-\membersection{wxTextAttr::HasTextColour}\label{wxtextattrhastextcolour}
-
-\constfunc{bool}{HasTextColour}{\void}
-
-Returns {\tt true} if this style specifies the foreground colour to use.
-
-
-\membersection{wxTextAttr::GetFlags}\label{wxtextattrgetflags}
-
-\func{long}{GetFlags}{\void}
-
-Returns a bitlist indicating which attributes will be set.
-
-
-\membersection{wxTextAttr::IsDefault}\label{wxtextattrisdefault}
-
-\constfunc{bool}{IsDefault}{\void}
-
-Returns {\tt true} if this style specifies any non-default attributes.
-
-
-\membersection{wxTextAttr::Merge}\label{wxtextattrmerge}
-
-\func{void}{Merge}{\param{const wxTextAttr\&}{ overlay}}
-
-Copies all defined/valid properties from \arg{overlay} to current object.
-
-\func{static wxTextAttr}{Merge}{\param{const wxTextAttr\&}{ base}, \param{const wxTextAttr\&}{ overlay}}
-
-Creates a new {\tt wxTextAttr} which is a merge of \arg{base} and 
-\arg{overlay}. Properties defined in \arg{overlay} take precedence over those
-in \arg{base}. Properties undefined/invalid in both are undefined in the
-result.
-
-
-\membersection{wxTextAttr::SetAlignment}\label{wxtextattrsetalignment}
-
-\func{void}{SetAlignment}{\param{wxTextAttrAlignment}{ alignment}}
-
-Sets the paragraph alignment.
-
-
-\membersection{wxTextAttr::SetBackgroundColour}\label{wxtextattrsetbackgroundcolour}
-
-\func{void}{SetBackgroundColour}{\param{const wxColour\& }{colour}}
-
-Sets the background colour.
-
-
-\membersection{wxTextAttr::SetFlags}\label{wxtextattrsetflags}
-
-\func{void}{SetFlags}{\param{long}{ flags}}
-
-Pass a bitlist indicating which attributes will be set.
-
-
-\membersection{wxTextAttr::SetFont}\label{wxtextattrsetfont}
-
-\func{void}{SetFont}{\param{const wxFont\&}{ font}}
-
-Sets the text font.
-
-
-\membersection{wxTextAttr::SetLeftIndent}\label{wxtextattrsetleftindent}
-
-\func{void}{SetLeftIndent}{\param{int }{indent}, \param{int }{subIndent = 0}}
-
-Sets the left indent in tenths of a millimetre.
-subIndent sets the indent for all lines but the first line in a paragraph
-relative to the first line.
-
-
-\membersection{wxTextAttr::SetRightIndent}\label{wxtextattrsetrightindent}
-
-\func{void}{SetRightIndent}{\param{int }{indent}}
-
-Sets the right indent in tenths of a millimetre.
-
-
-\membersection{wxTextAttr::SetTabs}\label{wxtextattrsettabs}
-
-\func{void}{SetTabs}{\param{const wxArrayInt\&}{ tabs}}
-
-Sets the array of integers representing the tab stops. Each
-array element specifies the tab stop in tenths of a millimetre.
-
-
-\membersection{wxTextAttr::SetTextColour}\label{wxtextattrsettextcolour}
-
-\func{void}{SetTextColour}{\param{const wxColour\& }{colour}}
-
-Sets the text colour.
-
-
 %%%%%%%%%%%%%%%%%%%%%%%%%%%% wxTextCtrl %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 \section{\class{wxTextCtrl}}\label{wxtextctrl}
diff --git a/docs/latex/wx/textattr.tex b/docs/latex/wx/textattr.tex
new file mode 100644
index 0000000000..348153a69b
--- /dev/null
+++ b/docs/latex/wx/textattr.tex
@@ -0,0 +1,252 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%% wxTextAttr %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{\class{wxTextAttr}}\label{wxtextattr}
+
+wxTextAttr represents the character and paragraph attributes, or style, for a range of text in a\rtfsp
+\helpref{wxTextCtrl}{wxtextctrl}.
+
+When setting up a wxTextAttr object, pass a bitlist mask to SetFlags to indicate
+which style elements should be changed. As a convenience, when you call a
+setter such as SetFont, the relevant bit will be set.
+
+\wxheading{Derived from}
+
+No base class
+
+\wxheading{Include files}
+
+<wx/textctrl.h>
+
+\wxheading{Typedefs}
+
+\texttt{wxTextPos} is the type containing the index of a position in a text
+control. \texttt{wxTextCoord} contains the index of a column or a row in the
+control.
+
+Note that although both of these types should probably have been unsigned, due
+to backwards compatibility reasons, are defined as \texttt{long} currently.
+Their use (instead of plain \texttt{long}) is still encouraged as it makes the
+code more readable.
+
+\wxheading{Constants}
+
+The following values can be passed to SetAlignment to determine
+paragraph alignment.
+
+{\small
+\begin{verbatim}
+enum wxTextAttrAlignment
+{
+    wxTEXT_ALIGNMENT_DEFAULT,
+    wxTEXT_ALIGNMENT_LEFT,
+    wxTEXT_ALIGNMENT_CENTRE,
+    wxTEXT_ALIGNMENT_CENTER = wxTEXT_ALIGNMENT_CENTRE,
+    wxTEXT_ALIGNMENT_RIGHT,
+    wxTEXT_ALIGNMENT_JUSTIFIED
+};
+\end{verbatim}
+}
+
+These values are passed in a bitlist to SetFlags to determine
+what attributes will be considered when setting the attributes
+for a text control.
+
+{\small
+\begin{verbatim}
+#define wxTEXT_ATTR_TEXT_COLOUR             0x0001
+#define wxTEXT_ATTR_BACKGROUND_COLOUR       0x0002
+#define wxTEXT_ATTR_FONT_FACE               0x0004
+#define wxTEXT_ATTR_FONT_SIZE               0x0008
+#define wxTEXT_ATTR_FONT_WEIGHT             0x0010
+#define wxTEXT_ATTR_FONT_ITALIC             0x0020
+#define wxTEXT_ATTR_FONT_UNDERLINE          0x0040
+#define wxTEXT_ATTR_FONT \
+  wxTEXT_ATTR_FONT_FACE | wxTEXT_ATTR_FONT_SIZE | wxTEXT_ATTR_FONT_WEIGHT \
+| wxTEXT_ATTR_FONT_ITALIC | wxTEXT_ATTR_FONT_UNDERLINE
+#define wxTEXT_ATTR_ALIGNMENT               0x0080
+#define wxTEXT_ATTR_LEFT_INDENT             0x0100
+#define wxTEXT_ATTR_RIGHT_INDENT            0x0200
+#define wxTEXT_ATTR_TABS                    0x0400
+\end{verbatim}
+}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+
+\membersection{wxTextAttr::wxTextAttr}\label{wxtextattrctor}
+
+\func{}{wxTextAttr}{\void}
+
+\func{}{wxTextAttr}{\param{const wxColour\& }{colText}, \param{const wxColour\& }{colBack = wxNullColour},
+ \param{const wxFont\& }{font = wxNullFont}, \param{wxTextAttrAlignment }{alignment = wxTEXT\_ALIGNMENT\_DEFAULT}}
+
+The constructors initialize one or more of the text foreground colour, background
+colour, font, and alignment. The values not initialized in the constructor can be set
+later, otherwise \helpref{wxTextCtrl::SetStyle}{wxtextctrlsetstyle} will use
+the default values for them.
+
+
+\membersection{wxTextAttr::GetAlignment}\label{wxtextattrgetalignment}
+
+\constfunc{wxTextAttrAlignment}{GetAlignment}{\void}
+
+Returns the paragraph alignment.
+
+
+\membersection{wxTextAttr::GetBackgroundColour}\label{wxtextattrgetbackgroundcolour}
+
+\constfunc{const wxColour\&}{GetBackgroundColour}{\void}
+
+Return the background colour specified by this attribute.
+
+
+\membersection{wxTextAttr::GetFont}\label{wxtextattrgetfont}
+
+\constfunc{const wxFont\&}{GetFont}{\void}
+
+Return the text font specified by this attribute.
+
+
+\membersection{wxTextAttr::GetLeftIndent}\label{wxtextattrgetleftindent}
+
+\constfunc{int}{GetLeftIndent}{\void}
+
+Returns the left indent in tenths of a millimetre.
+
+
+\membersection{wxTextAttr::GetLeftSubIndent}\label{wxtextattrgetleftsubindent}
+
+\constfunc{int}{GetLeftSubIndent}{\void}
+
+Returns the left sub indent for all lines but the first line in a paragraph in
+tenths of a millimetre.
+
+
+\membersection{wxTextAttr::GetRightIndent}\label{wxtextattrgetrightindent}
+
+\constfunc{int}{GetRightIndent}{\void}
+
+Returns the right indent in tenths of a millimetre.
+
+
+\membersection{wxTextAttr::GetTabs}\label{wxtextattrgettabs}
+
+\constfunc{const wxArrayInt\&}{GetTabs}{\void}
+
+Returns the array of integers representing the tab stops. Each
+array element specifies the tab stop in tenths of a millimetre.
+
+
+\membersection{wxTextAttr::GetTextColour}\label{wxtextattrgettextcolour}
+
+\constfunc{const wxColour\&}{GetTextColour}{\void}
+
+Return the text colour specified by this attribute.
+
+
+\membersection{wxTextAttr::HasBackgroundColour}\label{wxtextattrhasbackgroundcolour}
+
+\constfunc{bool}{HasBackgroundColour}{\void}
+
+Returns {\tt true} if this style specifies the background colour to use.
+
+
+\membersection{wxTextAttr::HasFont}\label{wxtextattrhasfont}
+
+\constfunc{bool}{HasFont}{\void}
+
+Returns {\tt true} if this style specifies the font to use.
+
+
+\membersection{wxTextAttr::HasTextColour}\label{wxtextattrhastextcolour}
+
+\constfunc{bool}{HasTextColour}{\void}
+
+Returns {\tt true} if this style specifies the foreground colour to use.
+
+
+\membersection{wxTextAttr::GetFlags}\label{wxtextattrgetflags}
+
+\func{long}{GetFlags}{\void}
+
+Returns a bitlist indicating which attributes will be set.
+
+
+\membersection{wxTextAttr::IsDefault}\label{wxtextattrisdefault}
+
+\constfunc{bool}{IsDefault}{\void}
+
+Returns {\tt true} if this style specifies any non-default attributes.
+
+
+\membersection{wxTextAttr::Merge}\label{wxtextattrmerge}
+
+\func{void}{Merge}{\param{const wxTextAttr\&}{ overlay}}
+
+Copies all defined/valid properties from \arg{overlay} to current object.
+
+\func{static wxTextAttr}{Merge}{\param{const wxTextAttr\&}{ base}, \param{const wxTextAttr\&}{ overlay}}
+
+Creates a new {\tt wxTextAttr} which is a merge of \arg{base} and 
+\arg{overlay}. Properties defined in \arg{overlay} take precedence over those
+in \arg{base}. Properties undefined/invalid in both are undefined in the
+result.
+
+
+\membersection{wxTextAttr::SetAlignment}\label{wxtextattrsetalignment}
+
+\func{void}{SetAlignment}{\param{wxTextAttrAlignment}{ alignment}}
+
+Sets the paragraph alignment.
+
+
+\membersection{wxTextAttr::SetBackgroundColour}\label{wxtextattrsetbackgroundcolour}
+
+\func{void}{SetBackgroundColour}{\param{const wxColour\& }{colour}}
+
+Sets the background colour.
+
+
+\membersection{wxTextAttr::SetFlags}\label{wxtextattrsetflags}
+
+\func{void}{SetFlags}{\param{long}{ flags}}
+
+Pass a bitlist indicating which attributes will be set.
+
+
+\membersection{wxTextAttr::SetFont}\label{wxtextattrsetfont}
+
+\func{void}{SetFont}{\param{const wxFont\&}{ font}}
+
+Sets the text font.
+
+
+\membersection{wxTextAttr::SetLeftIndent}\label{wxtextattrsetleftindent}
+
+\func{void}{SetLeftIndent}{\param{int }{indent}, \param{int }{subIndent = 0}}
+
+Sets the left indent in tenths of a millimetre.
+subIndent sets the indent for all lines but the first line in a paragraph
+relative to the first line.
+
+
+\membersection{wxTextAttr::SetRightIndent}\label{wxtextattrsetrightindent}
+
+\func{void}{SetRightIndent}{\param{int }{indent}}
+
+Sets the right indent in tenths of a millimetre.
+
+
+\membersection{wxTextAttr::SetTabs}\label{wxtextattrsettabs}
+
+\func{void}{SetTabs}{\param{const wxArrayInt\&}{ tabs}}
+
+Sets the array of integers representing the tab stops. Each
+array element specifies the tab stop in tenths of a millimetre.
+
+
+\membersection{wxTextAttr::SetTextColour}\label{wxtextattrsettextcolour}
+
+\func{void}{SetTextColour}{\param{const wxColour\& }{colour}}
+
+Sets the text colour.
diff --git a/docs/latex/wx/textattrex.tex b/docs/latex/wx/textattrex.tex
new file mode 100644
index 0000000000..80c8275045
--- /dev/null
+++ b/docs/latex/wx/textattrex.tex
@@ -0,0 +1,333 @@
+\section{\class{wxTextAttrEx}}\label{wxtextattrex}
+
+wxTextAttrEx is an extended version of wxTextAttr with more paragraph attributes.
+Currently it is only used with \helpref{wxRichTextCtrl}{wxrichtextctrl}.
+
+It is intended that eventually, the members of wxTextAttrEx will
+be folded into wxTextAttr, and wxTextAttr will be the official
+cross-platform API for text controls that support attributes.
+However, for now, wxTextAttrEx is provided as a means of enabling
+extra functionality in wxRichTextCtrl, while retaining some compatibility
+with the wxTextAttr API.
+
+The most efficient method of accessing wxRichTextCtrl functionality
+is a third attribute class, \helpref{wxRichTextAttr}{wxrichtextattr}, which
+optimizes its storage to allow it to be used for implementing objects
+in a buffer, as well as access to that buffer.
+
+This section only documents the additional members; see \helpref{wxTextAttr}{wxtextattr} for
+the remaining functions.
+
+\wxheading{Derived from}
+
+\helpref{wxTextAttr}{wxtextattr}
+
+\wxheading{Include files}
+
+<wx/richtext/richtextbuffer.h>
+
+\wxheading{Constants}
+
+The following values can be passed to SetAlignment to determine
+paragraph alignment.
+
+{\small
+\begin{verbatim}
+enum wxTextAttrAlignment
+{
+    wxTEXT_ALIGNMENT_DEFAULT,
+    wxTEXT_ALIGNMENT_LEFT,
+    wxTEXT_ALIGNMENT_CENTRE,
+    wxTEXT_ALIGNMENT_CENTER = wxTEXT_ALIGNMENT_CENTRE,
+    wxTEXT_ALIGNMENT_RIGHT,
+    wxTEXT_ALIGNMENT_JUSTIFIED
+};
+\end{verbatim}
+}
+
+These values are passed in a bitlist to SetFlags to determine
+what attributes will be considered when setting the attributes
+for a text control.
+
+{\small
+\begin{verbatim}
+// Standard wxTextAttr constants
+
+#define wxTEXT_ATTR_TEXT_COLOUR             0x0001
+#define wxTEXT_ATTR_BACKGROUND_COLOUR       0x0002
+#define wxTEXT_ATTR_FONT_FACE               0x0004
+#define wxTEXT_ATTR_FONT_SIZE               0x0008
+#define wxTEXT_ATTR_FONT_WEIGHT             0x0010
+#define wxTEXT_ATTR_FONT_ITALIC             0x0020
+#define wxTEXT_ATTR_FONT_UNDERLINE          0x0040
+#define wxTEXT_ATTR_FONT \
+  wxTEXT_ATTR_FONT_FACE | wxTEXT_ATTR_FONT_SIZE | wxTEXT_ATTR_FONT_WEIGHT \
+| wxTEXT_ATTR_FONT_ITALIC | wxTEXT_ATTR_FONT_UNDERLINE
+#define wxTEXT_ATTR_ALIGNMENT               0x0080
+#define wxTEXT_ATTR_LEFT_INDENT             0x0100
+#define wxTEXT_ATTR_RIGHT_INDENT            0x0200
+#define wxTEXT_ATTR_TABS                    0x0400
+
+// Extra formatting flags not in wxTextAttr
+
+#define wxTEXT_ATTR_PARA_SPACING_AFTER      0x00000800
+#define wxTEXT_ATTR_PARA_SPACING_BEFORE     0x00001000
+#define wxTEXT_ATTR_LINE_SPACING            0x00002000
+#define wxTEXT_ATTR_CHARACTER_STYLE_NAME    0x00004000
+#define wxTEXT_ATTR_PARAGRAPH_STYLE_NAME    0x00008000
+#define wxTEXT_ATTR_BULLET_STYLE            0x00010000
+#define wxTEXT_ATTR_BULLET_NUMBER           0x00020000
+#define wxTEXT_ATTR_BULLET_SYMBOL           0x00040000
+\end{verbatim}
+}
+
+The following styles can be passed to wxRichTextAttr::SetBulletStyle:
+
+{\small
+\begin{verbatim}
+#define wxTEXT_ATTR_BULLET_STYLE_NONE           0x0000
+#define wxTEXT_ATTR_BULLET_STYLE_ARABIC         0x0001
+#define wxTEXT_ATTR_BULLET_STYLE_LETTERS_UPPER  0x0002
+#define wxTEXT_ATTR_BULLET_STYLE_LETTERS_LOWER  0x0004
+#define wxTEXT_ATTR_BULLET_STYLE_ROMAN_UPPER    0x0008
+#define wxTEXT_ATTR_BULLET_STYLE_ROMAN_LOWER    0x0010
+#define wxTEXT_ATTR_BULLET_STYLE_SYMBOL         0x0020
+#define wxTEXT_ATTR_BULLET_STYLE_BITMAP         0x0040
+#define wxTEXT_ATTR_BULLET_STYLE_PARENTHESES    0x0080
+#define wxTEXT_ATTR_BULLET_STYLE_PERIOD         0x0100
+\end{verbatim}
+}
+
+The following constants can be passed to wxRichTextAttr::SetLineSpacing:
+
+{\small
+\begin{verbatim}
+#define wxTEXT_ATTR_LINE_SPACING_NORMAL         10
+#define wxTEXT_ATTR_LINE_SPACING_HALF           15
+#define wxTEXT_ATTR_LINE_SPACING_TWICE          20
+\end{verbatim}
+}
+
+\wxheading{See also}
+
+\helpref{wxTextAttr}{wxtextattr}, \helpref{wxRichTextAttr}{wxrichtextattr}, \helpref{wxRichTextCtrl}{wxrichtextctrl}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+
+\membersection{wxTextAttrEx::wxTextAttrEx}\label{wxtextattrexwxtextattrex}
+
+\func{}{wxTextAttrEx}{\void}
+
+
+\func{}{wxTextAttrEx}{\param{const wxTextAttrEx\& }{attr}}
+
+Constructors.
+
+\membersection{wxTextAttrEx::GetBulletNumber}\label{wxtextattrexgetbulletnumber}
+
+\constfunc{int}{GetBulletNumber}{\void}
+
+Returns the bullet number.
+
+\membersection{wxTextAttrEx::GetBulletStyle}\label{wxtextattrexgetbulletstyle}
+
+\constfunc{int}{GetBulletStyle}{\void}
+
+Returns the bullet style.
+See \helpref{wxTextAttrEx::SetBulletStyle}{wxtextattrexsetbulletstyle} for a list of available styles.
+
+\membersection{wxTextAttrEx::GetBulletSymbol}\label{wxtextattrexgetbulletsymbol}
+
+\constfunc{wxChar}{GetBulletSymbol}{\void}
+
+Returns the bullet symbol, a character.
+
+\membersection{wxTextAttrEx::GetCharacterStyleName}\label{wxtextattrexgetcharacterstylename}
+
+\constfunc{const wxString\&}{GetCharacterStyleName}{\void}
+
+Returns the name of the character style.
+
+\membersection{wxTextAttrEx::GetLineSpacing}\label{wxtextattrexgetlinespacing}
+
+\constfunc{int}{GetLineSpacing}{\void}
+
+Returns the line spacing value, one of wxTEXT\_ATTR\_LINE\_SPACING\_NORMAL,
+wxTEXT\_ATTR\_LINE\_SPACING\_HALF, and wxTEXT\_ATTR\_LINE\_SPACING\_TWICE.
+
+\membersection{wxTextAttrEx::GetParagraphSpacingAfter}\label{wxtextattrexgetparagraphspacingafter}
+
+\constfunc{int}{GetParagraphSpacingAfter}{\void}
+
+Returns the space in tenths of a millimeter after the paragraph.
+
+\membersection{wxTextAttrEx::GetParagraphSpacingBefore}\label{wxtextattrexgetparagraphspacingbefore}
+
+\constfunc{int}{GetParagraphSpacingBefore}{\void}
+
+Returns the space in tenths of a millimeter before the paragraph.
+
+\membersection{wxTextAttrEx::GetParagraphStyleName}\label{wxtextattrexgetparagraphstylename}
+
+\constfunc{const wxString\&}{GetParagraphStyleName}{\void}
+
+Returns the name of the paragraph style.
+
+\membersection{wxTextAttrEx::HasBulletNumber}\label{wxtextattrexhasbulletnumber}
+
+\constfunc{bool}{HasBulletNumber}{\void}
+
+Returns \true if the attribute object specifies a bullet number.
+
+\membersection{wxTextAttrEx::HasBulletStyle}\label{wxtextattrexhasbulletstyle}
+
+\constfunc{bool}{HasBulletStyle}{\void}
+
+Returns \true if the attribute object specifies a bullet style.
+
+\membersection{wxTextAttrEx::HasBulletSymbol}\label{wxtextattrexhasbulletsymbol}
+
+\constfunc{bool}{HasBulletSymbol}{\void}
+
+Returns \true if the attribute object specifies a bullet symbol.
+
+\membersection{wxTextAttrEx::HasCharacterStyleName}\label{wxtextattrexhascharacterstylename}
+
+\constfunc{bool}{HasCharacterStyleName}{\void}
+
+Returns \true if the attribute object specifies a character style name.
+
+\membersection{wxTextAttrEx::HasLineSpacing}\label{wxtextattrexhaslinespacing}
+
+\constfunc{bool}{HasLineSpacing}{\void}
+
+Returns \true if the attribute object specifies line spacing.
+
+\membersection{wxTextAttrEx::HasParagraphSpacingAfter}\label{wxtextattrexhasparagraphspacingafter}
+
+\constfunc{bool}{HasParagraphSpacingAfter}{\void}
+
+Returns \true if the attribute object specifies spacing after a paragraph.
+
+\membersection{wxTextAttrEx::HasParagraphSpacingBefore}\label{wxtextattrexhasparagraphspacingbefore}
+
+\constfunc{bool}{HasParagraphSpacingBefore}{\void}
+
+Returns \true if the attribute object specifies spacing before a paragraph.
+
+\membersection{wxTextAttrEx::HasParagraphStyleName}\label{wxtextattrexhasparagraphstylename}
+
+\constfunc{bool}{HasParagraphStyleName}{\void}
+
+Returns \true if the attribute object specifies a paragraph style name.
+
+\membersection{wxTextAttrEx::Init}\label{wxtextattrexinit}
+
+\func{void}{Init}{\void}
+
+Initialises this object.
+
+\membersection{wxTextAttrEx::IsCharacterStyle}\label{wxtextattrexischaracterstyle}
+
+\constfunc{bool}{IsCharacterStyle}{\void}
+
+Returns \true if the object represents a character style, that is,
+the flags specify a font or a text background or foreground colour.
+
+\membersection{wxTextAttrEx::IsDefault}\label{wxtextattrexisdefault}
+
+\constfunc{bool}{IsDefault}{\void}
+
+Returns \false if we have any attributes set, \true otherwise.
+
+\membersection{wxTextAttrEx::IsParagraphStyle}\label{wxtextattrexisparagraphstyle}
+
+\constfunc{bool}{IsParagraphStyle}{\void}
+
+Returns \true if the object represents a paragraph style, that is,
+the flags specify alignment, indentation, tabs, paragraph spacing, or
+bullet style.
+
+\membersection{wxTextAttrEx::SetBulletNumber}\label{wxtextattrexsetbulletnumber}
+
+\func{void}{SetBulletNumber}{\param{int }{n}}
+
+Sets the bullet number.
+
+\membersection{wxTextAttrEx::SetBulletStyle}\label{wxtextattrexsetbulletstyle}
+
+\func{void}{SetBulletStyle}{\param{int }{style}}
+
+Sets the bullet style. The following styles can be passed:
+
+{\small
+\begin{verbatim}
+#define wxTEXT_ATTR_BULLET_STYLE_NONE           0x0000
+#define wxTEXT_ATTR_BULLET_STYLE_ARABIC         0x0001
+#define wxTEXT_ATTR_BULLET_STYLE_LETTERS_UPPER  0x0002
+#define wxTEXT_ATTR_BULLET_STYLE_LETTERS_LOWER  0x0004
+#define wxTEXT_ATTR_BULLET_STYLE_ROMAN_UPPER    0x0008
+#define wxTEXT_ATTR_BULLET_STYLE_ROMAN_LOWER    0x0010
+#define wxTEXT_ATTR_BULLET_STYLE_SYMBOL         0x0020
+#define wxTEXT_ATTR_BULLET_STYLE_BITMAP         0x0040
+#define wxTEXT_ATTR_BULLET_STYLE_PARENTHESES    0x0080
+#define wxTEXT_ATTR_BULLET_STYLE_PERIOD         0x0100
+\end{verbatim}
+}
+
+\membersection{wxTextAttrEx::SetBulletSymbol}\label{wxtextattrexsetbulletsymbol}
+
+\func{void}{SetBulletSymbol}{\param{wxChar }{symbol}}
+
+Sets the paragraph symbol.
+
+\membersection{wxTextAttrEx::SetCharacterStyleName}\label{wxtextattrexsetcharacterstylename}
+
+\func{void}{SetCharacterStyleName}{\param{const wxString\& }{name}}
+
+Sets the character style name.
+
+\membersection{wxTextAttrEx::SetLineSpacing}\label{wxtextattrexsetlinespacing}
+
+\func{void}{SetLineSpacing}{\param{int }{spacing}}
+
+Sets the line spacing. {\it spacing} is a multiple, where 10 means single-spacing,
+15 means 1.5 spacing, and 20 means double spacing. The following constants are
+defined for convenience:
+
+{\small
+\begin{verbatim}
+#define wxTEXT_ATTR_LINE_SPACING_NORMAL         10
+#define wxTEXT_ATTR_LINE_SPACING_HALF           15
+#define wxTEXT_ATTR_LINE_SPACING_TWICE          20
+\end{verbatim}
+}
+
+\membersection{wxTextAttrEx::SetParagraphSpacingAfter}\label{wxtextattrexsetparagraphspacingafter}
+
+\func{void}{SetParagraphSpacingAfter}{\param{int }{spacing}}
+
+Sets the spacing after a paragraph, in tenths of a millimetre.
+
+\membersection{wxTextAttrEx::SetParagraphSpacingBefore}\label{wxtextattrexsetparagraphspacingbefore}
+
+\func{void}{SetParagraphSpacingBefore}{\param{int }{spacing}}
+
+Sets the spacing before a paragraph, in tenths of a millimetre.
+
+\membersection{wxTextAttrEx::SetParagraphStyleName}\label{wxtextattrexsetparagraphstylename}
+
+\func{void}{SetParagraphStyleName}{\param{const wxString\& }{name}}
+
+Sets the name of the paragraph style.
+
+\membersection{wxTextAttrEx::operator=}\label{wxtextattrexoperatorassign}
+
+\func{void operator}{operator=}{\param{const wxTextAttr\& }{attr}}
+
+Assignment from a wxTextAttr object.
+
+\func{void operator}{operator=}{\param{const wxTextAttrEx\& }{attr}}
+
+Assignment from a wxTextAttrEx object.
diff --git a/docs/latex/wx/topics.tex b/docs/latex/wx/topics.tex
index fed6b972c2..624e734dba 100644
--- a/docs/latex/wx/topics.tex
+++ b/docs/latex/wx/topics.tex
@@ -59,6 +59,7 @@ This chapter contains a selection of topic overviews.
 \input tdb.tex
 \input tipc.tex
 \input wxhtml.tex
+\input richtextoverview.tex
 \input tenvvars.tex
 \input wxPython.tex
 \input re_syntax.tex
-- 
2.45.2

