From 670f23f1698bb19ea2869e8f82198b2f9083ef88 Mon Sep 17 00:00:00 2001 From: Shreesh Adiga <16567adigashreesh@gmail.com> Date: Wed, 11 Nov 2020 15:30:08 +0530 Subject: [PATCH] osdep/terminal: Add function to get terminal pixel dimensions --- osdep/terminal-dummy.c | 4 ++++ osdep/terminal-unix.c | 13 +++++++++++++ osdep/terminal-win.c | 4 ++++ osdep/terminal.h | 3 +++ 4 files changed, 24 insertions(+) diff --git a/osdep/terminal-dummy.c b/osdep/terminal-dummy.c index 4a3787e0fa..4b33d786a8 100644 --- a/osdep/terminal-dummy.c +++ b/osdep/terminal-dummy.c @@ -21,6 +21,10 @@ void terminal_get_size(int *w, int *h) { } +void terminal_get_size2(int *rows, int *cols, int *px_width, int *px_height) +{ +} + void mp_write_console_ansi(void *wstream, char *buf) { } diff --git a/osdep/terminal-unix.c b/osdep/terminal-unix.c index 8e4d75f78b..78eb4c4618 100644 --- a/osdep/terminal-unix.c +++ b/osdep/terminal-unix.c @@ -493,6 +493,19 @@ void terminal_get_size(int *w, int *h) *h = ws.ws_row; } +void terminal_get_size2(int *rows, int *cols, int *px_width, int *px_height) +{ + struct winsize ws; + if (ioctl(tty_in, TIOCGWINSZ, &ws) < 0 || !ws.ws_row || !ws.ws_col + || !ws.ws_xpixel || !ws.ws_ypixel) + return; + + *rows = ws.ws_row; + *cols = ws.ws_col; + *px_width = ws.ws_xpixel; + *px_height = ws.ws_ypixel; +} + void terminal_init(void) { assert(!getch2_enabled); diff --git a/osdep/terminal-win.c b/osdep/terminal-win.c index 3672f3a763..dab3fabc80 100644 --- a/osdep/terminal-win.c +++ b/osdep/terminal-win.c @@ -106,6 +106,10 @@ void terminal_get_size(int *w, int *h) } } +void terminal_get_size2(int *rows, int *cols, int *px_width, int *px_height) +{ +} + static bool has_input_events(HANDLE h) { DWORD num_events; diff --git a/osdep/terminal.h b/osdep/terminal.h index ccf6a02c7c..db1e2a4dd2 100644 --- a/osdep/terminal.h +++ b/osdep/terminal.h @@ -40,6 +40,9 @@ bool terminal_in_background(void); /* Get terminal-size in columns/rows. */ void terminal_get_size(int *w, int *h); +/* Get terminal-size in columns/rows and width/height in pixels. */ +void terminal_get_size2(int *rows, int *cols, int *px_width, int *px_height); + // Windows only. void mp_write_console_ansi(void *wstream, char *buf);