+/* x1 + ((x2-x1)*(y-y1)) / dy =
+ (x1*(y2-y1) + (x2-x1)*(y-y1)) / dy =
+ (x1*(y2-y) + x2 *(y-y1)) / dy =
+ (x1*y2 - x2*y1 + x2*y - y*x1) / dy =
+ (k + x2*y - x1*y) / dy
+ (k + dx*y) / dy
+*/
+//#define XPOS(s,ypos) ((s)->a.x + ((s)->delta.x * (double)((ypos) - (s)->a.y)) / (s)->delta.y)
+#define XPOS(s,ypos) (((s)->k + (double)(s)->delta.x*ypos) / (s)->delta.y)
+
+#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)(s2)->delta.x*ypos)*(s1)->delta.y)
+
+void gfxpoly_fail(char*expr, char*file, int line, const char*function);
+
+char gfxpoly_check(gfxpoly_t*poly);
+int gfxpoly_num_segments(gfxpoly_t*poly);
+int gfxpoly_size(gfxpoly_t*poly);