/*
SVF	- svfout.h
	(C) Copyright 1994-1995 by SoftSource.  All rights reserved.
Scott Sherman 9-94...

	routines for outputting an SVF file
*/

#ifndef SVFOUT_H
#define SVFOUT_H

	/* open & close an output SVF file */
FILE *SVFOpen(char *filename);
int SVFClose(FILE *fp);

	/* header info */
void SVFOutputName(FILE *fp,svfstring name);
void SVFOutputExtents(FILE *fp,svfvalue xmin,svfvalue ymin,svfvalue xmax,svfvalue ymax);
void SVFOutputLayerTable(FILE *fp,svfvalue numentries);
void SVFOutputLayerEntry(FILE *fp,uchar status,svfstring layername);
void SVFOutputLinkTable(FILE *fp,svfvalue numentries);
void SVFOutputColorTable(FILE *fp,svfvalue numentries);
void SVFOutputColorEntry(FILE *fp,uchar r,uchar g,uchar b);
void SVFOutputBackground(FILE *fp,svfvalue color);
void SVFOutputTransparent(FILE *fp,svfvalue color);
void SVFOutputWidth(FILE *fp,svfvalue mm);
void SVFOutputNotifyTable(FILE *fp,svfvalue numin,svfvalue numout);
void SVFOutputNotifyEntry(FILE *fp,svfstring text,svfvalue width);
void SVFOutputTransform(FILE *fp,double scale,double basex,double basey);
void SVFOutputSortByLayer(FILE *fp,int sortbylayer);

	/* drawing commands */
void SVFOutputPoint(FILE *fp,svfvalue x,svfvalue y);
void SVFOutputMoveTo(FILE *fp,svfvalue x,svfvalue y);
void SVFOutputRelMoveTo(FILE *fp,svfoffset x,svfoffset y);
void SVFOutputLineTo(FILE *fp,svfvalue x,svfvalue y);
void SVFOutputRelLineTo(FILE *fp,svfoffset x,svfoffset y);

void SVFOutputPolylineStart(FILE *fp,svfvalue n,int bytes);	/* start a polyline */
void SVFOutputRelPolylineStart(FILE *fp,svfvalue n,int bytes);
void SVFOutputPolyPoint(FILE *fp,svfvalue x,svfvalue y,int bytes);	/* add a point */
void SVFOutputRelPolyPoint(FILE *fp,svfoffset x,svfoffset y,int bytes);

void SVFOutputRectangle(FILE *fp,svfvalue width,svfvalue height);
void SVFOutputCircle(FILE *fp,svfvalue radius);
void SVFOutputArc(FILE *fp,svfvalue radius,svfvalue startangle,svfvalue endangle);
	/* force writing of the long version of the arc command */
void SVFOutputArcLength(FILE *fp,svfvalue radius,svfvalue startangle,svfvalue endangle,int bytes);
void SVFOutputBezierCurve(FILE *fp,svfvalue cx1,svfvalue cy1,
	svfvalue cx2,svfvalue cy2,svfvalue x2,svfvalue y2);

void SVFOutputTextHeight(FILE *fp,svfvalue height);
void SVFOutputText(FILE *fp,ushort width,svfstring text);

void SVFOutputSetLayer(FILE *fp,svfvalue layer);
void SVFOutputSetColor(FILE *fp,svfvalue color);
void SVFOutputInvisible(FILE *fp);
	/* RGB -> default color index */
svfvalue SVFGetClosestColor(uchar r,uchar g,uchar b);
void SVFOutputSetPenWidth(FILE *fp,svfvalue width);
void SVFOutputFillMode(FILE *fp,svfvalue mode);

void SVFOutputData(FILE *fp,svfvalue numbytes,void *data);

	/* creating links */
void SVFOutput1dLink(FILE *fp,svfstring action,svfstring extra);
void SVFOutput2dLink(FILE *fp,svfstring action,svfstring extra);
void SVFOutputEndLink(FILE *fp);

	/* output as text or binary?  binary - default (note: text SVF is not displayed) */
void SVFTextOutput(int text);

#endif
