Program Listing for File consoleSize.cpp#

Return to documentation for file (librapid/src/consoleSize.cpp)

#include <librapid/librapid.hpp>

#if defined(LIBRAPID_OSX)
#   include <unistd.h>
#   include <sys/ioctl.h>
#elif defined(LIBRAPID_LINUX)
#   include <unistd.h>
#   include <sys/ioctl.h>
#elif defined(LIBRAPID_WINDOWS)
#   include <windows.h>
#endif

namespace librapid {
    ConsoleSize consoleSize() {
#if defined(LIBRAPID_OSX)
        struct winsize w {};
        ioctl(STDOUT_FILENO, TIOCGWINSZ, &w);
        return {w.ws_row, w.ws_col};
#elif defined(LIBRAPID_LINUX)
        struct winsize w;
        ioctl(STDOUT_FILENO, TIOCGWINSZ, &w);
        return {w.ws_row, w.ws_col};
#elif defined(LIBRAPID_WINDOWS)
        CONSOLE_SCREEN_BUFFER_INFO csbi;
        GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
        return {csbi.srWindow.Bottom - csbi.srWindow.Top + 1,
                csbi.srWindow.Right - csbi.srWindow.Left + 1};
#else
        return {24, 80};
#endif
    }
} // namespace librapid