X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=lib%2Fgfxpoly%2Ftest.c;h=46df1f5c50fe5f026b9db30e64e0586108d72705;hp=509f3eea41ace04d89b3d06c2c7034ce1cad0bc6;hb=879d0eec420fe0fd5ddcd56c8fe62b82a6744edd;hpb=37ae23b3b4f65f65313ca4648197bf2251211193 diff --git a/lib/gfxpoly/test.c b/lib/gfxpoly/test.c index 509f3ee..46df1f5 100644 --- a/lib/gfxpoly/test.c +++ b/lib/gfxpoly/test.c @@ -166,6 +166,27 @@ int test_speed() gfxline_free(b); } +int testbox(int argn, char*argv[]) +{ + gfxline_t*box1 = gfxline_makerectangle(-100,-100,100,100); + gfxline_t*box2 = gfxline_makerectangle(-50,-50,150,150); + gfxpoly_t*poly1 = gfxpoly_from_fill(box1, 0.05); + gfxpoly_t*poly2 = gfxpoly_from_fill(box2, 0.05); + gfxline_free(box1); + gfxline_free(box2); + + gfxpoly_t*poly12 = gfxpoly_process(poly1, poly2, &windrule_intersect, &twopolygons); + gfxpoly_dump(poly12); + assert(gfxpoly_check(poly12, 0)); + gfxpoly_destroy(poly12); +} + +int teststroke(int argn, char*argv[]) +{ + gfxline_t*box1 = gfxline_makerectangle(-100,-100,100,100); + assert(gfxpoly_check(gfxpoly_from_stroke(box1, 2.0, gfx_capRound, gfx_joinRound, 0, 0.05), 1)); +} + int test0(int argn, char*argv[]) { gfxline_t*box1 = gfxline_makerectangle(-100,-100,100,100); @@ -173,8 +194,6 @@ int test0(int argn, char*argv[]) gfxline_t*box3 = gfxline_makerectangle(-100,-100,100,100); //gfxline_append(box2, box3); - gfxpoly_check(gfxpoly_from_stroke(box1, 2.0, gfx_capRound, gfx_joinRound, 0, 0.05)); - gfxmatrix_t matrix; memset(&matrix, 0, sizeof(gfxmatrix_t)); double ua=M_PI/4; @@ -451,18 +470,19 @@ void test4(int argn, char*argv[]) double zoom = 1.0; - if(!gfxpoly_check(poly1)) { + if(!gfxpoly_check(poly1, 0)) { printf("bad polygon\n"); continue; } gfxpoly_t*poly2 = gfxpoly_process(poly1, 0, rule, &onepolygon); + assert(gfxpoly_check(poly2, 1)); int pass; for(pass=0;pass<2;pass++) { intbbox_t bbox = intbbox_from_polygon(poly1, zoom); unsigned char*bitmap1 = render_polygon(poly1, &bbox, zoom, rule, &onepolygon); - unsigned char*bitmap2 = render_polygon(poly2, &bbox, zoom, &windrule_evenodd, &onepolygon); + unsigned char*bitmap2 = render_polygon(poly2, &bbox, zoom, &windrule_circular, &onepolygon); if(!bitmap_ok(&bbox, bitmap1) || !bitmap_ok(&bbox, bitmap2)) { save_two_bitmaps(&bbox, bitmap1, bitmap2, "error.png"); assert(!"error in bitmaps"); @@ -473,7 +493,7 @@ void test4(int argn, char*argv[]) } free(bitmap1); free(bitmap2); - + // second pass renders the 90° rotated version rotate90(poly1); rotate90(poly2); @@ -519,7 +539,7 @@ void extract_polygons_fill(gfxdevice_t*dev, gfxline_t*line, gfxcolor_t*color) fprintf(stderr, "%d segments (max so far: %d/%d)\n", size, max_segments, max_any_segments); } - if(!gfxpoly_check(poly1)) { + if(!gfxpoly_check(poly1, 0)) { gfxpoly_destroy(poly1); fprintf(stderr, "bad polygon\n"); return; @@ -646,6 +666,6 @@ void test5(int argn, char*argv[]) int main(int argn, char*argv[]) { - test4(argn, argv); + teststroke(argn, argv); }