wxWidgets/interface/wx/richtext/richtextbuffer.h

1033 lines
31 KiB
Objective-C

/////////////////////////////////////////////////////////////////////////////
// Name: richtext/richtextbuffer.h
// Purpose: interface of wxRichTextBuffer
// Author: wxWidgets team
// RCS-ID: $Id$
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
/**
@class wxRichTextBuffer
This class represents the whole buffer associated with a wxRichTextCtrl.
@library{wxrichtext}
@category{richtext}
@see wxTextAttr, wxRichTextCtrl
*/
class wxRichTextBuffer
{
public:
//@{
/**
Default constructors.
*/
wxRichTextBuffer(const wxRichTextBuffer& obj);
wxRichTextBuffer();
//@}
/**
Destructor.
*/
~wxRichTextBuffer();
/**
Adds an event handler to the buffer's list of handlers. A buffer associated with
a contol has the control as the only event handler, but the application is free
to add more if further notification is required. All handlers are notified
of an event originating from the buffer, such as the replacement of a style
sheet
during loading. The buffer never deletes any of the event handlers, unless
RemoveEventHandler() is
called with @true as the second argument.
*/
bool AddEventHandler(wxEvtHandler* handler);
/**
Adds a file handler.
*/
void AddHandler(wxRichTextFileHandler* handler);
/**
Adds a paragraph of text.
*/
wxRichTextRange AddParagraph(const wxString& text);
/**
Returns @true if the buffer is currently collapsing commands into a single
notional command.
*/
bool BatchingUndo() const;
/**
Begins using alignment.
*/
bool BeginAlignment(wxTextAttrAlignment alignment);
/**
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.
@a cmdName should be the name of the combined command that will appear
next to Undo and Redo in the edit menu.
*/
bool BeginBatchUndo(const wxString& cmdName);
/**
Begin applying bold.
*/
bool BeginBold();
/**
Begins applying the named character style.
*/
bool BeginCharacterStyle(const wxString& characterStyle);
/**
Begins using this font.
*/
bool BeginFont(const wxFont& font);
/**
Begins using the given point size.
*/
bool BeginFontSize(int pointSize);
/**
Begins using italic.
*/
bool BeginItalic();
/**
Begin using @a leftIndent for the left indent, and optionally @a 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.
*/
bool BeginLeftIndent(int leftIndent, int leftSubIndent = 0);
/**
Begins line spacing using the specified value. @e 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:
*/
bool BeginLineSpacing(int lineSpacing);
/**
Begins using a specified list style. Optionally, you can also pass a level and
a number.
*/
bool BeginListStyle(const wxString& listStyle, int level = 1,
int number = 1);
/**
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.
@a bulletNumber is a number, usually starting with 1.
@a leftIndent and @a leftSubIndent are values in tenths of a millimetre.
@a bulletStyle is a bitlist of the following values:
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.
*/
bool BeginNumberedBullet(int bulletNumber, int leftIndent,
int leftSubIndent,
int bulletStyle = wxTEXT_ATTR_BULLET_STYLE_ARABIC|wxTEXT_ATTR_BULLET_STYLE_PERIOD);
/**
Begins paragraph spacing; pass the before-paragraph and after-paragraph spacing
in tenths of
a millimetre.
*/
bool BeginParagraphSpacing(int before, int after);
/**
Begins applying the named paragraph style.
*/
bool BeginParagraphStyle(const wxString& paragraphStyle);
/**
Begins a right indent, specified in tenths of a millimetre.
*/
bool BeginRightIndent(int rightIndent);
/**
Begins applying a standard bullet, using one of the standard bullet names
(currently @c standard/circle or @c standard/square.
See BeginNumberedBullet() for an explanation of how indentation is used to
render the bulleted paragraph.
*/
bool BeginStandardBullet(const wxString& bulletName,
int leftIndent,
int leftSubIndent,
int bulletStyle = wxTEXT_ATTR_BULLET_STYLE_STANDARD);
/**
Begins using a specified style.
*/
bool BeginStyle(const wxTextAttr& style);
/**
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.
*/
bool BeginSuppressUndo();
/**
Begins applying a symbol bullet, using a character from the current font. See
BeginNumberedBullet() for
an explanation of how indentation is used to render the bulleted paragraph.
*/
bool BeginSymbolBullet(wxChar symbol, int leftIndent,
int leftSubIndent,
int bulletStyle = wxTEXT_ATTR_BULLET_STYLE_SYMBOL);
/**
Begins using the specified text foreground colour.
*/
bool BeginTextColour(const wxColour& colour);
/**
Begins applying wxTEXT_ATTR_URL to the content. Pass a URL and optionally, a
character style to apply,
since it is common to mark a URL with a familiar style such as blue text with
underlining.
*/
bool BeginURL(const wxString& url,
const wxString& characterStyle = wxEmptyString);
/**
Begins using underline.
*/
bool BeginUnderline();
/**
Returns @true if content can be pasted from the clipboard.
*/
bool CanPasteFromClipboard() const;
/**
Cleans up the file handlers.
*/
void CleanUpHandlers();
/**
Clears the buffer.
*/
void Clear();
//@{
/**
Clears the list style from the given range, clearing list-related attributes
and applying any named paragraph style associated with each paragraph.
@a flags is a bit list of the following:
wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this command will be undoable.
See also SetListStyle(), PromoteList(), NumberList().
*/
bool ClearListStyle(const wxRichTextRange& range,
int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO);
bool ClearListStyle(const wxRichTextRange& range,
int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO);
//@}
/**
Clears the style stack.
*/
void ClearStyleStack();
/**
Clones the object.
*/
wxRichTextObject* Clone() const;
/**
Copies the given buffer.
*/
void Copy(const wxRichTextBuffer& obj);
/**
Copy the given range to the clipboard.
*/
bool CopyToClipboard(const wxRichTextRange& range);
/**
Submits a command to delete the given range.
*/
bool DeleteRangeWithUndo(const wxRichTextRange& range,
wxRichTextCtrl* ctrl);
//@{
/**
Dumps the contents of the buffer for debugging purposes.
*/
void Dump();
void Dump(wxTextOutputStream& stream);
//@}
/**
Ends alignment.
*/
bool EndAlignment();
/**
Ends all styles that have been started with a Begin... command.
*/
bool EndAllStyles();
/**
Ends collapsing undo/redo commands, and submits the combined command.
*/
bool EndBatchUndo();
/**
Ends using bold.
*/
bool EndBold();
/**
Ends using the named character style.
*/
bool EndCharacterStyle();
/**
Ends using a font.
*/
bool EndFont();
/**
Ends using a point size.
*/
bool EndFontSize();
/**
Ends using italic.
*/
bool EndItalic();
/**
Ends using a left indent.
*/
bool EndLeftIndent();
/**
Ends using a line spacing.
*/
bool EndLineSpacing();
/**
Ends using a specified list style.
*/
bool EndListStyle();
/**
Ends a numbered bullet.
*/
bool EndNumberedBullet();
/**
Ends paragraph spacing.
*/
bool EndParagraphSpacing();
/**
Ends applying a named character style.
*/
bool EndParagraphStyle();
/**
Ends using a right indent.
*/
bool EndRightIndent();
/**
Ends using a standard bullet.
*/
bool EndStandardBullet();
/**
Ends the current style.
*/
bool EndStyle();
/**
Ends suppressing undo/redo commands.
*/
bool EndSuppressUndo();
/**
Ends using a symbol bullet.
*/
bool EndSymbolBullet();
/**
Ends using a text foreground colour.
*/
bool EndTextColour();
/**
Ends applying a URL.
*/
bool EndURL();
/**
Ends using underline.
*/
bool EndUnderline();
//@{
/**
Finds a handler by name.
*/
wxRichTextFileHandler* FindHandler(int imageType);
wxRichTextFileHandler* FindHandler(const wxString& extension,
int imageType);
wxRichTextFileHandler* FindHandler(const wxString& name);
//@}
/**
Finds a handler by filename or, if supplied, type.
*/
wxRichTextFileHandler* FindHandlerFilenameOrType(const wxString& filename,
int imageType);
/**
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).
*/
const wxTextAttr GetBasicStyle() const;
/**
Gets the collapsed command.
*/
wxRichTextCommand* GetBatchedCommand() const;
/**
Gets the command processor. A text buffer always creates its own command
processor when it is
initialized.
*/
wxCommandProcessor* GetCommandProcessor() const;
/**
Returns the current default style, affecting the style currently being applied
(for example, setting the default
style to bold will cause subsequently inserted text to be bold).
*/
const wxTextAttr GetDefaultStyle() const;
/**
Gets a wildcard incorporating all visible handlers. If @a 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 @ref getextwildcard() LoadFile given a
selected filter.
*/
wxString GetExtWildcard(bool combine = false, bool save = false,
wxArrayInt* types = NULL);
/**
Returns the list of file handlers.
*/
wxList GetHandlers();
/**
Returns the object to be used to render certain aspects of the content, such as
bullets.
*/
static wxRichTextRenderer* GetRenderer();
/**
Gets the attributes at the given position.
This function gets the combined style - that is, the style you see on the
screen as a result
of combining base style, paragraph style and character style attributes. To get
the character
or paragraph style alone, use GetUncombinedStyle().
*/
bool GetStyle(long position, wxTextAttr& style);
/**
This function gets a style representing the common, combined attributes in the
given range.
Attributes which have different values within the specified range will not be
included the style
flags.
The function is used to get the attributes to display in the formatting dialog:
the user
can edit the attributes common to the selection, and optionally specify the
values of further
attributes to be applied uniformly.
To apply the edited attributes, you can use SetStyle() specifying
the wxRICHTEXT_SETSTYLE_OPTIMIZE flag, which will only apply attributes that
are different
from the @e combined attributes within the range. So, the user edits the
effective, displayed attributes
for the range, but his choice won't be applied unnecessarily to content. As an
example,
say the style for a paragraph specifies bold, but the paragraph text doesn't
specify a weight. The
combined style is bold, and this is what the user will see on-screen and in the
formatting
dialog. The user now specifies red text, in addition to bold. When applying with
SetStyle, the content font weight attributes won't be changed to bold because
this is already specified
by the paragraph. However the text colour attributes @e will be changed to
show red.
*/
bool GetStyleForRange(const wxRichTextRange& range,
wxTextAttr& style);
/**
Returns the current style sheet associated with the buffer, if any.
*/
wxRichTextStyleSheet* GetStyleSheet() const;
/**
Get the size of the style stack, for example to check correct nesting.
*/
size_t GetStyleStackSize() const;
/**
Gets the attributes at the given position.
This function gets the @e uncombined style - that is, the attributes associated
with the
paragraph or character content, and not necessarily the combined attributes you
see on the
screen. To get the combined attributes, use GetStyle().
If you specify (any) paragraph attribute in @e style's flags, this function
will fetch
the paragraph attributes. Otherwise, it will return the character attributes.
*/
bool GetUncombinedStyle(long position, wxTextAttr& style);
/**
Finds the text position for the given position, putting the position in @a
textPosition if
one is found. @a pt is in logical units (a zero y position is
at the beginning of the buffer).
The function returns one of the following values:
*/
int HitTest(wxDC& dc, const wxPoint& pt, long& textPosition);
/**
Initialisation.
*/
void Init();
/**
Initialises the standard handlers. Currently, only the plain text
loading/saving handler
is initialised by default.
*/
void InitStandardHandlers();
/**
Inserts a handler at the front of the list.
*/
void InsertHandler(wxRichTextFileHandler* handler);
/**
Submits a command to insert the given image.
*/
bool InsertImageWithUndo(long pos,
const wxRichTextImageBlock& imageBlock,
wxRichTextCtrl* ctrl);
/**
Submits a command to insert a newline.
*/
bool InsertNewlineWithUndo(long pos, wxRichTextCtrl* ctrl);
/**
Submits a command to insert the given text.
*/
bool InsertTextWithUndo(long pos, const wxString& text,
wxRichTextCtrl* ctrl);
/**
Returns @true if the buffer has been modified.
*/
bool IsModified() const;
//@{
/**
Loads content from a file.
*/
bool LoadFile(wxInputStream& stream,
int type = wxRICHTEXT_TYPE_ANY);
bool LoadFile(const wxString& filename,
int type = wxRICHTEXT_TYPE_ANY);
//@}
/**
Marks the buffer as modified or unmodified.
*/
void Modify(bool modify = true);
//@{
/**
Numbers the paragraphs in the given range. Pass flags to determine how the
attributes are set.
Either the style definition or the name of the style definition (in the current
sheet) can be passed.
@a flags is a bit list of the following:
wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this command will be undoable.
wxRICHTEXT_SETSTYLE_RENUMBER: specifies that numbering should start from @e
startFrom, otherwise existing attributes are used.
wxRICHTEXT_SETSTYLE_SPECIFY_LEVEL: specifies that @a listLevel should be used
as the level for all paragraphs, otherwise the current indentation will be used.
See also SetListStyle(), PromoteList(), ClearListStyle().
*/
bool NumberList(const wxRichTextRange& range,
const wxRichTextListStyleDefinition* style,
int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO,
int startFrom = -1,
int listLevel = -1);
bool Number(const wxRichTextRange& range,
const wxString& styleName,
int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO,
int startFrom = -1,
int listLevel = -1);
//@}
/**
Pastes the clipboard content to the buffer at the given position.
*/
bool PasteFromClipboard(long position);
//@{
/**
Promotes or demotes the paragraphs in the given range. A positive @a promoteBy
produces a smaller indent, and a negative number
produces a larger indent. Pass flags to determine how the attributes are set.
Either the style definition or the name of the style definition (in the current
sheet) can be passed.
@a flags is a bit list of the following:
wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this command will be undoable.
wxRICHTEXT_SETSTYLE_RENUMBER: specifies that numbering should start from @e
startFrom, otherwise existing attributes are used.
wxRICHTEXT_SETSTYLE_SPECIFY_LEVEL: specifies that @a listLevel should be used
as the level for all paragraphs, otherwise the current indentation will be used.
See also SetListStyle(), See also SetListStyle(), ClearListStyle().
*/
bool PromoteList(int promoteBy, const wxRichTextRange& range,
const wxRichTextListStyleDefinition* style,
int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO,
int listLevel = -1);
bool PromoteList(int promoteBy, const wxRichTextRange& range,
const wxString& styleName,
int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO,
int listLevel = -1);
//@}
/**
Removes an event handler from the buffer's list of handlers, deleting the
object if @a deleteHandler is @true.
*/
bool RemoveEventHandler(wxEvtHandler* handler,
bool deleteHandler = false);
/**
Removes a handler.
*/
bool RemoveHandler(const wxString& name);
/**
Clears the buffer, adds a new blank paragraph, and clears the command history.
*/
void ResetAndClearCommands();
//@{
/**
Saves content to a file.
*/
bool SaveFile(wxOutputStream& stream,
int type = wxRICHTEXT_TYPE_ANY);
bool SaveFile(const wxString& filename,
int type = wxRICHTEXT_TYPE_ANY);
//@}
/**
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).
*/
void SetBasicStyle(const wxTextAttr& style);
/**
Sets the default style, affecting the style currently being applied (for
example, setting the default
style to bold will cause subsequently inserted text to be bold).
This is not cumulative - setting the default style will replace the previous
default style.
*/
void SetDefaultStyle(const wxTextAttr& style);
//@{
/**
Sets the list attributes for the given range, passing flags to determine how
the attributes are set.
Either the style definition or the name of the style definition (in the current
sheet) can be passed.
@a flags is a bit list of the following:
wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this command will be undoable.
wxRICHTEXT_SETSTYLE_RENUMBER: specifies that numbering should start from @e
startFrom, otherwise existing attributes are used.
wxRICHTEXT_SETSTYLE_SPECIFY_LEVEL: specifies that @a listLevel should be used
as the level for all paragraphs, otherwise the current indentation will be used.
See also NumberList(), PromoteList(), ClearListStyle().
*/
bool SetListStyle(const wxRichTextRange& range,
const wxRichTextListStyleDefinition* style,
int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO,
int startFrom = -1,
int listLevel = -1);
bool SetListStyle(const wxRichTextRange& range,
const wxString& styleName,
int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO,
int startFrom = -1,
int listLevel = -1);
//@}
/**
Sets @a renderer as the object to be used to render certain aspects of the
content, such as bullets.
You can override default rendering by deriving a new class from
wxRichTextRenderer or wxRichTextStdRenderer,
overriding one or more virtual functions, and setting an instance of the class
using this function.
*/
static void SetRenderer(wxRichTextRenderer* renderer);
/**
Sets the attributes for the given range. Pass flags to determine how the
attributes are set.
The end point of range is specified as the last character position of the span
of text.
So, for example, to set the style for a character at position 5, use the range
(5,5).
This differs from the wxRichTextCtrl API, where you would specify (5,6).
@a flags may contain a bit list of the following values:
wxRICHTEXT_SETSTYLE_NONE: no style flag.
wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this operation should be
undoable.
wxRICHTEXT_SETSTYLE_OPTIMIZE: specifies that the style should not be applied
if the
combined style at this point is already the style in question.
wxRICHTEXT_SETSTYLE_PARAGRAPHS_ONLY: specifies that the style should only be
applied to paragraphs,
and not the content. This allows content styling to be preserved independently
from that of e.g. a named paragraph style.
wxRICHTEXT_SETSTYLE_CHARACTERS_ONLY: specifies that the style should only be
applied to characters,
and not the paragraph. This allows content styling to be preserved
independently from that of e.g. a named paragraph style.
wxRICHTEXT_SETSTYLE_RESET: resets (clears) the existing style before applying
the new style.
wxRICHTEXT_SETSTYLE_REMOVE: removes the specified style. Only the style flags
are used in this operation.
*/
bool SetStyle(const wxRichTextRange& range,
const wxTextAttr& style,
int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO);
/**
Sets the current style sheet, if any. This will allow the application to use
named character and paragraph styles found in the style sheet.
*/
void SetStyleSheet(wxRichTextStyleSheet* styleSheet);
/**
Submit an action immediately, or delay it according to whether collapsing is on.
*/
bool SubmitAction(wxRichTextAction* action);
/**
Returns @true if undo suppression is currently on.
*/
bool SuppressingUndo() const;
};
/**
@class wxRichTextFileHandler
This is the base class for file handlers, for loading and/or saving content
associated with a wxRichTextBuffer.
@library{wxrichtext}
@category{richtext}
*/
class wxRichTextFileHandler : public wxObject
{
public:
/**
Constructor.
*/
wxRichTextFileHandler(const wxString& name = wxEmptyString,
const wxString& ext = wxEmptyString,
int type = 0);
/**
Override this function and return @true if this handler can we handle @e
filename. By default,
this function checks the extension.
*/
bool CanHandle(const wxString& filename) const;
/**
Override and return @true if this handler can load content.
*/
bool CanLoad() const;
/**
Override and return @true if this handler can save content.
*/
bool CanSave() const;
/**
Override to load content from @a stream into @e buffer.
*/
bool DoLoadFile(wxRichTextBuffer* buffer, wxInputStream& stream);
/**
Override to save content to @a stream from @e buffer.
*/
bool DoSaveFile(wxRichTextBuffer* buffer, wxOutputStream& stream);
/**
Returns the encoding associated with the handler (if any).
*/
const wxString GetEncoding() const;
/**
Returns the extension associated with the handler.
*/
wxString GetExtension() const;
/**
Returns flags that change the behaviour of loading or saving. See the
documentation for each
handler class to see what flags are relevant for each handler.
*/
int GetFlags() const;
/**
Returns the name of the handler.
*/
wxString GetName() const;
/**
Returns the type of the handler.
*/
int GetType() const;
/**
Returns @true if this handler should be visible to the user.
*/
bool IsVisible() const;
//@{
/**
Loads content from a stream or file. Not all handlers will implement file
loading.
*/
bool LoadFile(wxRichTextBuffer* buffer, wxInputStream& stream);
bool LoadFile(wxRichTextBuffer* buffer,
const wxString& filename);
//@}
//@{
/**
Saves content to a stream or file. Not all handlers will implement file saving.
*/
bool SaveFile(wxRichTextBuffer* buffer, wxOutputStream& stream);
bool SaveFile(wxRichTextBuffer* buffer,
const wxString& filename);
//@}
/**
Sets the encoding to use when saving a file. If empty, a suitable encoding is
chosen.
*/
void SetEncoding(const wxString& encoding);
/**
Sets the default extension to recognise.
*/
void SetExtension(const wxString& ext);
/**
Sets flags that change the behaviour of loading or saving. See the
documentation for each
handler class to see what flags are relevant for each handler.
You call this function directly if you are using a file handler explicitly
(without
going through the text control or buffer LoadFile/SaveFile API). Or, you can
call the control or buffer's SetHandlerFlags function to set the flags that will
be used for subsequent load and save operations.
*/
void SetFlags(int flags);
/**
Sets the name of the handler.
*/
void SetName(const wxString& name);
/**
Sets the handler type.
*/
void SetType(int type);
/**
Sets whether the handler should be visible to the user (via the application's
load and save
dialogs).
*/
void SetVisible(bool visible);
};
/**
@class wxRichTextRange
This class stores beginning and end positions for a range of data.
@library{wxrichtext}
@category{richtext}
*/
class wxRichTextRange
{
public:
//@{
/**
Constructors.
*/
wxRichTextRange(long start, long end);
wxRichTextRange(const wxRichTextRange& range);
wxRichTextRange();
//@}
/**
Destructor.
*/
~wxRichTextRange();
/**
Returns @true if the given position is within this range. Does not
match if the range is empty.
*/
bool Contains(long pos) const;
/**
Converts the internal range, which uses the first and last character positions
of the range,
to the API-standard range, whose end is one past the last character in the
range.
In other words, one is added to the end position.
*/
wxRichTextRange FromInternal() const;
/**
Returns the end position.
*/
long GetEnd() const;
/**
Returns the length of the range.
*/
long GetLength() const;
/**
Returns the start of the range.
*/
long GetStart() const;
/**
Returns @true if this range is completely outside @e range.
*/
bool IsOutside(const wxRichTextRange& range) const;
/**
Returns @true if this range is completely within @e range.
*/
bool IsWithin(const wxRichTextRange& range) const;
/**
Limits this range to be within @e range.
*/
bool LimitTo(const wxRichTextRange& range);
/**
Sets the end of the range.
*/
void SetEnd(long end);
/**
Sets the range.
*/
void SetRange(long start, long end);
/**
Sets the start of the range.
*/
void SetStart(long start);
/**
Swaps the start and end.
*/
void Swap();
/**
Converts the API-standard range, whose end is one past the last character in
the range,
to the internal form, which uses the first and last character positions of the
range.
In other words, one is subtracted from the end position.
*/
wxRichTextRange ToInternal() const;
/**
Adds @a range to this range.
*/
wxRichTextRange operator+(const wxRichTextRange& range) const;
/**
Subtracts @a range from this range.
*/
wxRichTextRange operator-(const wxRichTextRange& range) const;
/**
Assigns @a range to this range.
*/
void operator=(const wxRichTextRange& range);
/**
Returns @true if @a range is the same as this range.
*/
bool operator==(const wxRichTextRange& range) const;
};