clearScreen method

void clearScreen()

Implementation

void clearScreen() {
  final Pointer<CONSOLE_SCREEN_BUFFER_INFO> pBufferInfo =
      calloc<CONSOLE_SCREEN_BUFFER_INFO>();
  final Pointer<Uint32> pCharsWritten = calloc<Uint32>();
  final Pointer<COORD> origin = calloc<COORD>();
  try {
    final CONSOLE_SCREEN_BUFFER_INFO bufferInfo = pBufferInfo.ref;
    GetConsoleScreenBufferInfo(outputHandle, pBufferInfo);

    final int consoleSize = bufferInfo.dwSize.X * bufferInfo.dwSize.Y;

    FillConsoleOutputCharacter(
      outputHandle,
      ' '.codeUnitAt(0),
      consoleSize,
      origin.ref,
      pCharsWritten,
    );

    GetConsoleScreenBufferInfo(outputHandle, pBufferInfo);

    FillConsoleOutputAttribute(
      outputHandle,
      bufferInfo.wAttributes,
      consoleSize,
      origin.ref,
      pCharsWritten,
    );

    SetConsoleCursorPosition(outputHandle, origin.ref);
  } finally {
    calloc.free(origin);
    calloc.free(pCharsWritten);
    calloc.free(pBufferInfo);
  }
}