X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=lib%2Fgfxpoly%2Ftest.c;h=4e3c875cabc7b4ceb96e1c672298378f4dfcf5c0;hp=6a41566ebc5e74f4a72585bc614d5b6c451f8872;hb=336f6de943b8c0bbeb0f64b7e35dd9511147a20a;hpb=3513ae007a04da02f11cdca9f0d08ddda9eac245 diff --git a/lib/gfxpoly/test.c b/lib/gfxpoly/test.c index 6a41566..4e3c875 100644 --- a/lib/gfxpoly/test.c +++ b/lib/gfxpoly/test.c @@ -28,21 +28,17 @@ gfxline_t*mkstar(int x1, int y1, int x2, int y2) gfxline_t* mkrandomshape(int range, int n) { int i; - gfxline_t* line = malloc(sizeof(gfxline_t)*n*2); + gfxline_t* line = malloc(sizeof(gfxline_t)*n); for(i=0;i100000) { - printf("%d segments (skipping)\n", gfxpoly_size(poly)); + //gfxcompactpoly_t*c = gfxcompactpoly_from_gfxline(line, 0.05); + //gfxcompactpoly_free(c); + + gfxcompactpoly_t*poly = gfxcompactpoly_from_gfxline(line, 0.05); + + //gfxline_dump(line, stderr, ""); + //gfxcompactpoly_dump(poly); + + if(gfxcompactpoly_size(poly)>100000) { + fprintf(stderr, "%d segments (skipping)\n", gfxcompactpoly_size(poly)); return; } else { - printf("%d segments\n", gfxpoly_size(poly)); + //fprintf(stderr, "%d segments\n", gfxpoly_size(poly)); } - if(!gfxpoly_check(poly)) { - gfxpoly_destroy(poly); - printf("bad polygon\n"); + if(!gfxcompactpoly_check(poly)) { + gfxcompactpoly_destroy(poly); + fprintf(stderr, "bad polygon\n"); return; } windrule_t*rule = &windrule_evenodd; + + gfxpoly_t*poly1 = gfxpoly_from_gfxcompactpoly(poly); double zoom = 1.0; - intbbox_t bbox = intbbox_from_polygon(poly, zoom); - unsigned char*bitmap1 = render_polygon(poly, &bbox, zoom, rule, &onepolygon); + intbbox_t bbox = intbbox_from_polygon(poly1, zoom); + unsigned char*bitmap1 = render_polygon(poly1, &bbox, zoom, rule, &onepolygon); if(!bitmap_ok(&bbox, bitmap1)) { - printf("bad polygon or error in renderer\n"); + fprintf(stderr, "bad polygon or error in renderer\n"); return; } gfxpoly_t*poly2 = gfxpoly_process(poly, rule, &onepolygon); @@ -447,8 +505,9 @@ void extract_polygons_fill(gfxdevice_t*dev, gfxline_t*line, gfxcolor_t*color) free(bitmap1); free(bitmap2); - gfxpoly_destroy(poly); + gfxpoly_destroy(poly1); gfxpoly_destroy(poly2); + gfxcompactpoly_destroy(poly); } int extract_polygons_setparameter(gfxdevice_t*dev, const char*key, const char*value) { return 0; @@ -521,16 +580,21 @@ void test5(int argn, char*argv[]) continue; char* filename = allocprintf("%s/%s", dir, file->d_name); + if(argn>1) + filename = argv[1]; + gfxdocument_t*doc = driver->open(driver, filename); gfxdevice_t*out = &extract_polygons; int t; for(t=1;t<=doc->num_pages;t++) { - printf("%s (page %d)\n", filename, t); + fprintf(stderr, "%s (page %d)\n", filename, t); gfxpage_t* page = doc->getpage(doc, t); page->render(page, out); page->destroy(page); } doc->destroy(doc); + if(argn>1) + break; free(filename); } closedir(_dir); @@ -539,5 +603,6 @@ void test5(int argn, char*argv[]) int main(int argn, char*argv[]) { - test5(argn, argv); + test4(argn, argv); } +