|
|
8535a3 |
|
|
|
8535a3 |
#include "private.h"
|
|
|
8535a3 |
|
|
|
8535a3 |
|
|
|
8535a3 |
cairo_t *heliCairo;
|
|
|
8535a3 |
|
|
|
8535a3 |
|
|
|
8535a3 |
int randomNumber(int min, int max)
|
|
|
8535a3 |
{ return max <= min ? min : rand()%(max - min + 1) + min; }
|
|
|
8535a3 |
|
|
|
8535a3 |
double randomFloat()
|
|
|
8535a3 |
{ return (double)rand()/(double)RAND_MAX; }
|
|
|
8535a3 |
|
|
|
8535a3 |
|
|
|
8535a3 |
char* heliStringCopy(const char *x) {
|
|
|
8535a3 |
int len = strlen(x) + 1;
|
|
|
8535a3 |
char *cp = malloc(len + 1);
|
|
|
8535a3 |
memcpy(cp, x, len);
|
|
|
8535a3 |
return cp;
|
|
|
8535a3 |
}
|
|
|
8535a3 |
|
|
|
8535a3 |
char* heliStringConcat3(const char *a, const char *b, const char *c) {
|
|
|
8535a3 |
int la = strlen(a);
|
|
|
8535a3 |
int lb = strlen(b);
|
|
|
8535a3 |
int lc = strlen(c);
|
|
|
8535a3 |
char *s = malloc(la + lb + lc + 1);
|
|
|
8535a3 |
memcpy(s, a, la);
|
|
|
8535a3 |
memcpy(s + la, b, lb);
|
|
|
8535a3 |
memcpy(s + la + lb, c, lc);
|
|
|
8535a3 |
s[la + lb + lc] = 0;
|
|
|
8535a3 |
return s;
|
|
|
8535a3 |
}
|
|
|
8535a3 |
|
|
|
8535a3 |
int heliStringEndsWithLowcase(const char *s, const char *tail) {
|
|
|
8535a3 |
int ls = strlen(s);
|
|
|
8535a3 |
int lt = strlen(tail);
|
|
|
8535a3 |
if (lt > ls) return FALSE;
|
|
|
8535a3 |
for(int i = 0; i < lt; ++i)
|
|
|
8535a3 |
if (tolower(s[ls - i]) != tolower(tail[lt - i]))
|
|
|
8535a3 |
return FALSE;
|
|
|
8535a3 |
return TRUE;
|
|
|
8535a3 |
}
|
|
|
8535a3 |
|
|
|
8535a3 |
void heliLowercase(char *x)
|
|
|
8535a3 |
{ while(*x) *x = tolower(*x); }
|
|
|
8535a3 |
|
|
|
8535a3 |
void heliParseColor(const char *x, double *color) {
|
|
|
07b70f |
#warning "TODO: heliParseColor: not implemented yet"
|
|
|
8535a3 |
}
|
|
|
8535a3 |
|