TextDisplay - unstructured text display
SYNOPSIS
#include <InterViews/textdisplay.h>
DESCRIPTION
A TextDisplay manages and displays an array of lines of
text. Operations are provided to insert and delete lines,
to insert and delete text within a line, and to scroll the
display. TextDisplays are typically used to implement
interactors that require non-trivial display of unstruc-
tured text.
The array is addressed by a line number and an index into
the line. Text can be inserted or deleted at arbitrary
positions. By default, the first character in line number
zero is positioned with its top left corner at the top
left corner of the TextDisplay. The display is automati-
cally updated following modifications to the text or when
scrolling. Each character in the array has an associated
text style. Operations are provided to apply, add, or
remove font styles to a range of the text. TextDisplay
can be used with both constant-width and proportionally-
spaced fonts and with arbitrary geometric transformations.
PUBLIC OPERATIONS
TextDisplay()
~TextDisplay(boolean autosized = false)
Create or destroy a TextDisplay. If autosized is
true, the TextDisplay will automatically grow its
size as text is added. The default is to keep the
size constant.
void LineHeight(Coord lineheight)
void TabWidth(Coord tabwidth)
Lines of text will be positioned with baselines
separated by lineheight. Tab characters in the
text will cause the following character to be posi-
tioned an integral multiple of tabwidth from the
beginning of the line.
void Resize(Coord xmin, Coord ymin, Coord xmax, Coord
ymax)
void Bounds(Coord& xmin, Coord& ymin, Coord& xmax, Coord&
ymax)
Specify or query the size of the display. Only
lines of text that fall completely inside the spec-
ified region will be displayed. TextDisplay will
not draw on any part of the canvas outside the
specified bounds. Conversely, TextDisplay is free
to draw on any part of the canvas within the speci-
fied bounds.
Specify the painter and canvas to use for drawing
operations; the painter specifies the font, colors,
and geometric transformation. Draw should be
called before performing any operation on the
TextDisplay which produces output or requires
graphical information, or when there is a possibil-
ity that the painter or canvas has changed since
the function was last called.
void Redraw(Coord left, Coord bottom, Coord right, Coord
top)
Redraw a specified region of the display.
void Scroll(int line, Coord x, Coord y)
Scroll the display so that line line is positioned
with its upper-left corner at (x, y). There are no
restrictions on the arguments: it is possible to
scroll the display so that no lines are visible.
void InsertLinesAfter(int line, int count)
void InsertLinesBefore(int line, int count)
void DeleteLinesAfter(int line, int count)
void DeleteLinesBefore(int line, int count)
Insert or delete whole lines of text. Line line is
not affected by the operation. Other lines will
move up or down to accommodate the changes. Newly
inserted lines are blank. The specified line need
not refer to an existing line.
void InsertText(int line, int index, const char*, int
count)
void DeleteText(int line, int index, int count)
void ReplaceText(int line, const char*, int count)
Modify the text within line line. InsertText and
DeleteText will cause the following characters on
the line to move to accommodate the changes.
ReplaceText replaces the entire text of the line.
If the specified line is non-existent, a new line
will be created.
void Style(int line1, int index1, int line2, int
index2, int style)
void AddStyle(int line1, int index1, int line2, int
index2, int style)
void RemoveStyle(int line1, int index1, int line2, int
index2, int style)
Modify the styling of a range of text. Style
replaces any existing style; AddStyle adds style
style in addition to any existing styles;
RemoveStyle removes style style without affecting
other existing styles. Styles are specified as any
combination of the constants Plain, Boldface,
void Caret(int line, int index)
Control the shape and position of a caret. Valid
caret styles are currently NoCaret, BarCaret,
UnderscoreCaret and OutlineCaret. TextDisplay does
not automatically adjust the position of the caret
following insertions and deletions.
int LineNumber(Coord y)
int LineIndex(int line, Coord x)
Map x and y display coordinates into line and index
text coordinates. LineNumber returns the number of
the line that contains the specified vertical posi-
tion y. LineIndex returns the index into line line
that best corresponds to the specified horizontal
position x.
Coord Width()
Coord Height()
Return the width or the height of the text cur-
rently displayed by the TextDisplay. Width returns
the width of the longest line in the display.
Height returns the distance from the top of the
topmost line to the bottom of the bottommost line.
Note that these dimensions do not necessarily cor-
respond to the TextDisplay's bounds as returned by
Bounds.
Coord Base(int line)
Coord Top(int line)
Coord Left(int line, int index)
Coord Right(int line, int index)
Map line and index text coordinates into x and y
display coordinates. The return values define a
bounding box for the character specified by line
and index.
SEE ALSO
Painter(2I), Canvas(2I)
Man(1) output converted with
man2html