diff options
| author | Greg Ercolano <erco@seriss.com> | 2025-05-09 09:29:10 -0700 |
|---|---|---|
| committer | Greg Ercolano <erco@seriss.com> | 2025-05-09 09:29:10 -0700 |
| commit | f8a7e299b03365a5526f787f7e5504cd09ec83e0 (patch) | |
| tree | 5fccf24994011508f0220a64f0b0dd07b13744c7 /src/Fl_Terminal.cxx | |
| parent | bca167d03afe0c86f3be7c260f2055dca3d1e29f (diff) | |
Fl_Terminal doc fixes, private->protected for utf8_char_at_*()
Diffstat (limited to 'src/Fl_Terminal.cxx')
| -rw-r--r-- | src/Fl_Terminal.cxx | 59 |
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. |
