projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
t/fio-verify-state: pretty up output a bit
[fio.git]
/
tickmarks.c
diff --git
a/tickmarks.c
b/tickmarks.c
index 2605f721f0089de5567f0a1195d6d27e0cc71095..808de676e758120ca6531f9d1328871ef4d9b402 100644
(file)
--- a/
tickmarks.c
+++ b/
tickmarks.c
@@
-3,7
+3,7
@@
#include <malloc.h>
#include <string.h>
#include <malloc.h>
#include <string.h>
-/*
+/*
* adapted from Paul Heckbert's algorithm on p 657-659 of
* Andrew S. Glassner's book, "Graphics Gems"
* ISBN 0-12-286166-3
* adapted from Paul Heckbert's algorithm on p 657-659 of
* Andrew S. Glassner's book, "Graphics Gems"
* ISBN 0-12-286166-3
@@
-40,11
+40,11
@@
static double nicenum(double x, int round)
}
static void shorten(struct tickmark *tm, int nticks, int *power_of_ten,
}
static void shorten(struct tickmark *tm, int nticks, int *power_of_ten,
- int use_KMG_symbols)
+ int use_KMG_symbols
, int base_offset
)
{
{
- int i, l, minshorten;
+ const char shorten_chr[] = { 0, 'K', 'M', 'G', 'P', 'E', 0 };
+ int i, l, minshorten, shorten_idx = 0;
char *str;
char *str;
- char shorten_char = '?';
minshorten = 100;
for (i = 0; i < nticks; i++) {
minshorten = 100;
for (i = 0; i < nticks; i++) {
@@
-55,14
+55,14
@@
static void shorten(struct tickmark *tm, int nticks, int *power_of_ten,
continue;
if (l > 9 && strcmp(&str[l - 9], "000000000") == 0) {
*power_of_ten = 9;
continue;
if (l > 9 && strcmp(&str[l - 9], "000000000") == 0) {
*power_of_ten = 9;
- shorten_
char = use_KMG_symbols ? 'G' : '\0'
;
+ shorten_
idx = 3
;
} else if (6 < minshorten && l > 6 &&
strcmp(&str[l - 6], "000000") == 0) {
*power_of_ten = 6;
} else if (6 < minshorten && l > 6 &&
strcmp(&str[l - 6], "000000") == 0) {
*power_of_ten = 6;
- shorten_
char = use_KMG_symbols ? 'M' : '\0'
;
+ shorten_
idx = 2
;
} else if (l > 3 && strcmp(&str[l - 3], "000") == 0) {
*power_of_ten = 3;
} else if (l > 3 && strcmp(&str[l - 3], "000") == 0) {
*power_of_ten = 3;
- shorten_
char = use_KMG_symbols ? 'K': '\0'
;
+ shorten_
idx = 1
;
} else {
*power_of_ten = 0;
}
} else {
*power_of_ten = 0;
}
@@
-73,17
+73,22
@@
static void shorten(struct tickmark *tm, int nticks, int *power_of_ten,
if (minshorten == 0)
return;
if (minshorten == 0)
return;
+ if (!use_KMG_symbols)
+ shorten_idx = 0;
+ else if (base_offset)
+ shorten_idx += base_offset;
for (i = 0; i < nticks; i++) {
str = tm[i].string;
l = strlen(str);
for (i = 0; i < nticks; i++) {
str = tm[i].string;
l = strlen(str);
- str[l - minshorten] = shorten_char;
- str[l - minshorten + 1] = '\0';
+ str[l - minshorten] = shorten_chr[shorten_idx];
+ if (shorten_idx)
+ str[l - minshorten + 1] = '\0';
}
}
int calc_tickmarks(double min, double max, int nticks, struct tickmark **tm,
}
}
int calc_tickmarks(double min, double max, int nticks, struct tickmark **tm,
- int *power_of_ten, int use_KMG_symbols)
+ int *power_of_ten, int use_KMG_symbols
, int base_offset
)
{
char str[100];
int nfrac;
{
char str[100];
int nfrac;
@@
-109,7
+114,7
@@
int calc_tickmarks(double min, double max, int nticks, struct tickmark **tm,
sprintf((*tm)[i].string, str, x);
i++;
}
sprintf((*tm)[i].string, str, x);
i++;
}
- shorten(*tm, i, power_of_ten, use_KMG_symbols);
+ shorten(*tm, i, power_of_ten, use_KMG_symbols
, base_offset
);
return i;
}
return i;
}
@@
-123,20
+128,20
@@
static void test_range(double x, double y)
printf("Testing range %g - %g\n", x, y);
nticks = calc_tickmarks(x, y, 10, &tm);
printf("Testing range %g - %g\n", x, y);
nticks = calc_tickmarks(x, y, 10, &tm);
- for (i = 0; i < nticks; i++)
{
+ for (i = 0; i < nticks; i++)
printf(" (%s) %g\n", tm[i].string, tm[i].value);
printf(" (%s) %g\n", tm[i].string, tm[i].value);
- }
+
printf("\n\n");
free(tm);
}
int main(int argc, char *argv[])
{
printf("\n\n");
free(tm);
}
int main(int argc, char *argv[])
{
- test_range(0.0005, 0.008);
- test_range(0.5, 0.8);
- test_range(5.5, 8.8);
- test_range(50.5, 80.8);
- test_range(-20, 20.8);
- test_range(-30, 700.8);
+ test_range(0.0005, 0.008);
+ test_range(0.5, 0.8);
+ test_range(5.5, 8.8);
+ test_range(50.5, 80.8);
+ test_range(-20, 20.8);
+ test_range(-30, 700.8);
}
#endif
}
#endif