/* * see COPYRIGHT */ /* * Screen for drawing the Bezier curves in text mode */ struct screen { unsigned physx; unsigned physy; unsigned cols; unsigned rows; unsigned xoff; unsigned yoff; unsigned minx; unsigned miny; char *dots; double xscale; double yscale; } screen; #define screenabsdot(x,y) (screen.dots[(y)*screen.cols+(x)]) #define screendot(x,y) screenabsdot((x)+screen.xoff, (y)+screen.yoff) /* prototypes */ double fmin(double a, double b); int abs(int x); void initscreen(unsigned physx, unsigned physy, unsigned cols, unsigned rows, unsigned xoff, unsigned yoff, unsigned minx, unsigned miny, unsigned maxx, unsigned maxy); void drawcurve(int mark, int ax,int ay, int bx,int by, int cx,int cy, int dx,int dy); void drawcurvedir(int mark, int ax,int ay, int bx,int by, int cx,int cy, int dx,int dy); void drawdot(int mark, int x, int y); void setabsdot(int mark, int x, int y); void setfdot(int mark, double x, double y); void printscreen(FILE *f);