<HTML>
<BODY>

<!-- NEW PAGE -->

<H2><A name="Fl_Text_Buffer">class Fl_Text_Buffer</A></H2>

<HR>

<H3>Class Hierarchy</H3>

<UL><PRE>
<B>Fl_Text_Buffer</B>
         |
         +----<A href="Fl_Text_Display.html">Fl_Text_Display</A>,
              <A href="Fl_Text_Editor.html">Fl_Text_Editor</A>
</PRE></UL>

<H3>Include Files</H3>

<UL><PRE>
#include &lt;FL/Fl_Text_Buffer.H&gt;
</PRE></UL>

<H3>Description</H3>

<P>The <TT>Fl_Text_Buffer</TT> class is used by the <TT>Fl_Text_Display</TT>
and <TT>Fl_Text_Editor</TT> to manage complex text data and is based upon the
excellent NEdit text editor engine - see
<A HREF="http://www.nedit.org/">http://www.nedit.org/</A>.</P>

<H3>Methods</H3>

<TABLE CELLPADDING="10">
<TR VALIGN="TOP"><TD><UL>

	<LI><A HREF="#Fl_Text_Buffer.Fl_Text_Buffer">Fl_Text_Buffer</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.~Fl_Text_Buffer">~Fl_Text_Buffer</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.add_modify_callback">add_modify_callback</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.append">append</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.appendfile">appendfile</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.call_modify_callbacks">call_modify_callbacks</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.character">character</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.character_width">character_width</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.clear_rectangular">clear_rectangular</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.copy">copy</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.count_displayed_characters">count_displayed_characters</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.count_lines">count_lines</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.expand_character">expand_character</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.findchar_backward">findchar_backward</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.findchar_forward">findchar_forward</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.findchars_backward">findchars_backward</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.findchars_forward">findchars_forward</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.highlight">highlight</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.highlight_position">highlight_position</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.highlight_rectangular">highlight_rectangular</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.highlight_selection">highlight_selection</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.highlight_text">highlight_text</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.insert_column">insert_column</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.insertfile">insertfile</A></LI>

</UL></TD><TD><UL>

	<LI><A HREF="#Fl_Text_Buffer.insert">insert</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.length">length</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.line_end">line_end</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.line_start">line_start</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.line_text">line_text</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.loadfile">loadfile</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.null_substitution_character">null_substitution_character</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.outputfile">outputfile</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.overlay_rectangular">overlay_rectangular</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.primary_selection">primary_selection</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.remove_modify_callback">remove_modify_callback</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.remove_rectangular">remove_rectangular</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.remove">remove</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.remove_secondary_selection">remove_secondary_selection</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.remove_selection">remove_selection</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.replace_rectangular">replace_rectangular</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.replace">replace</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.replace_secondary_selection">replace_secondary_selection</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.replace_selection">replace_selection</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.rewind_lines">rewind_lines</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.savefile">savefile</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.search_backward">search_backward</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.search_forward">search_forward</A></LI>

</UL></TD><TD><UL>

	<LI><A HREF="#Fl_Text_Buffer.secondary_selection_position">secondary_selection_position</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.secondary_selection">secondary_selection</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.secondary_selection_text">secondary_selection_text</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.secondary_select_rectangular">secondary_select_rectangular</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.secondary_select">secondary_select</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.secondary_unselect">secondary_unselect</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.selected">selected</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.selection_position">selection_position</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.selection_text">selection_text</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.select_rectangular">select_rectangular</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.select">select</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.skip_displayed_characters">skip_displayed_characters</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.skip_lines">skip_lines</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.substitute_null_characters">substitute_null_characters</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.tab_distance">tab_distance</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.text_in_rectangle">text_in_rectangle</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.text_range">text_range</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.text">text</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.unhighlight">unhighlight</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.unselect">unselect</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.unsubstitute_null_characters">unsubstitute_null_characters</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.word_end">word_end</A></LI>
	<LI><A HREF="#Fl_Text_Buffer.word_start">word_start</A></LI>

</UL></TD></TR>
</TABLE>

<H4><A NAME="Fl_Text_Buffer.Fl_Text_Buffer">Fl_Text_Buffer(int requestedSize = 0);</A></H4>

<P>Creates a new text buffer of the specified initial size.

<H4><A NAME="Fl_Text_Buffer.~Fl_Text_Buffer">~Fl_Text_Buffer();</A></H4>

<P>Destroys a text buffer.

<H4><A NAME="Fl_Text_Buffer.add_modify_callback">void add_modify_callback(Fl_Text_Modify_Cb bufModifiedCB, void* cbArg);</A></H4>

