forked from Qortal/Brooklyn
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.
34 lines
790 B
34 lines
790 B
#include <stdio.h> |
|
#include <limits.h> |
|
#include <string.h> |
|
#include <stdlib.h> |
|
#include "spark.h" |
|
#include "stat.h" |
|
|
|
#define SPARK_SHIFT 8 |
|
|
|
/* Print spark lines on outf for numval values in val. */ |
|
int print_spark(char *bf, int size, unsigned long *val, int numval) |
|
{ |
|
static const char *ticks[NUM_SPARKS] = { |
|
"▁", "▂", "▃", "▄", "▅", "▆", "▇", "█" |
|
}; |
|
int i, printed = 0; |
|
unsigned long min = ULONG_MAX, max = 0, f; |
|
|
|
for (i = 0; i < numval; i++) { |
|
if (val[i] < min) |
|
min = val[i]; |
|
if (val[i] > max) |
|
max = val[i]; |
|
} |
|
f = ((max - min) << SPARK_SHIFT) / (NUM_SPARKS - 1); |
|
if (f < 1) |
|
f = 1; |
|
for (i = 0; i < numval; i++) { |
|
printed += scnprintf(bf + printed, size - printed, "%s", |
|
ticks[((val[i] - min) << SPARK_SHIFT) / f]); |
|
} |
|
|
|
return printed; |
|
}
|
|
|