X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fgfxpoly%2Fpoly.h;h=68026228cfc4765cd90c0fa95750f02c7ef5b113;hb=33e9461da6b886671749d6cbabd80b355ab1f6d9;hp=6e4c7e40c1a34b6752bb0b5fdf279932d801aa2b;hpb=de3641737991ed13571eb947068472cf73001032;p=swftools.git diff --git a/lib/gfxpoly/poly.h b/lib/gfxpoly/poly.h index 6e4c7e4..6802622 100644 --- a/lib/gfxpoly/poly.h +++ b/lib/gfxpoly/poly.h @@ -6,6 +6,7 @@ //#define DEBUG //#define CHECKS +#define SPLAY typedef enum {DIR_UP, DIR_DOWN} segment_dir_t; typedef enum {EVENT_CROSS, EVENT_END, EVENT_CORNER, EVENT_START, EVENT_HORIZONTAL} eventtype_t; @@ -58,6 +59,11 @@ typedef struct _segment { windstate_t wind; int nr; +#ifdef SPLAY + struct _segment*parent; + struct _segment*leftchild; + struct _segment*rightchild; +#endif struct _segment*left; struct _segment*right; char changed; @@ -81,10 +87,7 @@ typedef struct _segment { #define XPOS_INT(s,ypos) ((int)ceil(XPOS((s),ypos))) #define XDIFF(s1,s2,ypos) (((s1)->k + (double)(s1)->delta.x*ypos)*(s2)->delta.y - \ - ((s2)->k + (double)(s1)->delta.x*ypos)*(s1)->delta.y) - -// rewrite as XDIFF==0? -#define XPOS_EQ(s1,s2,ypos) (XPOS((s1),(ypos))==XPOS((s2),(ypos))) + ((s2)->k + (double)(s2)->delta.x*ypos)*(s1)->delta.y) typedef struct _gfxpoly { double gridsize;