You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
1.9 KiB
85 lines
1.9 KiB
#include "output/terminal_bcircle.h" |
|
|
|
#include <curses.h> |
|
#include <locale.h> |
|
#include <math.h> |
|
#include <stdio.h> |
|
#include <stdlib.h> |
|
#include <wchar.h> |
|
|
|
#ifndef M_PI |
|
#define M_PI 3.141592 |
|
#endif |
|
#define DEGTORAD(deg) (deg * (180.0f / M_PI)) |
|
#define DOT 0x2588 |
|
|
|
int init_terminal_bcircle(int col, int bgcol) { |
|
|
|
initscr(); |
|
curs_set(0); |
|
timeout(0); |
|
noecho(); |
|
start_color(); |
|
use_default_colors(); |
|
init_pair(1, col, bgcol); |
|
if (bgcol != -1) |
|
bkgd(COLOR_PAIR(1)); |
|
attron(COLOR_PAIR(1)); |
|
// attron(A_BOLD); |
|
return 0; |
|
} |
|
|
|
void get_terminal_dim_bcircle(int *w, int *h) { |
|
|
|
getmaxyx(stdscr, *h, *w); |
|
clear(); // clearing in case of resieze |
|
} |
|
|
|
int draw_terminal_bcircle(int tty, int h, int w, int f[200]) { |
|
|
|
const wchar_t *bars[] = {L"\u2581", L"\u2582", L"\u2583", L"\u2584", |
|
L"\u2585", L"\u2586", L"\u2587", L"\u2588"}; |
|
|
|
// output: check if terminal has been resized |
|
if (!tty) { |
|
if (LINES != h || COLS != w) { |
|
return -1; |
|
} |
|
} |
|
|
|
float deg, width, height; |
|
int y, x; |
|
|
|
/* Convert to int */ |
|
width = f[1] / 10; |
|
height = f[1] / 15; |
|
|
|
int oy, ox; |
|
oy = LINES / 2 - height / 2; |
|
ox = COLS / 2 - width / 2; |
|
for (x = 0; x < COLS; x++) { |
|
for (y = 0; y < LINES; y++) { |
|
mvaddstr(y, x, " "); |
|
} |
|
} |
|
/* Draw circle */ |
|
for (deg = 0; deg < 360.0f; deg += 1.0f) { |
|
x = ox + width + (int)(width * cos(DEGTORAD(deg))); |
|
y = oy + height + (int)(height * sin(DEGTORAD(deg))); |
|
|
|
mvaddwstr(y, x, bars[7]); |
|
} |
|
|
|
refresh(); |
|
return 0; |
|
} |
|
|
|
// general: cleanup |
|
void cleanup_terminal_bcircle(void) { |
|
echo(); |
|
system("setfont >/dev/null 2>&1"); |
|
system("setfont /usr/share/consolefonts/Lat2-Fixed16.psf.gz >/dev/null 2>&1"); |
|
system("setterm -blank 10"); |
|
endwin(); |
|
system("clear"); |
|
}
|
|
|