X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fgfxpoly%2Fspeedtest.c;fp=lib%2Fgfxpoly%2Fspeedtest.c;h=8f35a45971d646dce26bd4a7905628327a130a6f;hb=42bba07c1573e32b0cf504e76619fd1bd0eb3dcd;hp=0000000000000000000000000000000000000000;hpb=a9c3c32bc9ba2604d0bab6a7a2df530396b6d965;p=swftools.git diff --git a/lib/gfxpoly/speedtest.c b/lib/gfxpoly/speedtest.c new file mode 100644 index 0000000..8f35a45 --- /dev/null +++ b/lib/gfxpoly/speedtest.c @@ -0,0 +1,150 @@ +#include +#include +#include +#include +#include +#include "../gfxtools.h" +#include "poly.h" +#include "convert.h" +#include "renderpoly.h" +#include "stroke.h" + +#ifdef CHECKS +#error "speedtest must be compiled without CHECKS" +#endif + +#ifdef DEBUG +#error "speedtest must be compiled without DEBUG" +#endif + +gfxline_t* mkchessboard() +{ + gfxline_t*b = 0; + int x,y; + unsigned int r = 0; + int spacing = 20; + + int num_caros = 40; + int l = 5; + char do_centerpiece=1; + + //int num_caros = 4; + //int l=1; + //char do_centerpiece=0; + + for(x=-l;x<=l;x++) + for(y=-l;y<=l;y++) { + /* pseudo random */ + r = crc32_add_byte(r, x);r = crc32_add_byte(r, y); + if(r&1) { + gfxline_t*box; + if(r&2) { + box = gfxline_makerectangle(x*spacing,y*spacing,(x+1)*spacing,(y+1)*spacing); + } else { + box = gfxline_makerectangle((x+1)*spacing,y*spacing,x*spacing,(y+1)*spacing); + } + b = gfxline_append(b, box); + } + } + + int t; + for(t=0;t>4)%10-5)*spacing; + int sizex = ((r>>8)%4)*spacing; + int sizey = sizex; + if(r&65536) + sizex = -sizex; + gfxline_t*l = malloc(sizeof(gfxline_t)*5); + l[0].type = gfx_moveTo;l[0].next = &l[1]; + l[1].type = gfx_lineTo;l[1].next = &l[2]; + l[2].type = gfx_lineTo;l[2].next = &l[3]; + l[3].type = gfx_lineTo;l[3].next = &l[4]; + l[4].type = gfx_lineTo;l[4].next = 0; + l[0].x = x; + l[0].y = y-sizey; + l[1].x = x+sizex; + l[1].y = y; + l[2].x = x; + l[2].y = y+sizey; + l[3].x = x-sizex; + l[3].y = y; + l[4].x = x; + l[4].y = y-sizey; + gfxline_append(b, l); + } + if(do_centerpiece) { + for(t=0;t<5;t++) { + gfxline_t*l = gfxline_makerectangle(-9*spacing,-10,9*spacing,10); + gfxmatrix_t matrix; + memset(&matrix, 0, sizeof(gfxmatrix_t)); + double ua=t*0.43; + matrix.m00=cos(ua);matrix.m10=sin(ua); + matrix.m01=-sin(ua);matrix.m11=cos(ua); + gfxline_transform(l, &matrix); + gfxline_append(b, l); + } + gfxline_append(b, gfxline_makecircle(100,100,100,100)); + } + return b; +} + +gfxline_t* make_circles(gfxline_t*b, int n) +{ + unsigned int c = 0; + int t; + for(t=0;t