Compare commits

...

3 Commits

Author SHA1 Message Date
Jacopo De Simoi 0cee72fb61 Discretize gradient in ncurses output 6 years ago
Jacopo De Simoi f7a3d975e5 Add config variable gradient_discrete 6 years ago
Jacopo De Simoi 5035dfc7f6 Use bars in private unicode area 6 years ago
  1. 2
      cava.c
  2. 1
      config.c
  3. 2
      config.h
  4. 12
      output/terminal_ncurses.c
  5. 2
      output/terminal_ncurses.h

@ -542,7 +542,7 @@ as of 0.4.0 all options are specified in config file, see in '/home/username/.co
// output: start ncurses mode
case OUTPUT_NCURSES:
init_terminal_ncurses(p.color, p.bcolor, p.col, p.bgcol, p.gradient,
p.gradient_count, p.gradient_colors, &width, &lines);
p.gradient_count, p.gradient_colors, p.gradient_discrete, &width, &lines);
// we have 8 times as much height due to using 1/8 block characters
height = lines * 8;
break;

@ -357,6 +357,7 @@ bool load_colors(struct config_params *p, dictionary *ini, void *err) {
strdup(iniparser_getstring(ini, "color:gradient_color_7", "#cc5933"));
p->gradient_colors[7] =
strdup(iniparser_getstring(ini, "color:gradient_color_8", "#cc3333"));
p->gradient_discrete = iniparser_getint(ini, "color:gradient_discrete", 0);
}
return true;
}

@ -55,7 +55,7 @@ struct config_params {
enum input_method im;
enum output_method om;
int userEQ_keys, userEQ_enabled, col, bgcol, autobars, stereo, is_bin, ascii_range, bit_format,
gradient, gradient_count, fixedbars, framerate, bar_width, bar_spacing, autosens, overshoot,
gradient, gradient_count, gradient_discrete, fixedbars, framerate, bar_width, bar_spacing, autosens, overshoot,
waves, FFTbufferSize, fifoSample, fifoSampleBits;
};

@ -67,7 +67,7 @@ static NCURSES_COLOR_T change_color_definition(NCURSES_COLOR_T color_number,
void init_terminal_ncurses(char *const fg_color_string, char *const bg_color_string,
int predef_fg_color, int predef_bg_color, int gradient,
int gradient_count, char **gradient_colors, int *width, int *lines) {
int gradient_count, char **gradient_colors, int gradient_discrete, int *width, int *lines) {
initscr();
curs_set(0);
timeout(0);
@ -127,8 +127,10 @@ void init_terminal_ncurses(char *const fg_color_string, char *const bg_color_str
for (int j = 0; j < individual_size; j++) {
for (int k = 0; k < 3; k++) {
rgb[col + 1][k] = rgb[col][k] + (rgb[col + 2][k] - rgb[col][k]) *
(j / (individual_size * 0.85));
if (gradient_discrete)
rgb[col+1][k] = rgb[col][k];
else
rgb[col+1][k] = rgb[col][k] + (rgb[col+2][k] - rgb[col][k]) * (j / (individual_size * 0.85));
if (rgb[col + 1][k] > 255)
rgb[col][k] = 0;
if (j > individual_size * 0.85)
@ -191,8 +193,8 @@ int draw_terminal_ncurses(int is_tty, int terminal_height, int terminal_width, i
int bar_width, int bar_spacing, int rest, const int f[200],
int flastd[200], int gradient) {
const int height = terminal_height - 1;
const wchar_t *bar_heights[] = {L"\u2581", L"\u2582", L"\u2583", L"\u2584",
L"\u2585", L"\u2586", L"\u2587", L"\u2588"};
const wchar_t* bar_heights[] = {L"", L"\uE0B8", L"\uE0B9",
L"\uE0BA", L"\uE0BB", L"\uE0BC", L"\uE0BD", L"\uE0BE"};
int num_bar_heights = (sizeof(bar_heights) / sizeof(bar_heights[0]));
// output: check if terminal has been resized

@ -1,6 +1,6 @@
void init_terminal_ncurses(char *const fg_color_string, char *const bg_color_string,
int predef_fg_color, int predef_bg_color, int gradient,
int gradient_count, char **gradient_colors, int *width, int *height);
int gradient_count, char **gradient_colors, int gadient_discrete, int *width, int *height);
void get_terminal_dim_ncurses(int *width, int *height);
int draw_terminal_ncurses(int is_tty, int terminal_height, int terminal_width, int bars_count,
int bar_width, int bar_spacing, int rest, const int f[200],

Loading…
Cancel
Save