summaryrefslogtreecommitdiff
path: root/src/Fl_Terminal.cxx
diff options
context:
space:
mode:
authorGreg Ercolano <erco@seriss.com>2025-05-09 09:29:10 -0700
committerGreg Ercolano <erco@seriss.com>2025-05-09 09:29:10 -0700
commitf8a7e299b03365a5526f787f7e5504cd09ec83e0 (patch)
tree5fccf24994011508f0220a64f0b0dd07b13744c7 /src/Fl_Terminal.cxx
parentbca167d03afe0c86f3be7c260f2055dca3d1e29f (diff)
Fl_Terminal doc fixes, private->protected for utf8_char_at_*()
Diffstat (limited to 'src/Fl_Terminal.cxx')
-rw-r--r--src/Fl_Terminal.cxx59
1 files changed, 46 insertions, 13 deletions
diff --git a/src/Fl_Terminal.cxx b/src/Fl_Terminal.cxx
index f68668b1e..74aa02161 100644
--- a/src/Fl_Terminal.cxx
+++ b/src/Fl_Terminal.cxx
@@ -911,8 +911,8 @@ void Fl_Terminal::RingBuffer::scroll(int rows, const CharStyle& style) {
//
// Example:
// // Walk ALL rows in the ring buffer..
-// for (int row=0; row<ring.rows(); row++) {
-// Utf8Char *u8c = ring.u8c_ring_row(row);
+// for (int row=0; row<ring_rows(); row++) {
+// Utf8Char *u8c = u8c_ring_row(row);
// ..
// }
//
@@ -925,7 +925,7 @@ const Fl_Terminal::Utf8Char* Fl_Terminal::RingBuffer::u8c_ring_row(int row) cons
// Return UTF-8 char for beginning of 'row' in the history buffer.
// Example:
// // Walk ALL rows in history..
-// for (int hrow=0; hrow<ring.hrows(); hrow++) {
+// for (int hrow=0; hrow<hist_rows(); hrow++) {
// Utf8Char *u8c = u8c_hist_row(hrow);
// ..
// }
@@ -940,7 +940,7 @@ const Fl_Terminal::Utf8Char* Fl_Terminal::RingBuffer::u8c_hist_row(int hrow) con
// Special case to walk the "in use" rows of the history
// Example:
// // Walk the "in use" rows of history..
-// for (int hrow=0; hrow<ring.hist_use(); hrow++) {
+// for (int hrow=0; hrow<hist_use(); hrow++) {
// Utf8Char *u8c = u8c_hist_use_row(hrow);
// ..
// }
@@ -957,7 +957,7 @@ const Fl_Terminal::Utf8Char* Fl_Terminal::RingBuffer::u8c_hist_use_row(int hurow
// Return UTF-8 char for beginning of 'row' in the display buffer
// Example:
// // Walk ALL rows in display..
-// for (int drow=0; drow<ring.drows(); drow++) {
+// for (int drow=0; drow<disp_rows(); drow++) {
// Utf8Char *u8c = u8c_disp_row(drow);
// ..
// }
@@ -975,8 +975,8 @@ const Fl_Terminal::Utf8Char* Fl_Terminal::RingBuffer::u8c_disp_row(int drow) con
// Scrolling offset is NOT applied; this is raw access to the ring's rows.
// Example:
// // Walk ALL rows in the ring buffer..
-// for (int row=0; row<ring.rows(); row++) {
-// Utf8Char *u8c = ring.u8c_ring_row(row);
+// for (int row=0; row<ring_rows(); row++) {
+// Utf8Char *u8c = u8c_ring_row(row);
// ..
// }
//
@@ -992,7 +992,7 @@ Fl_Terminal::Utf8Char* Fl_Terminal::RingBuffer::u8c_hist_use_row(int hurow)
// Return UTF-8 char for beginning of 'row' in the display buffer
// Example:
// // Walk ALL rows in display..
-// for (int drow=0; drow<ring.drows(); drow++) {
+// for (int drow=0; drow<disp_rows(); drow++) {
// Utf8Char *u8c = u8c_disp_row(drow);
// ..
// }
@@ -1081,10 +1081,15 @@ const Fl_Terminal::Utf8Char* Fl_Terminal::u8c_disp_row(int drow) const
Example:
\code
- // Walk ALL rows and cols in the ring buffer..
- for (int row=0; row<ring.rows(); row++) {
- Utf8Char *u8c = ring.u8c_ring_row(row);
- for (int col=0; col<ring.cols(); col++,u8c++) {
+ // Walk ALL rows and cols in the raw ring buffer..
+ // These will not necessarily be in order as they appear
+ // on-screen.
+ // For walking the terminal lines in order, see examples
+ // for u8c_hist_use_row() and u8c_disp_row().
+ //
+ for (int row=0; row<ring_rows(); row++) {
+ Utf8Char *u8c = u8c_ring_row(row);
+ for (int col=0; col<ring_cols(); col++,u8c++) {
..make use of u8c->xxx() methods..
}
}
@@ -1111,6 +1116,19 @@ Fl_Terminal::Utf8Char* Fl_Terminal::u8c_hist_row(int hrow)
aren't many (or any) rows in the history buffer that have been
populated with scrollback text yet.
+ Example to walk all "in use" lines of the history buffer:
+ \code
+ // Walk the entire screen history ("in use") and display to stdout
+ for (int row=0; row<hist_use(); row++) {
+ const Utf8Char *u8c = u8c_hist_use_row(row); // first char in row
+ for (int col=0; col<=hist_cols(); col++,u8c++) { // walk columns left-to-right
+ // ..Do things here with each u8c char..
+ ::printf("%.*s", u8c->length(), u8c->text_utf8()); // show each utf8 char to stdout
+ }
+ ::printf("\n"); // end of each line
+ }
+ \endcode
+
\see u8c_disp_row(int) for example use.
*/
Fl_Terminal::Utf8Char* Fl_Terminal::u8c_hist_use_row(int hurow)
@@ -1130,6 +1148,21 @@ Fl_Terminal::Utf8Char* Fl_Terminal::u8c_hist_use_row(int hurow)
::printf("<%.*s>", len, text); // print potentially multibyte char
}
\endcode
+
+ - This can also be used to walk all rows on the display screen up to the cursor row, e.g.
+ \code
+ // Write all chars in display up to cursor row to stdout
+ for (int row=0; row<disp_rows() && row<=cursor_row(); row++) {
+ const Utf8Char *u8c = u8c_disp_row(row); // first char in row
+ for (int col=0; col<=display_cols(); col++,u8c++) { // walk columns left-to-right
+ // ..Do things here with each u8c char..
+ ::printf("%.*s", u8c->text_utf8(), u8c->length()); // write each utf8 char to stdout
+ }
+ ::printf("\n");
+ }
+ \endcode
+
+ \see u8c_hist_use_row() for examples of walking the screen history
*/
Fl_Terminal::Utf8Char* Fl_Terminal::u8c_disp_row(int drow)
{ return const_cast<Utf8Char*>(const_cast<const Fl_Terminal*>(this)->u8c_disp_row(drow)); }
@@ -3925,7 +3958,7 @@ int Fl_Terminal::handle(int e) {
/**
Return a string copy of all lines in the terminal (including history).
- The returned string is allocated with strdup(3), which the caller must free.
+ The returned string is allocated with `strdup(3)`, which the caller must `free(3)`.
If \p 'lines_below_cursor' is false (default), lines below the cursor on down
to the bottom of the display are ignored, and not included in the returned string.