-typedef struct _stdpoly {
- gfxpoly_t*poly;
- double lastx,lasty;
- double z;
-} stdpoly_t;
-static void stdmoveto(void*data, double x, double y)
-{
- stdpoly_t*d = (stdpoly_t*)data;
- x *= d->z;
- y *= d->z;
- d->lastx = x;d->lasty = y;
-}
-static void stdlineto(void*data, double x, double y)
-{
- stdpoly_t*d = (stdpoly_t*)data;
- x *= d->z;
- y *= d->z;
- gfxpoly_add_edge(d->poly, d->lastx, d->lasty, x, y);
- d->lastx = x;d->lasty = y;
-}
-static void stdsetgridsize(void*data, double gridsize)
-{
- stdpoly_t*d = (stdpoly_t*)data;
- d->poly->gridsize = gridsize;
-}
-gfxpoly_t* gfxpoly_from_gfxline(gfxline_t*line, double gridsize)
-{
- stdpoly_t data;
- data.poly = gfxpoly_new(gridsize);
- data.z = 1.0 / gridsize;
- data.lastx = data.lasty = 0;
- convert_gfxline(line, &data, stdmoveto, stdlineto, stdsetgridsize);
- return data.poly;
-}
-gfxpoly_t* gfxpoly_from_file(const char*filename, double gridsize)
-{
- stdpoly_t data;
- data.poly = gfxpoly_new(gridsize);
- data.z = 1.0 / gridsize;
- data.lastx = data.lasty = 0;
- convert_file(filename, &data, stdmoveto, stdlineto, stdsetgridsize);
- return data.poly;
-}
-