public void eraseInLine(int arg) { myTerminalTextBuffer.lock(); try { switch (arg) { case 0: if (myCursorX < myTerminalWidth) { myTerminalTextBuffer.eraseCharacters(myCursorX, myTerminalWidth, myCursorY - 1); } // delete to the end of line : line is no more wrapped myTerminalTextBuffer.getLine(myCursorY - 1).setWrapped(false); break; case 1: final int extent = Math.min(myCursorX + 1, myTerminalWidth); myTerminalTextBuffer.eraseCharacters(0, extent, myCursorY - 1); break; case 2: myTerminalTextBuffer.eraseCharacters(0, myTerminalWidth, myCursorY - 1); break; default: LOG.error("Unsupported erase in line mode:" + arg); break; } } finally { myTerminalTextBuffer.unlock(); } }
@Override public void eraseInDisplay(final int arg) { myTerminalTextBuffer.lock(); try { int beginY; int endY; switch (arg) { case 0: // Initial line if (myCursorX < myTerminalWidth) { myTerminalTextBuffer.eraseCharacters(myCursorX, myTerminalWidth, myCursorY - 1); } // Rest beginY = myCursorY; endY = myTerminalHeight; break; case 1: // initial line myTerminalTextBuffer.eraseCharacters(0, myCursorX + 1, myCursorY - 1); beginY = 0; endY = myCursorY - 1; break; case 2: beginY = 0; endY = myTerminalHeight; break; default: LOG.error("Unsupported erase in display mode:" + arg); beginY = 1; endY = 1; break; } // Rest of lines if (beginY != endY) { clearLines(beginY, endY); } } finally { myTerminalTextBuffer.unlock(); } }
@Override public void eraseCharacters(int count) { // Clear the next n characters on the cursor's line, including the cursor's // position. myTerminalTextBuffer.lock(); try { final int extent = Math.min(count, myTerminalWidth - myCursorX); myTerminalTextBuffer.eraseCharacters(myCursorX, myCursorX + extent, myCursorY - 1); } finally { myTerminalTextBuffer.unlock(); } }