<P>Adds a callback function that is called whenever the text buffer is
modified. The callback function is declared as follows:

<UL><PRE>
typedef void (*Fl_Text_Modify_Cb)(int pos, int nInserted, int nDeleted,
                                  int nRestyled, const char* deletedText,
                                  void* cbArg);
</PRE></UL>

<H4><A NAME="Fl_Text_Buffer.append">void append(const char* text);</A></H4>

<P>Appends the text string to the end of the buffer.

<H4><A NAME="Fl_Text_Buffer.appendfile">int appendfile(const char *file, int buflen = 128*1024);</A></H4>

<P>Appends the named file to the end of the buffer.

<H4><A NAME="Fl_Text_Buffer.call_modify_callbacks">void call_modify_callbacks();</A></H4>

<P>Calls all modify callbacks that have been registered using
the <A
HREF="#Fl_Text_Buffer.add_modify_callback"><TT>add_modify_callback()</TT></A>
method.

<H4><A NAME="Fl_Text_Buffer.character">char character(int pos);</A></H4>

<P>Returns the character at the specified position in the buffer.

<H4><A NAME="Fl_Text_Buffer.character_width">static int character_width(char c, int indent, int tabDist, char nullSubsChar);</A></H4>

<P>Returns the column width of the specified character. The
<TT>indent</TT> argument specifies the current column position,
and <TT>tabDist</TT> specifies the number of columns to use for
each tab.

<P>The <TT>nullSubsChar</TT> argument specifies the current
<TT>nul</TT> character.

<H4><A NAME="Fl_Text_Buffer.clear_rectangular">void clear_rectangular(int start, int end, int rectStart, int rectEnd);</A></H4>

<P>Clears text in the specified area.

<H4><A NAME="Fl_Text_Buffer.copy">void copy(Fl_Text_Buffer* fromBuf, int fromStart, int fromEnd, int toPos);</A></H4>

<P>Copies text from one buffer to this one; <TT>fromBuf</TT> may
be the same as <TT>this</TT>.

<H4><A NAME="Fl_Text_Buffer.count_displayed_characters">int count_displayed_characters(int lineStartPos, int targetPos);</A></H4>

<P>Determines the number of characters that will be displayed
between <TT>lineStartPos</TT> and <TT>targetPos</TT>.

<H4><A NAME="Fl_Text_Buffer.count_lines">int count_lines(int startPos, int endPos);</A></H4>

<P>Determines the number of lines between <TT>startPos</TT> and
<TT>endPos</TT>.

<H4><A NAME="Fl_Text_Buffer.expand_character">int expand_character(int pos, int indent, char *outStr);<BR>
static int expand_character(char c, int indent, char* outStr, int tabDist,
char nullSubsChar);</A></H4>

<P>Expands the given character to a displayable format. Tabs and
other control characters are given special treatment.

<H4><A NAME="Fl_Text_Buffer.findchar_backward">int findchar_backward(int startPos, char searchChar, int* foundPos);</A></H4>

<P>Finds the previous occurrence of the specified character.

<H4><A NAME="Fl_Text_Buffer.findchar_forward">int findchar_forward(int startPos, char searchChar, int* foundPos);</A></H4>

<P>Finds the next occurrence of the specified character.

<H4><A NAME="Fl_Text_Buffer.findchars_backward">int findchars_backward(int startPos, const char* searchChars, int* foundPos);</A></H4>

<P>Finds the previous occurrence of the specified characters.

<H4><A NAME="Fl_Text_Buffer.findchars_forward">int findchars_forward(int startPos, const char* searchChars, int* foundPos);</A></H4>

<P>Finds the next occurrence of the specified characters.
Search forwards in buffer for characters in <i>searchChars</i>, starting
with the character <i>startPos</i>, and returning the result in <i>foundPos</i>
returns 1 if found, 0 if not.

<H4><A NAME="Fl_Text_Buffer.highlight">void highlight(int start, int end);</A></H4>

<P>Highlights the specified text within the buffer.

<H4><A NAME="Fl_Text_Buffer.highlight_position">int highlight_position(int* start, int* end, int* isRect, int* rectStart,
int* rectEnd);</A></H4>

<P>Returns the current highlight positions.

<H4><A NAME="Fl_Text_Buffer.highlight_rectangular">void highlight_rectangular(int start, int end, int rectStart, int rectEnd);</A></H4>

<P>Highlights the specified rectangle of text within the buffer.

<H4><A NAME="Fl_Text_Buffer.highlight_selection">Fl_Text_Selection* highlight_selection();</A></H4>

<P>Returns the current highlight selection.

<H4><A NAME="Fl_Text_Buffer.highlight_text">const char* highlight_text();</A></H4>

