Rename putchar() to plot_char() (#944)
Some old platforms (NetBSD, AIX) implement the common stdio "putchar()" function as a global macro which poisons the global namespace, preventing all C and C++ programs from using "putchar()" as a function or method. There was a long thread about this in fltk.coredev during the period Mar 25 2024 ~ Apr 4 2024, subject "RFC: Fl_Terminal::putchar() in public API" as to why we have no choice but to not use putchar() as a method name.
This commit is contained in:
parent
2f1b8fc726
commit
31170c4731
@ -144,7 +144,7 @@
|
|||||||
Single character output can be done with:
|
Single character output can be done with:
|
||||||
\par
|
\par
|
||||||
- print_char() to print a single ASCII/UTF-8 char at the cursor
|
- print_char() to print a single ASCII/UTF-8 char at the cursor
|
||||||
- putchar() to put single ASCII/UTF-8 char at an x,y position
|
- plot_char() to put single ASCII/UTF-8 char at an x,y position
|
||||||
\par
|
\par
|
||||||
|
|
||||||
\subsection Fl_Terminal_Attributes Text Attributes
|
\subsection Fl_Terminal_Attributes Text Attributes
|
||||||
@ -1017,8 +1017,8 @@ private:
|
|||||||
void utf8_cache_flush(void);
|
void utf8_cache_flush(void);
|
||||||
// API: Character display output
|
// API: Character display output
|
||||||
public:
|
public:
|
||||||
void putchar(const char *text, int len, int drow, int dcol);
|
void plot_char(const char *text, int len, int drow, int dcol);
|
||||||
void putchar(char c, int drow, int dcol);
|
void plot_char(char c, int drow, int dcol);
|
||||||
void print_char(const char *text, int len=-1);
|
void print_char(const char *text, int len=-1);
|
||||||
void print_char(char c);
|
void print_char(char c);
|
||||||
// API: String display output
|
// API: String display output
|
||||||
|
@ -1902,10 +1902,10 @@ void Fl_Terminal::clear_sod(void) {
|
|||||||
for (int drow=0; drow <= cursor_.row(); drow++)
|
for (int drow=0; drow <= cursor_.row(); drow++)
|
||||||
if (drow == cursor_.row())
|
if (drow == cursor_.row())
|
||||||
for (int dcol=0; dcol<=cursor_.col(); dcol++)
|
for (int dcol=0; dcol<=cursor_.col(); dcol++)
|
||||||
putchar(' ', drow, dcol);
|
plot_char(' ', drow, dcol);
|
||||||
else
|
else
|
||||||
for (int dcol=0; dcol<disp_cols(); dcol++)
|
for (int dcol=0; dcol<disp_cols(); dcol++)
|
||||||
putchar(' ', drow, dcol);
|
plot_char(' ', drow, dcol);
|
||||||
//TODO: Clear mouse selection?
|
//TODO: Clear mouse selection?
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1914,10 +1914,10 @@ void Fl_Terminal::clear_eod(void) {
|
|||||||
for (int drow=cursor_.row(); drow<disp_rows(); drow++)
|
for (int drow=cursor_.row(); drow<disp_rows(); drow++)
|
||||||
if (drow == cursor_.row())
|
if (drow == cursor_.row())
|
||||||
for (int dcol=cursor_.col(); dcol<disp_cols(); dcol++)
|
for (int dcol=cursor_.col(); dcol<disp_cols(); dcol++)
|
||||||
putchar(' ', drow, dcol);
|
plot_char(' ', drow, dcol);
|
||||||
else
|
else
|
||||||
for (int dcol=0; dcol<disp_cols(); dcol++)
|
for (int dcol=0; dcol<disp_cols(); dcol++)
|
||||||
putchar(' ', drow, dcol);
|
plot_char(' ', drow, dcol);
|
||||||
//TODO: Clear mouse selection?
|
//TODO: Clear mouse selection?
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2977,7 +2977,7 @@ const Fl_Terminal::Utf8Char* Fl_Terminal::utf8_char_at_glob(int grow, int gcol)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Print UTF-8 character \p text of length \p len at display position \p (drow,dcol).
|
Plot the UTF-8 character \p text of length \p len at display position \p (drow,dcol).
|
||||||
The character is displayed using the current text color/attributes.
|
The character is displayed using the current text color/attributes.
|
||||||
|
|
||||||
This is a very low level method.
|
This is a very low level method.
|
||||||
@ -2987,12 +2987,12 @@ const Fl_Terminal::Utf8Char* Fl_Terminal::utf8_char_at_glob(int grow, int gcol)
|
|||||||
- \p dcol must be in range 0..(display_columns()-1)
|
- \p dcol must be in range 0..(display_columns()-1)
|
||||||
|
|
||||||
- Does not trigger redraws
|
- Does not trigger redraws
|
||||||
- Does not handle ANSI or XTERM escape sequences
|
- Does not handle control codes, ANSI or XTERM escape sequences.
|
||||||
- Invalid UTF-8 chars show the error character (¿) depending on show_unknown(bool).
|
- Invalid UTF-8 chars show the error character (¿) depending on show_unknown(bool).
|
||||||
|
|
||||||
\see handle_unknown_char()
|
\see handle_unknown_char()
|
||||||
*/
|
*/
|
||||||
void Fl_Terminal::putchar(const char *text, int len, int drow, int dcol) {
|
void Fl_Terminal::plot_char(const char *text, int len, int drow, int dcol) {
|
||||||
Utf8Char *u8c = u8c_disp_row(drow) + dcol;
|
Utf8Char *u8c = u8c_disp_row(drow) + dcol;
|
||||||
// text_utf8() warns we must do invalid checks first
|
// text_utf8() warns we must do invalid checks first
|
||||||
if (!text || len<1 || len>u8c->max_utf8() || len!=fl_utf8len(*text))
|
if (!text || len<1 || len>u8c->max_utf8() || len!=fl_utf8len(*text))
|
||||||
@ -3001,7 +3001,7 @@ void Fl_Terminal::putchar(const char *text, int len, int drow, int dcol) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Print the ASCII character \p c at the terminal's display position \p (drow,dcol).
|
Plot the ASCII character \p c at the terminal's display position \p (drow,dcol).
|
||||||
|
|
||||||
The character MUST be printable (in range 0x20 - 0x7e), and is displayed
|
The character MUST be printable (in range 0x20 - 0x7e), and is displayed
|
||||||
using the current text color/attributes. Characters outside that range are either
|
using the current text color/attributes. Characters outside that range are either
|
||||||
@ -3018,7 +3018,7 @@ void Fl_Terminal::putchar(const char *text, int len, int drow, int dcol) {
|
|||||||
|
|
||||||
\see show_unknown(bool), handle_unknown_char(), is_printable()
|
\see show_unknown(bool), handle_unknown_char(), is_printable()
|
||||||
*/
|
*/
|
||||||
void Fl_Terminal::putchar(char c, int drow, int dcol) {
|
void Fl_Terminal::plot_char(char c, int drow, int dcol) {
|
||||||
if (!is_printable(c)) { handle_unknown_char(); return; }
|
if (!is_printable(c)) { handle_unknown_char(); return; }
|
||||||
Utf8Char *u8c = u8c_disp_row(drow) + dcol;
|
Utf8Char *u8c = u8c_disp_row(drow) + dcol;
|
||||||
u8c->text_ascii(c, *current_style_);
|
u8c->text_ascii(c, *current_style_);
|
||||||
@ -3053,7 +3053,7 @@ void Fl_Terminal::print_char(const char *text, int len/*=-1*/) {
|
|||||||
} else if (escseq.parse_in_progress()) { // ESC sequence in progress?
|
} else if (escseq.parse_in_progress()) { // ESC sequence in progress?
|
||||||
handle_escseq(*text);
|
handle_escseq(*text);
|
||||||
} else { // Handle printable char..
|
} else { // Handle printable char..
|
||||||
putchar(text, len, cursor_row(), cursor_col());
|
plot_char(text, len, cursor_row(), cursor_col());
|
||||||
cursor_right(1, do_scroll);
|
cursor_right(1, do_scroll);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3074,7 +3074,7 @@ void Fl_Terminal::print_char(char c) {
|
|||||||
} else if (escseq.parse_in_progress()) { // ESC sequence in progress?
|
} else if (escseq.parse_in_progress()) { // ESC sequence in progress?
|
||||||
handle_escseq(c);
|
handle_escseq(c);
|
||||||
} else { // Handle printable char..
|
} else { // Handle printable char..
|
||||||
putchar(c, cursor_row(), cursor_col());
|
plot_char(c, cursor_row(), cursor_col());
|
||||||
cursor_right(1, do_scroll);
|
cursor_right(1, do_scroll);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1282,7 +1282,7 @@ for (int i=0; i<50; i++ ) {
|
|||||||
for ( int col=0; col<cols; col++ ) {
|
for ( int col=0; col<cols; col++ ) {
|
||||||
char c = ' ' + (rand() % 0x50); // random ASCII characters
|
char c = ' ' + (rand() % 0x50); // random ASCII characters
|
||||||
G_tty->textfgcolor_xterm(rand() % 8); // random fg uchar color for each char
|
G_tty->textfgcolor_xterm(rand() % 8); // random fg uchar color for each char
|
||||||
G_tty->putchar(c, row, col);
|
G_tty->plot_char(c, row, col);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
G_tty->redraw();
|
G_tty->redraw();
|
||||||
|
Loading…
Reference in New Issue
Block a user