1 module riverd.ncurses.inline; 2 3 import riverd.ncurses.types; 4 5 version(RiverD_NCurses_Static) { 6 import riverd.ncurses.statfun; 7 alias nclear = riverd.ncurses.statfun.clear; 8 } else { 9 import riverd.ncurses.dynload; 10 alias nclear = riverd.ncurses.dynload.clear; 11 } 12 13 alias fixterm = reset_prog_mode; 14 alias resetterm = reset_shell_mode; 15 alias saveterm = def_prog_mode; 16 alias crmode = cbreak; 17 alias nocrmode = nocbreak; 18 19 alias vw_printw = vwprintw; 20 alias vw_scanw = vwscanw; 21 22 alias _tracech_t = _tracechtype; 23 alias _tracech_t2 = _tracechtype2; 24 25 extern (D) auto clear() 26 { 27 return wclear(stdscr); 28 } 29 30 extern (D) auto clrtobot() 31 { 32 return wclrtobot(stdscr); 33 } 34 35 extern (D) auto clrtoeol() 36 { 37 return wclrtoeol(stdscr); 38 } 39 40 extern (D) auto delch() 41 { 42 return wdelch(stdscr); 43 } 44 45 extern (D) auto deleteln() 46 { 47 return winsdelln(stdscr, -1); 48 } 49 50 51 extern (D) auto erase() 52 { 53 return werase(stdscr); 54 } 55 56 extern (D) auto getch() 57 { 58 return wgetch(stdscr); 59 } 60 61 extern (D) auto inch() 62 { 63 return winch(stdscr); 64 } 65 66 extern (D) auto insertln() 67 { 68 return winsdelln(stdscr, 1); 69 } 70 71 extern (D) auto scrl(T)(auto ref T n) 72 { 73 return wscrl(stdscr, n); 74 } 75 76 extern (D) auto refresh() 77 { 78 return wrefresh(stdscr); 79 } 80 81 extern (D) auto wstandout(T)(auto ref T win) 82 { 83 return wattrset(win, A_STANDOUT); 84 } 85 86 extern (D) auto wstandend(T)(auto ref T win) 87 { 88 return wattrset(win, A_NORMAL); 89 } 90 91 extern (D) auto standend() 92 { 93 return wstandend(stdscr); 94 } 95 96 extern (D) auto standout() 97 { 98 return wstandout(stdscr); 99 } 100 101 extern (D) auto wattron(T0, T1)(auto ref T0 win, auto ref T1 at) 102 { 103 return wattr_on(win, NCURSES_CAST!attr_t(at), null); 104 } 105 106 extern (D) auto wattroff(T0, T1)(auto ref T0 win, auto ref T1 at) 107 { 108 return wattr_off(win, NCURSES_CAST!attr_t(at), null); 109 } 110 111 extern (D) auto border(T0, T1, T2, T3, T4, T5, T6, T7)(auto ref T0 ls, auto ref T1 rs, auto ref T2 ts, auto ref T3 bs, auto ref T4 tl, auto ref T5 tr, auto ref T6 bl, auto ref T7 br) 112 { 113 return wborder(stdscr, ls, rs, ts, bs, tl, tr, bl, br); 114 } 115 116 /* 117 * X/Open says this returns a bool; SVr4 also checked for out-of-range line. 118 * The macro provides compatibility: 119 */ 120 extern (D) auto is_linetouched(T0, T1)(auto ref T0 w, auto ref T1 l) 121 { 122 return (!w || (l > getmaxy(w)) || (l < 0)) ? ERR : is_linetouched(w, l); 123 } 124 125 /* 126 * vid_attr() was implemented originally based on a draft of X/Open curses. 127 */ 128 extern (D) auto vid_attr(T0, T1, T2)(auto ref T0 a, auto ref T1 pair, auto ref T2 opts) 129 { 130 return vidattr(a); 131 } 132 133 /* 134 * Most of the pseudo functions are macros that either provide compatibility 135 * with older versions of curses, or provide inline functionality to improve 136 * performance. 137 */ 138 139 /* 140 * These pseudo functions are always implemented as macros: 141 */ 142 143 /* 144 * These miscellaneous pseudo functions are provided for compatibility: 145 */ 146 147 extern (D) auto wgetstr(T0, T1)(auto ref T0 w, auto ref T1 s) 148 { 149 return wgetnstr(w, s, -1); 150 } 151 152 extern (D) auto getnstr(T0, T1)(auto ref T0 s, auto ref T1 n) 153 { 154 return wgetnstr(stdscr, s, n); 155 } 156 157 extern (D) auto setterm(T)(auto ref T term) 158 { 159 return setupterm(term, 1, cast(int*) 0); 160 } 161 162 extern (D) auto scroll(T)(auto ref T win) 163 { 164 return wscrl(win, 1); 165 } 166 167 extern (D) auto touchwin(T)(auto ref T win) 168 { 169 return wtouchln(win, 0, getmaxy(win), 1); 170 } 171 172 extern (D) auto touchline(T0, T1, T2)(auto ref T0 win, auto ref T1 s, auto ref T2 c) 173 { 174 return wtouchln(win, s, c, 1); 175 } 176 177 extern (D) auto untouchwin(T)(auto ref T win) 178 { 179 return wtouchln(win, 0, getmaxy(win), 0); 180 } 181 182 extern (D) auto box(T0, T1, T2)(auto ref T0 win, auto ref T1 v, auto ref T2 h) 183 { 184 return wborder(win, v, v, h, h, 0, 0, 0, 0); 185 } 186 187 extern (D) auto border(T0, T1, T2, T3, T4, T5, T6, T7)(auto ref T0 ls, auto ref T1 rs, auto ref T2 ts, auto ref T3 bs, auto ref T4 tl, auto ref T5 tr, auto ref T6 bl, auto ref T7 br) 188 { 189 return wborder(stdscr, ls, rs, ts, bs, tl, tr, bl, br); 190 } 191 192 extern (D) auto hline(T0, T1)(auto ref T0 ch, auto ref T1 n) 193 { 194 return whline(stdscr, ch, n); 195 } 196 197 extern (D) auto vline(T0, T1)(auto ref T0 ch, auto ref T1 n) 198 { 199 return wvline(stdscr, ch, n); 200 } 201 202 extern (D) auto winstr(T0, T1)(auto ref T0 w, auto ref T1 s) 203 { 204 return winnstr(w, s, -1); 205 } 206 207 extern (D) auto winchstr(T0, T1)(auto ref T0 w, auto ref T1 s) 208 { 209 return winchnstr(w, s, -1); 210 } 211 212 extern (D) auto winsstr(T0, T1)(auto ref T0 w, auto ref T1 s) 213 { 214 return winsnstr(w, s, -1); 215 } 216 217 extern (D) auto redrawwin(T)(auto ref T win) 218 { 219 return wredrawln(win, 0, NCURSES_OK_ADDR(win) ? win._maxy + 1 : -1); 220 } 221 222 /* NCURSES_OPAQUE */ 223 224 extern (D) auto waddstr(T0, T1)(auto ref T0 win, auto ref T1 str) 225 { 226 return waddnstr(win, str, -1); 227 } 228 229 extern (D) auto waddchstr(T0, T1)(auto ref T0 win, auto ref T1 str) 230 { 231 return waddchnstr(win, str, -1); 232 } 233 234 /* 235 * pseudo functions for standard screen 236 */ 237 238 extern (D) auto addch(T)(auto ref T ch) 239 { 240 return waddch(stdscr, ch); 241 } 242 243 extern (D) auto addchnstr(T0, T1)(auto ref T0 str, auto ref T1 n) 244 { 245 return waddchnstr(stdscr, str, n); 246 } 247 248 extern (D) auto addchstr(T)(auto ref T str) 249 { 250 return waddchstr(stdscr, str); 251 } 252 253 extern (D) auto addnstr(T0, T1)(auto ref T0 str, auto ref T1 n) 254 { 255 return waddnstr(stdscr, str, n); 256 } 257 258 extern (D) auto addstr(T)(auto ref T str) 259 { 260 return waddnstr(stdscr, str, -1); 261 } 262 263 extern (D) auto attr_get(T0, T1, T2)(auto ref T0 ap, auto ref T1 cp, auto ref T2 o) 264 { 265 return wattr_get(stdscr, ap, cp, o); 266 } 267 268 extern (D) auto attr_off(T0, T1)(auto ref T0 a, auto ref T1 o) 269 { 270 return wattr_off(stdscr, a, o); 271 } 272 273 extern (D) auto attr_on(T0, T1)(auto ref T0 a, auto ref T1 o) 274 { 275 return wattr_on(stdscr, a, o); 276 } 277 278 extern (D) auto attr_set(T0, T1, T2)(auto ref T0 a, auto ref T1 c, auto ref T2 o) 279 { 280 return wattr_set(stdscr, a, c, o); 281 } 282 283 extern (D) auto attroff(T)(auto ref T at) 284 { 285 return wattroff(stdscr, at); 286 } 287 288 extern (D) auto attron(T)(auto ref T at) 289 { 290 return wattron(stdscr, at); 291 } 292 293 extern (D) auto attrset(T)(auto ref T at) 294 { 295 return wattrset(stdscr, at); 296 } 297 298 extern (D) auto bkgd(T)(auto ref T ch) 299 { 300 return wbkgd(stdscr, ch); 301 } 302 303 extern (D) auto bkgdset(T)(auto ref T ch) 304 { 305 return wbkgdset(stdscr, ch); 306 } 307 308 extern (D) auto chgat(T0, T1, T2, T3)(auto ref T0 n, auto ref T1 a, auto ref T2 c, auto ref T3 o) 309 { 310 return wchgat(stdscr, n, a, c, o); 311 } 312 313 extern (D) auto color_set(T0, T1)(auto ref T0 c, auto ref T1 o) 314 { 315 return wcolor_set(stdscr, c, o); 316 } 317 318 extern (D) auto echochar(T)(auto ref T c) 319 { 320 return wechochar(stdscr, c); 321 } 322 323 extern (D) auto getstr(T)(auto ref T str) 324 { 325 return wgetstr(stdscr, str); 326 } 327 328 extern (D) auto inchnstr(T0, T1)(auto ref T0 s, auto ref T1 n) 329 { 330 return winchnstr(stdscr, s, n); 331 } 332 333 extern (D) auto inchstr(T)(auto ref T s) 334 { 335 return winchstr(stdscr, s); 336 } 337 338 extern (D) auto innstr(T0, T1)(auto ref T0 s, auto ref T1 n) 339 { 340 return winnstr(stdscr, s, n); 341 } 342 343 extern (D) auto insch(T)(auto ref T c) 344 { 345 return winsch(stdscr, c); 346 } 347 348 extern (D) auto insdelln(T)(auto ref T n) 349 { 350 return winsdelln(stdscr, n); 351 } 352 353 extern (D) auto insnstr(T0, T1)(auto ref T0 s, auto ref T1 n) 354 { 355 return winsnstr(stdscr, s, n); 356 } 357 358 extern (D) auto insstr(T)(auto ref T s) 359 { 360 return winsstr(stdscr, s); 361 } 362 363 extern (D) auto instr(T)(auto ref T s) 364 { 365 return winstr(stdscr, s); 366 } 367 368 extern (D) auto move(T0, T1)(auto ref T0 y, auto ref T1 x) 369 { 370 return wmove(stdscr, y, x); 371 } 372 373 extern (D) auto setscrreg(T0, T1)(auto ref T0 t, auto ref T1 b) 374 { 375 return wsetscrreg(stdscr, t, b); 376 } 377 378 extern (D) auto timeout(T)(auto ref T delay) 379 { 380 return wtimeout(stdscr, delay); 381 } 382 383 extern (D) auto wdeleteln(T)(auto ref T win) 384 { 385 return winsdelln(win, -1); 386 } 387 388 extern (D) auto winsertln(T)(auto ref T win) 389 { 390 return winsdelln(win, 1); 391 } 392 393 /* 394 * mv functions 395 */ 396 397 extern (D) auto mvwaddch(T0, T1, T2, T3)(auto ref T0 win, auto ref T1 y, auto ref T2 x, auto ref T3 ch) 398 { 399 return wmove(win, y, x) == ERR ? ERR : waddch(win, ch); 400 } 401 402 extern (D) auto mvwaddchnstr(T0, T1, T2, T3, T4)(auto ref T0 win, auto ref T1 y, auto ref T2 x, auto ref T3 str, auto ref T4 n) 403 { 404 return wmove(win, y, x) == ERR ? ERR : waddchnstr(win, str, n); 405 } 406 407 extern (D) auto mvwaddchstr(T0, T1, T2, T3)(auto ref T0 win, auto ref T1 y, auto ref T2 x, auto ref T3 str) 408 { 409 return wmove(win, y, x) == ERR ? ERR : waddchnstr(win, str, -1); 410 } 411 412 extern (D) auto mvwaddnstr(T0, T1, T2, T3, T4)(auto ref T0 win, auto ref T1 y, auto ref T2 x, auto ref T3 str, auto ref T4 n) 413 { 414 return wmove(win, y, x) == ERR ? ERR : waddnstr(win, str, n); 415 } 416 417 extern (D) auto mvwaddstr(T0, T1, T2, T3)(auto ref T0 win, auto ref T1 y, auto ref T2 x, auto ref T3 str) 418 { 419 return wmove(win, y, x) == ERR ? ERR : waddnstr(win, str, -1); 420 } 421 422 extern (D) auto mvwchgat(T0, T1, T2, T3, T4, T5, T6)(auto ref T0 win, auto ref T1 y, auto ref T2 x, auto ref T3 n, auto ref T4 a, auto ref T5 c, auto ref T6 o) 423 { 424 return wmove(win, y, x) == ERR ? ERR : wchgat(win, n, a, c, o); 425 } 426 427 extern (D) auto mvwdelch(T0, T1, T2)(auto ref T0 win, auto ref T1 y, auto ref T2 x) 428 { 429 return wmove(win, y, x) == ERR ? ERR : wdelch(win); 430 } 431 432 extern (D) auto mvwgetch(T0, T1, T2)(auto ref T0 win, auto ref T1 y, auto ref T2 x) 433 { 434 return wmove(win, y, x) == ERR ? ERR : wgetch(win); 435 } 436 437 extern (D) auto mvwgetnstr(T0, T1, T2, T3, T4)(auto ref T0 win, auto ref T1 y, auto ref T2 x, auto ref T3 str, auto ref T4 n) 438 { 439 return wmove(win, y, x) == ERR ? ERR : wgetnstr(win, str, n); 440 } 441 442 extern (D) auto mvwgetstr(T0, T1, T2, T3)(auto ref T0 win, auto ref T1 y, auto ref T2 x, auto ref T3 str) 443 { 444 return wmove(win, y, x) == ERR ? ERR : wgetstr(win, str); 445 } 446 447 extern (D) auto mvwhline(T0, T1, T2, T3, T4)(auto ref T0 win, auto ref T1 y, auto ref T2 x, auto ref T3 c, auto ref T4 n) 448 { 449 return wmove(win, y, x) == ERR ? ERR : whline(win, c, n); 450 } 451 452 extern (D) auto mvwinch(T0, T1, T2)(auto ref T0 win, auto ref T1 y, auto ref T2 x) 453 { 454 return wmove(win, y, x) == ERR ? NCURSES_CAST!chtype(ERR) : winch(win); 455 } 456 457 extern (D) auto mvwinchnstr(T0, T1, T2, T3, T4)(auto ref T0 win, auto ref T1 y, auto ref T2 x, auto ref T3 s, auto ref T4 n) 458 { 459 return wmove(win, y, x) == ERR ? ERR : winchnstr(win, s, n); 460 } 461 462 extern (D) auto mvwinchstr(T0, T1, T2, T3)(auto ref T0 win, auto ref T1 y, auto ref T2 x, auto ref T3 s) 463 { 464 return wmove(win, y, x) == ERR ? ERR : winchstr(win, s); 465 } 466 467 extern (D) auto mvwinnstr(T0, T1, T2, T3, T4)(auto ref T0 win, auto ref T1 y, auto ref T2 x, auto ref T3 s, auto ref T4 n) 468 { 469 return wmove(win, y, x) == ERR ? ERR : winnstr(win, s, n); 470 } 471 472 extern (D) auto mvwinsch(T0, T1, T2, T3)(auto ref T0 win, auto ref T1 y, auto ref T2 x, auto ref T3 c) 473 { 474 return wmove(win, y, x) == ERR ? ERR : winsch(win, c); 475 } 476 477 extern (D) auto mvwinsnstr(T0, T1, T2, T3, T4)(auto ref T0 win, auto ref T1 y, auto ref T2 x, auto ref T3 s, auto ref T4 n) 478 { 479 return wmove(win, y, x) == ERR ? ERR : winsnstr(win, s, n); 480 } 481 482 extern (D) auto mvwinsstr(T0, T1, T2, T3)(auto ref T0 win, auto ref T1 y, auto ref T2 x, auto ref T3 s) 483 { 484 return wmove(win, y, x) == ERR ? ERR : winsstr(win, s); 485 } 486 487 extern (D) auto mvwinstr(T0, T1, T2, T3)(auto ref T0 win, auto ref T1 y, auto ref T2 x, auto ref T3 s) 488 { 489 return wmove(win, y, x) == ERR ? ERR : winstr(win, s); 490 } 491 492 extern (D) auto mvwvline(T0, T1, T2, T3, T4)(auto ref T0 win, auto ref T1 y, auto ref T2 x, auto ref T3 c, auto ref T4 n) 493 { 494 return wmove(win, y, x) == ERR ? ERR : wvline(win, c, n); 495 } 496 497 extern (D) auto mvaddch(T0, T1, T2)(auto ref T0 y, auto ref T1 x, auto ref T2 ch) 498 { 499 return mvwaddch(stdscr, y, x, ch); 500 } 501 502 extern (D) auto mvaddchnstr(T0, T1, T2, T3)(auto ref T0 y, auto ref T1 x, auto ref T2 str, auto ref T3 n) 503 { 504 return mvwaddchnstr(stdscr, y, x, str, n); 505 } 506 507 extern (D) auto mvaddchstr(T0, T1, T2)(auto ref T0 y, auto ref T1 x, auto ref T2 str) 508 { 509 return mvwaddchstr(stdscr, y, x, str); 510 } 511 512 extern (D) auto mvaddnstr(T0, T1, T2, T3)(auto ref T0 y, auto ref T1 x, auto ref T2 str, auto ref T3 n) 513 { 514 return mvwaddnstr(stdscr, y, x, str, n); 515 } 516 517 extern (D) auto mvaddstr(T0, T1, T2)(auto ref T0 y, auto ref T1 x, auto ref T2 str) 518 { 519 return mvwaddstr(stdscr, y, x, str); 520 } 521 522 extern (D) auto mvchgat(T0, T1, T2, T3, T4, T5)(auto ref T0 y, auto ref T1 x, auto ref T2 n, auto ref T3 a, auto ref T4 c, auto ref T5 o) 523 { 524 return mvwchgat(stdscr, y, x, n, a, c, o); 525 } 526 527 extern (D) auto mvdelch(T0, T1)(auto ref T0 y, auto ref T1 x) 528 { 529 return mvwdelch(stdscr, y, x); 530 } 531 532 extern (D) auto mvgetch(T0, T1)(auto ref T0 y, auto ref T1 x) 533 { 534 return mvwgetch(stdscr, y, x); 535 } 536 537 extern (D) auto mvgetnstr(T0, T1, T2, T3)(auto ref T0 y, auto ref T1 x, auto ref T2 str, auto ref T3 n) 538 { 539 return mvwgetnstr(stdscr, y, x, str, n); 540 } 541 542 extern (D) auto mvgetstr(T0, T1, T2)(auto ref T0 y, auto ref T1 x, auto ref T2 str) 543 { 544 return mvwgetstr(stdscr, y, x, str); 545 } 546 547 extern (D) auto mvhline(T0, T1, T2, T3)(auto ref T0 y, auto ref T1 x, auto ref T2 c, auto ref T3 n) 548 { 549 return mvwhline(stdscr, y, x, c, n); 550 } 551 552 extern (D) auto mvinch(T0, T1)(auto ref T0 y, auto ref T1 x) 553 { 554 return mvwinch(stdscr, y, x); 555 } 556 557 extern (D) auto mvinchnstr(T0, T1, T2, T3)(auto ref T0 y, auto ref T1 x, auto ref T2 s, auto ref T3 n) 558 { 559 return mvwinchnstr(stdscr, y, x, s, n); 560 } 561 562 extern (D) auto mvinchstr(T0, T1, T2)(auto ref T0 y, auto ref T1 x, auto ref T2 s) 563 { 564 return mvwinchstr(stdscr, y, x, s); 565 } 566 567 extern (D) auto mvinnstr(T0, T1, T2, T3)(auto ref T0 y, auto ref T1 x, auto ref T2 s, auto ref T3 n) 568 { 569 return mvwinnstr(stdscr, y, x, s, n); 570 } 571 572 extern (D) auto mvinsch(T0, T1, T2)(auto ref T0 y, auto ref T1 x, auto ref T2 c) 573 { 574 return mvwinsch(stdscr, y, x, c); 575 } 576 577 extern (D) auto mvinsnstr(T0, T1, T2, T3)(auto ref T0 y, auto ref T1 x, auto ref T2 s, auto ref T3 n) 578 { 579 return mvwinsnstr(stdscr, y, x, s, n); 580 } 581 582 extern (D) auto mvinsstr(T0, T1, T2)(auto ref T0 y, auto ref T1 x, auto ref T2 s) 583 { 584 return mvwinsstr(stdscr, y, x, s); 585 } 586 587 extern (D) auto mvinstr(T0, T1, T2)(auto ref T0 y, auto ref T1 x, auto ref T2 s) 588 { 589 return mvwinstr(stdscr, y, x, s); 590 } 591 592 extern (D) auto mvvline(T0, T1, T2, T3)(auto ref T0 y, auto ref T1 x, auto ref T2 c, auto ref T3 n) 593 { 594 return mvwvline(stdscr, y, x, c, n); 595 } 596 597 /* NCURSES_OPAQUE */ 598 599 extern (D) auto slk_attr_off(T0, T1)(auto ref T0 a, auto ref T1 v) 600 { 601 return v ? ERR : slk_attroff(a); 602 } 603 604 extern (D) auto slk_attr_on(T0, T1)(auto ref T0 a, auto ref T1 v) 605 { 606 return v ? ERR : slk_attron(a); 607 } 608 609 extern (D) auto mouse_trafo(T0, T1, T2)(auto ref T0 y, auto ref T1 x, auto ref T2 to_screen) 610 { 611 return wmouse_trafo(stdscr, y, x, to_screen); 612 } 613 614 extern (D) void getyx(U:WINDOW*, T: int)(U win, ref T y, ref T x) 615 { 616 y = getcury(win); 617 x = getcurx(win); 618 } 619 620 extern (D) void getparyx(U:WINDOW*, T: int)(U win, ref T y, ref T x) 621 { 622 y = getpary(win); 623 x = getparx(win); 624 } 625 extern (D) void getmaxyx(U:WINDOW*, T: int)(U win, ref T y, ref T x) 626 { 627 y = getmaxy(win); 628 x = getmaxx(win); 629 } 630 extern (D) void getbegyx(U:WINDOW*, T: int)(U win, ref T y, ref T x) 631 { 632 y = getbegy(win); 633 x = getbegx(win); 634 }