<P>Returns the highlighted text. When you are done with the
text, free it using the <tt>free()</tt> function.

<H4><A NAME="Fl_Text_Buffer.insert_column">void insert_column(int column, int startPos, const char* text,
int* charsInserted, int* charsDeleted);</A></H4>

<P>Inserts a column of text without calling the modify callbacks.

<H4><A NAME="Fl_Text_Buffer.insertfile">int insertfile(const char *file, int pos, int buflen = 128*1024);</A></H4>

<P>Inserts a file at the specified position.

<H4><A NAME="Fl_Text_Buffer.insert">void insert(int pos, const char* text);</A></H4>

<P>Inserts text at the specified position.

<H4><A NAME="Fl_Text_Buffer.length">int length();</A></H4>

<P>Returns the number of characters in the buffer.

<H4><A NAME="Fl_Text_Buffer.line_end">int line_end(int pos);</A></H4>

<P>Returns the end position of the line.

<H4><A NAME="Fl_Text_Buffer.line_start">int line_start(int pos);</A></H4>

<P>Returns the start position of the line.

<H4><A NAME="Fl_Text_Buffer.line_text">const char* line_text(int pos);</A></H4>

<P>Returns the text for the line containing the specified
character position. When you are done with the text, free it
using the <tt>free()</tt> function.

<H4><A NAME="Fl_Text_Buffer.loadfile">int loadfile(const char *file, int buflen = 128*1024);</A></H4>

<P>Replaces the current buffer with the contents of a file.

<H4><A NAME="Fl_Text_Buffer.null_substitution_character">char null_substitution_character();</A></H4>

<P>Returns the current <TT>nul</TT> substitution character.

<H4><A NAME="Fl_Text_Buffer.outputfile">int outputfile(const char *file, int start, int end, int buflen = 128*1024);</A></H4>

<P>Writes the specified portions of the file to a file.

<H4><A NAME="Fl_Text_Buffer.overlay_rectangular">void overlay_rectangular(int startPos, int rectStart, int rectEnd,
const char* text, int* charsInserted, int* charsDeleted);</A></H4>

<P>Replaces a rectangular region of text with the given text.

<H4><A NAME="Fl_Text_Buffer.primary_selection">Fl_Text_Selection* primary_selection();</A></H4>

<P>Returns the primary selection.

<H4><A NAME="Fl_Text_Buffer.remove_modify_callback">void remove_modify_callback(Fl_Text_Modify_Cb bufModifiedCB, void* cbArg);</A></H4>

<P>Removes a modify callback.

<H4><A NAME="Fl_Text_Buffer.remove_rectangular">void remove_rectangular(int start, int end, int rectStart, int rectEnd);</A></H4>

<P>Deletes a rectangular area of text in the buffer.

<H4><A NAME="Fl_Text_Buffer.remove">void remove(int start, int end);</A></H4>

<P>Deletes a range of characters in the buffer.

<H4><A NAME="Fl_Text_Buffer.remove_secondary_selection">void remove_secondary_selection();</A></H4>

<P>Removes the text in the secondary selection.

<H4><A NAME="Fl_Text_Buffer.remove_selection">void remove_selection();</A></H4>

<P>Removes the text in the primary selection.

<H4><A NAME="Fl_Text_Buffer.replace_rectangular">void replace_rectangular(int start, int end, int rectStart, int rectEnd,
const char* text);</A></H4>

<P>Replaces the text in a rectangular area.

<H4><A NAME="Fl_Text_Buffer.replace">void replace(int start, int end, const char *text);</A></H4>

<P>Replaces the text in the specified range of characters in the buffer.

<H4><A NAME="Fl_Text_Buffer.replace_secondary_selection">void replace_secondary_selection(const char* text);</A></H4>

<P>Replaces the text in the secondary selection.

<H4><A NAME="Fl_Text_Buffer.replace_selection">void replace_selection(const char* text);</A></H4>

<P>Replaces the text in the primary selection.

<H4><A NAME="Fl_Text_Buffer.rewind_lines">int rewind_lines(int startPos, int nLines);</A></H4>

<P>Returns the buffer position for the Nth previous line.

<H4><A NAME="Fl_Text_Buffer.savefile">int savefile(const char *file, int buflen = 128*1024);</A></H4>

<P>Saves the entire buffer to a file.

<H4><A NAME="Fl_Text_Buffer.search_backward">int search_backward(int startPos, const char* searchString, int* foundPos,
int matchCase = 0);</A></H4>

<P>Searches backwards for the specified string.

<H4><A NAME="Fl_Text_Buffer.search_forward">int search_forward(int startPos, const char* searchString, int* foundPos,
int matchCase = 0);</A></H4>

