X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=common.h;h=0890ac4ef005d6ec3ccf6236fb0f117a80fc864f;hb=bceb3a28f8127fa27a17f480bd21fa20a340e848;hp=d0f4c078529f1b19baedaaaeb5580556ddedf97a;hpb=d00b1df8f80e4714dc2f9aa2189d242bb4d09a2f;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/common.h b/common.h index d0f4c07..0890ac4 100644 --- a/common.h +++ b/common.h @@ -5,11 +5,13 @@ #ifndef COMMON_H #define COMMON_H +#define VG_TIMESTEP_FIXED (1.0/60.0) #define VG_3D #define VG_FRAMEBUFFER_RESIZE 1 #include "vg/vg.h" +#include "anyascii/anyascii.h" -static float ktimestep = 1.0f/60.0f; +#define RESET_MAX_TIME 45.0 typedef struct ray_hit ray_hit; struct ray_hit @@ -21,4 +23,63 @@ struct ray_hit static int network_scores_updated = 0; +static u32 utf8_byte0_byte_count( u8 char0 ) +{ + for( u32 k=2; k<4; k++ ) + { + if( !(char0 & (0x80 >> k)) ) + return k; + } + + return 0; +} + +static void str_utf8_collapse( const char *str, char *buf, u32 length ) +{ + u8 *ustr = (u8 *)str; + u32 utf32_code = 0x00000000; + u32 i=0, j=0, utf32_byte_ct=0; + + for(;i < length-1;) + { + if( ustr[i] == 0x00 ) + break; + + if( ustr[i] & 0x80 ) + { + if( utf32_byte_ct ) + { + utf32_byte_ct --; + utf32_code |= (ustr[i] & 0x3F) << (utf32_byte_ct*6); + + if( !utf32_byte_ct ) + { + const char *match; + size_t chars = anyascii( utf32_code, &match ); + + for( u32 k=0; k> utf32_byte_ct); + utf32_code <<= utf32_byte_ct*6; + } + } + else + { + utf32_byte_ct = 0x00; + buf[j ++] = str[i]; + } + + i++; + } + + buf[j] = 0x00; +} + #endif /* COMMON_H */