(svn r16124) -Codechange: unify the three number drawing methods

This commit is contained in:
rubidium 2009-04-23 16:17:10 +00:00
parent 1f25d9126f
commit 8bf251f3ab

View File

@ -180,8 +180,7 @@ void InjectDParam(uint amount)
memmove(_decode_parameters + amount, _decode_parameters, sizeof(_decode_parameters) - amount * sizeof(uint64)); memmove(_decode_parameters + amount, _decode_parameters, sizeof(_decode_parameters) - amount * sizeof(uint64));
} }
/* TODO */ static char *FormatNumber(char *buff, int64 number, const char *last, const char *separator)
static char *FormatCommaNumber(char *buff, int64 number, const char *last)
{ {
uint64 divisor = 10000000000000000000ULL; uint64 divisor = 10000000000000000000ULL;
uint64 quot; uint64 quot;
@ -204,8 +203,8 @@ static char *FormatCommaNumber(char *buff, int64 number, const char *last)
num = num % divisor; num = num % divisor;
} }
if (tot |= quot || i == 19) { if (tot |= quot || i == 19) {
*buff++ = '0' + quot; buff += seprintf(buff, last, "%i", quot);
if ((i % 3) == 1 && i != 19) *buff++ = ','; if ((i % 3) == 1 && i != 19) buff = strecpy(buff, separator, last);
} }
divisor /= 10; divisor /= 10;
@ -216,39 +215,14 @@ static char *FormatCommaNumber(char *buff, int64 number, const char *last)
return buff; return buff;
} }
/* TODO */ static char *FormatCommaNumber(char *buff, int64 number, const char *last)
{
return FormatNumber(buff, number, last, ",");
}
static char *FormatNoCommaNumber(char *buff, int64 number, const char *last) static char *FormatNoCommaNumber(char *buff, int64 number, const char *last)
{ {
uint64 divisor = 10000000000000000000ULL; return FormatNumber(buff, number, last, "");
uint64 quot;
int i;
uint64 tot;
uint64 num;
if (number < 0) {
buff = strecpy(buff, "-", last);
number = -number;
}
num = number;
tot = 0;
for (i = 0; i < 20; i++) {
quot = 0;
if (num >= divisor) {
quot = num / divisor;
num = num % divisor;
}
if (tot |= quot || i == 19) {
*buff++ = '0' + quot;
}
divisor /= 10;
}
*buff = '\0';
return buff;
} }
static char *FormatHexNumber(char *buff, int64 number, const char *last) static char *FormatHexNumber(char *buff, int64 number, const char *last)
@ -332,9 +306,6 @@ static char *FormatGenericCurrency(char *buff, const CurrencySpec *spec, Money n
* keep this piece of data as we need it later on */ * keep this piece of data as we need it later on */
bool negative = number < 0; bool negative = number < 0;
const char *multiplier = ""; const char *multiplier = "";
char buf[40];
char *p;
int j;
number *= spec->rate; number *= spec->rate;
@ -362,19 +333,8 @@ static char *FormatGenericCurrency(char *buff, const CurrencySpec *spec, Money n
} }
} }
/* convert to ascii number and add commas */ char sep[2] = { spec->separator, '\0' };
p = endof(buf); buff = FormatNumber(buff, number, last, sep);
*--p = '\0';
j = 4;
do {
if (--j == 0) {
*--p = spec->separator;
j = 3;
}
*--p = '0' + (char)(number % 10);
} while ((number /= 10) != 0);
buff = strecpy(buff, p, last);
buff = strecpy(buff, multiplier, last); buff = strecpy(buff, multiplier, last);
/* Add suffix part, folowing symbol_pos specification. /* Add suffix part, folowing symbol_pos specification.