<P>Searches forwards for the specified string.

<H4><A NAME="Fl_Text_Buffer.secondary_selection_position">int secondary_selection_position(int* start, int* end, int* isRect,
int* rectStart, int* rectEnd);</A></H4>

<H4><A NAME="Fl_Text_Buffer.secondary_selection">Fl_Text_Selection* secondary_selection();</A></H4>

<P>Returns the secondary selection.

<H4><A NAME="Fl_Text_Buffer.secondary_selection_text">const char* secondary_selection_text();</A></H4>

<P>Returns the text in the secondary selection. When you are
done with the text, free it using the <tt>free()</tt> function.

<H4><A NAME="Fl_Text_Buffer.secondary_select_rectangular">void secondary_select_rectangular(int start, int end, int rectStart,
int rectEnd);</A></H4>

<P>Selects a rectangle of characters in the secondary selection.

<H4><A NAME="Fl_Text_Buffer.secondary_select">void secondary_select(int start, int end);</A></H4>

<P>Selects a range of characters in the secondary selection.

<H4><A NAME="Fl_Text_Buffer.secondary_unselect">void secondary_unselect();</A></H4>

<P>Turns the secondary selection off.

<H4><A NAME="Fl_Text_Buffer.selected">int selected();</A></H4>

<P>Returns a non-zero number if any text has been selected, or 0
if no text is selected.

<H4><A NAME="Fl_Text_Buffer.selection_position">int selection_position(int* start, int* end);<BR>
int selection_position(int* start, int* end, int* isRect, int* rectStart, int* rectEnd);</A></H4>

<P>Returns the current selection.

<H4><A NAME="Fl_Text_Buffer.selection_text">const char* selection_text();</A></H4>

<P>Returns the currently selected text. When you are done with
the text, free it using the <tt>free()</tt> function.

<H4><A NAME="Fl_Text_Buffer.select_rectangular">void select_rectangular(int start, int end, int rectStart, int rectEnd);</A></H4>

<P>Selects a rectangle of characters in the buffer.

<H4><A NAME="Fl_Text_Buffer.select">void select(int start, int end);</A></H4>

<P>Selects a range of characters in the buffer.

<H4><A NAME="Fl_Text_Buffer.skip_displayed_characters">int skip_displayed_characters(int lineStartPos, int nChars);</A></H4>

<P>Skips forward the indicated number of characters in the
buffer from the start position.

<H4><A NAME="Fl_Text_Buffer.skip_lines">int skip_lines(int startPos, int nLines);</A></H4>

<P>Returns the buffer position for the Nth line after the start
position.

<H4><A NAME="Fl_Text_Buffer.substitute_null_characters">int substitute_null_characters(char* string, int length);</A></H4>

<P>Replaces <TT>nul</TT> characters in the given string with the
<TT>nul</TT> substitution character.

<H4><A NAME="Fl_Text_Buffer.tab_distance">int tab_distance();<BR>
void tab_distance(int tabDist);</A></H4>

<P>Gets or sets the tab width.

<H4><A NAME="Fl_Text_Buffer.text_in_rectangle">const char* text_in_rectangle(int start, int end, int rectStart, int rectEnd);</A></H4>

<P>Returns the text from the given rectangle. When you are done
with the text, free it using the <tt>free()</tt> function.

<H4><A NAME="Fl_Text_Buffer.text_range">const char* text_range(int start, int end);</A></H4>

<P>Returns the text from the range of characters. When you are
done with the text, free it using the <tt>free()</tt> function.

<H4><A NAME="Fl_Text_Buffer.text">const char* text();<BR>
void text(const char* text);</A></H4>

<P>Gets or sets the text in the buffer. When you are done with
the text, free it using the <tt>free()</tt> function.

<H4><A NAME="Fl_Text_Buffer.unhighlight">void unhighlight();</A></H4>

<P>Unhighlights text in the buffer.

<H4><A NAME="Fl_Text_Buffer.unselect">void unselect();</A></H4>

<P>Unselects text in the buffer.

<H4><A NAME="Fl_Text_Buffer.unsubstitute_null_characters">void unsubstitute_null_characters(char* string);</A></H4>

<P>Replaces the <TT>nul</TT> substitution characters in the
provided string with the <TT>nul</TT> character.

<H4><A NAME="Fl_Text_Buffer.word_end">int word_end(int pos);</A></H4>

<P>Returns the position for the end of the word.

<H4><A NAME="Fl_Text_Buffer.word_start">int word_start(int pos);</A></H4>

<P>Returns the position for the start of the word.

</BODY>
</HTML>