12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #include <curses.h>
- #include "core.h"
- #include "cursor.h"
-
- /** @file
- *
- * MuCurses clearing functions
- *
- */
-
- /**
- * Clear a window to the bottom from current cursor position
- *
- * @v *win subject window
- * @ret rc return status code
- */
- int wclrtobot ( WINDOW *win ) {
- struct cursor_pos pos;
-
- _store_curs_pos( win, &pos );
- do {
- _wputch( win, (unsigned)' ', WRAP );
- } while ( win->curs_y + win->curs_x );
- _restore_curs_pos( win, &pos );
-
- return OK;
- }
-
- /**
- * Clear a window to the end of the current line
- *
- * @v *win subject window
- * @ret rc return status code
- */
- int wclrtoeol ( WINDOW *win ) {
- struct cursor_pos pos;
-
- _store_curs_pos( win, &pos );
- while ( ( win->curs_y - pos.y ) == 0 ) {
- _wputch( win, (unsigned)' ', WRAP );
- }
- _restore_curs_pos( win, &pos );
-
- return OK;
- }
-
- /**
- * Delete character under the cursor in a window
- *
- * @v *win subject window
- * @ret rc return status code
- */
- int wdelch ( WINDOW *win ) {
- _wputch( win, (unsigned)' ', NOWRAP );
- _wcursback( win );
-
- return OK;
- }
-
- /**
- * Delete line under a window's cursor
- *
- * @v *win subject window
- * @ret rc return status code
- */
- int wdeleteln ( WINDOW *win ) {
- struct cursor_pos pos;
-
- _store_curs_pos( win, &pos );
- /* let's just set the cursor to the beginning of the line and
- let wclrtoeol do the work :) */
- wmove( win, win->curs_y, 0 );
- wclrtoeol( win );
- _restore_curs_pos( win, &pos );
- return OK;
- }
-
- /**
- * Completely clear a window
- *
- * @v *win subject window
- * @ret rc return status code
- */
- int werase ( WINDOW *win ) {
- wmove( win, 0, 0 );
- wclrtobot( win );
- return OK;
- }
|