8ncplane_putline(
ncplane*
n,
ncalign_e align,
int cols,
const char* text,
size_t bytes){
9 const int avail = ncplane_dim_x(
n) -
n->x - 1;
11 notcurses_align(avail, align, cols));
12 return ncplane_putnstr_yx(
n, -1,
n->x + offset, bytes, text);
16puttext_advance_line(
ncplane*
n,
unsigned truebreak){
18 if(
n->scrolling ||
n->autogrow){
20 if(ncplane_putchar(
n,
'\n') < 1){
53 const int dimx = ncplane_dim_x(
n);
54 const int avail = dimx - cursx - 1;
58 int bytes_leading_break;
59 int cols_leading_break;
62 bytes_leading_ws = cols_leading_ws = 0;
63 bytes_leading_break = cols_leading_break = 0;
65 mbstate_t mbstate = {0};
67 const size_t consumed = mbrtowc(&w, text + b, MB_CUR_MAX, &mbstate);
68 if(consumed == (
size_t)-2 || consumed == (
size_t)-1){
69 logerror(
"invalid UTF-8 after %d bytes", b);
74 if(ncplane_putline(
n, align, cols, text, b) < 0){
86 if(ncplane_putline(
n, align, cols, text, b) < 0){
90 if(puttext_advance_line(
n,
true)){
94 *bytes += b + consumed;
99 int width = wcwidth(w);
105 if(cols > cols_leading_ws){
106 bytes_leading_break = b;
107 cols_leading_break = cols;
109 bytes_leading_ws = b;
110 cols_leading_ws = cols;
116 if(bytes_leading_break){
117 if(ncplane_putline(
n, align, cols, text, bytes_leading_break) < 0){
121 *bytes += bytes_leading_break;
123 colsreturn = cols_leading_break;
124 }
else if(bytes_leading_ws){
125 if(ncplane_putline(
n, align, cols, text, bytes_leading_ws) < 0){
129 *bytes += bytes_leading_ws;
131 colsreturn = cols_leading_ws;
132 }
else if(cols == dimx){
133 if(ncplane_putline(
n, align, cols, text, b) < 0){
142 if(puttext_advance_line(
n,
false)){
169 size_t linebytes = 0;
170 int cols = puttext_line(
n, align, text, &linebytes);
void scroll_down(ncplane *n)
int ncplane_puttext(ncplane *n, int y, ncalign_e align, const char *text, size_t *bytes)
#define logerror(fmt,...)
int ncplane_cursor_move_yx(ncplane *n, int y, int x)
void ncplane_cursor_yx(const ncplane *n, unsigned *y, unsigned *x)