int y = c%200;;
c = crc32_add_byte(c, t^0x55);
int r = c%100;
- b = gfxline_append(b, gfxline_makecircle(x,y,r,r));
+ gfxline_t*c = gfxline_makecircle(x,y,r,r);
+ b = gfxline_append(b, c);
//b = gfxline_append(b, gfxline_makerectangle(10,10,100,100));
}
return b;
{
//gfxline_t* b = mkchessboard();
//gfxline_t* b = mkrandomshape(100,7);
- gfxline_t* b = make_circles(100);
+ gfxline_t* b = make_circles(30);
gfxmatrix_t m;
memset(&m, 0, sizeof(gfxmatrix_t));
//gfxline_transform(b, &matrix);
gfxline_dump(b, stderr, "");
-
gfxpoly_t*poly = gfxpoly_from_gfxline(b, 0.05);
+
gfxline_free(box1);
gfxline_free(box2);
gfxline_free(box3);
gfxline_transform(l, &m);
gfxpoly_t*poly1 = gfxpoly_from_gfxline(l, 0.05);
+
gfxpoly_t*poly2 = gfxpoly_process(poly1, rule, &onepolygon);
tag = swf_InsertTag(tag, ST_DEFINESHAPE);
#define FILL
#ifdef FILL
- swf_ShapeSetAll(tag,s,0,0,0,fs,0);
+ swf_ShapeSetAll(tag,s,UNDEFINED_COORD,UNDEFINED_COORD,0,fs,0);
int i,j;
- for(i=0;i<poly2->num_strokes;i++) {
- gfxpolystroke_t*stroke = &poly2->strokes[i];
+ gfxpolystroke_t*stroke = poly2->strokes;
+ for(;stroke;stroke=stroke->next) {
for(j=0;j<stroke->num_points-1;j++) {
point_t a = stroke->points[j];
point_t b = stroke->points[j+1];
void rotate90(gfxpoly_t*poly)
{
int i,j;
- for(i=0;i<poly->num_strokes;i++) {
- gfxpolystroke_t*stroke = &poly->strokes[i];
+ gfxpolystroke_t*stroke = poly->strokes;
+ for(;stroke;stroke=stroke->next) {
for(j=0;j<stroke->num_points;j++) {
point_t a = stroke->points[j];
stroke->points[j].x = a.y;
#include "../gfxdevice.h"
#include "../pdf/pdf.h"
+static int max_segments = 0;
+static int max_any_segments = 0;
void extract_polygons_fill(gfxdevice_t*dev, gfxline_t*line, gfxcolor_t*color)
{
//gfxpoly_t*c = gfxpoly_from_gfxline(line, 0.05);
//gfxpoly_free(c);
+ //gfxpoly_t*poly1 = gfxpoly_from_gfxline(line, 0.05);
gfxpoly_t*poly1 = gfxpoly_from_gfxline(line, 0.05);
//gfxline_dump(line, stderr, "");
//gfxpoly_dump(poly);
- if(gfxpoly_size(poly1)>100000) {
- fprintf(stderr, "%d segments (skipping)\n", gfxpoly_size(poly1));
+ int size = gfxpoly_size(poly1);
+ if(size == 4) {
+ //rectangles are boring.
+ gfxpoly_destroy(poly1);
+ return;
+ }
+
+ max_any_segments = size > max_any_segments? size : max_any_segments;
+ if(size>100000) {
+ fprintf(stderr, "%d segments (skipping)\n", size);
return;
} else {
- //fprintf(stderr, "%d segments\n", gfxpoly_size(poly));
+ max_segments = size > max_segments? size : max_segments;
+ fprintf(stderr, "%d segments (max so far: %d/%d)\n", size, max_segments, max_any_segments);
}
if(!gfxpoly_check(poly1)) {