Files
Tart/source/term.c

45 lines
1.1 KiB
C

#include "term.h"
#include "../includes/tart.h"
// if windows is defined.
#if defined(_WIN64) || defined(_WIN32)
#include <Windows.h>
struct tart_vec2 term_current_size() {
struct tart_vec2 ret;
CONSOLE_SCREEN_BUFFER_INFO csbi;
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
unsigned int rows = (csbi.srWindow.Right - csbi.srWindow.Left + 1);
unsigned int cols = (csbi.srWindow.Bottom - csbi.srWindow.Top + 1);
unsigned short max_short = 0XFFFF;
if(rows < max_short && cols < max_short) {
ret = (struct tart_vec2){(unsigned short) rows ,(unsigned short) cols};
}
return ret;
}
#else
#include <sys/ioctl.h>
struct tart_vec2 term_current_size() {
struct tart_vec2 ret;
unsigned int rows = w.ws_row;
unsigned int cols = w.ws_col;
struct winsize w;
ioctl(STDOUT_FILENO, TIOCGWINSZ, &w);
unsigned short max_short = 0XFFFF;
if(rows < max_short && cols < max_short) {
ret = (struct tart_vec2){(unsigned short) rows ,(unsigned short) cols};
}
return ret;
}
#endif