/* Copyright (c) 2004-2010, Dirk Krause All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above opyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Dirk Krause nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /** @file dkfig.h Include file for all fig2vect source modules. */ #ifndef DKFIG_H_INCLUDED /** Protection against multiple inclusions. */ #define DKFIG_H_INCLUDED 1 #include #if DK_HAVE_STDIO_H #include #endif #if DK_HAVE_IO_H #include #endif #if DK_HAVE_PROCESS_H #include #endif #if DK_HAVE_STDLIB_H #include #endif #if DK_HAVE_UNISTD_H #include #endif #if DK_HAVE_MATH_H #include #endif #if DK_TIME_WITH_SYS_TIME #include #include #else #if DK_HAVE_TIME_H #include #else #if DK_HAVE_SYS_TIME_H #include #endif #endif #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "dkxsp.h" #include "dkbsp.h" #if defined(EXTERN) #undef EXTERN #endif #if DK_HAVE_ZLIB_H #if DK_HAVE_PNG_H #include #endif #endif #if defined(__cplusplus) extern "C" { #endif #if DK_HAVE_JPEGLIB_H #include #endif #if DK_HAVE_PNM_H #include #endif #if DK_HAVE_NETPBM_PNM_H #include #endif #if defined(__cplusplus) } #endif /** Bitmap header information. */ typedef struct { long width; /**< Width. */ long height; /**< Height. */ int colored; /**< Flag: Color image. */ int seprgb; /**< Flag: Use separated data streams. */ unsigned long number; /**< Image number. */ } dkfig_bitmap_width; /** Bounding box in Fig coordinates. */ typedef struct { char flags; /**< Flag set. */ double xmin; /**< Left x. */ double xmax; /**< Right x. */ double ymin; /**< Smallest y. */ double ymax; /**< Largest y. */ } dk_fig_bb; /** Structure used to store options and file names. */ typedef struct { unsigned long number; /**< Number (in order of appearance). */ char *name; /**< Option contents. */ unsigned char used; /**< Flag: Option was understood. */ } dk_fig_opt; /** Point coordinates. */ typedef struct { double x; /**< X value. */ double y; /**< Y value. */ } dk_fig_point; /** Bezier point data. */ typedef struct { dk_fig_point value; /**< Point data itselft. */ dk_fig_point lcontrol; /**< Control point "on the left side". */ dk_fig_point rcontrol; /**< Control point "on the right side". */ } dk_fig_bezier_point; /** Arrowhead data. */ typedef struct { int type; /**< Fig file: Arrowhead type. */ int style; /**< Fig file: Arrowhead style. */ double thickness; /**< Fig File: Thickness. */ double w; /**< Fig file: Width. */ double h; /**< Fig file: Height. */ double alpha; /**< Calculated: Radians. */ dk_fig_point p1; /**< Calculated: Polygon point 1. */ dk_fig_point p2; /**< Calculated: Polygon point 2. */ dk_fig_point p3; /**< Calculated: Polygon point 3. */ dk_fig_point p4; /**< Calculated: Polygon point 4. */ int numpoints; /**< Calculated: Number of polygon points. */ double decrease; /**< Calculated: Amount to decrease. */ } dk_fig_arrow; /** Filling, pattern and drawing. */ typedef struct { int ot; /**< Object type. */ int st; /**< Object sub type. */ int cl; /**< Flag: Closed path. */ int ls; /**< Line style. */ long lt; /**< Line thickness. */ int pc; /**< Pen color. */ int fc; /**< Fill color. */ int af; /**< Area fill. */ int js; /**< Join style. */ int cs; /**< Cap style. */ int ar; /**< Arrows. */ int ps; /**< Pen style (unused). */ double sv; /**< Style val. */ dk_fig_arrow ahf; /**< Forward arrow data. */ dk_fig_arrow ahb; /**< Backward arrow data. */ } dk_fig_fpd; /** Fig file object. */ typedef struct _dk_fig_object_ { struct _dk_fig_object_ *parent; /**< Parent object. */ unsigned long lineno; /**< Line number of object in file. */ long layer; /**< Depth of object (layer number). */ int objtype; /**< Object type DK_FIG_OBJ_xxx. */ int subtype; /**< Object subtype. */ dk_fig_fpd fpd; /**< Fill, pattern and draw. */ void *data; /**< Object details. */ void *drve; /**< Driver-specific extension data. */ dk_storage_t *osc; /**< Object special comments. */ dk_storage_iterator_t *osci; /**< Object special c iterator. */ dk_fig_bb dbb; /**< Object bounding box. */ } dk_fig_object; /** Fig drawing. */ typedef struct { /* Drawing data. */ dk_storage_t *objects; /**< Storage: contents as read. */ dk_storage_iterator_t *objit; /**< Iterator: contents as read. */ dk_storage_t *ccells; /**< Storage: Color cells. */ dk_storage_iterator_t *ccit; /**< Iterator: Color cells. */ dk_storage_t *dlsc; /**< Storage: Doc level special c. */ dk_storage_iterator_t *dlsci; /**< Iterator: Doc level special c. */ dk_storage_t *fonth; /**< Storage: Font handling. */ dk_storage_iterator_t *fonthi; /**< Iterator: Font handling. */ int orientation; /**< 0=Landscape, 1=Portrait. */ int justification; /**< 0=Center, 1=FlushLeft. */ int units; /**< 0=Metric, 1=Inches. */ int paper; /**< A B C D E A4 A3 A2 A1 A0 B5. */ int multi; /**< 0=Single, 1=Multiple. */ int transparent; /**< Index of transparent color. */ int ahlj; /**< Arrowhead line join. */ int cstype; /**< Coordinates origin 1=ll, 2=ul. */ size_t spline_segs; /**< Number of sub segments. */ size_t numlatalpha; /**< String length to encode number. */ long resolution; /**< Dpi. */ unsigned long opt1; /**< Options field 1. */ unsigned long opt2; /**< Options field 2. */ unsigned long numlatfonts; /**< Number of LaTeX fonts. */ unsigned long maxitsteps; /**< Maximum no of iteration steps. */ unsigned long minitsteps; /**< Minimum no of iteration steps. */ double magnification; /**< Print magnification. */ double fres; /**< Dpi as float. */ dk_fig_bb dbb; /**< Bounding box in Fig coordinates. */ /* Used while reading input. */ int state; /**< Current input state. */ int errc; /**< Error code. */ int xory; /**< Flag: read x or y: 0=x, 1=y. */ size_t currentpnt; /**< Number of the current point. */ unsigned long lineno; /**< Line number. */ unsigned long errl; /**< Error line number. */ char *inputfilename; /**< Input file name. */ dk_storage_t *nosc; /**< Next objects special comments. */ dk_storage_iterator_t *nosci; /**< Iterator for nosc. */ dk_fig_object *currentobj; /**< Current object. */ dk_fig_object *currentcomp; /**< Current compound. */ void *currentdet; /**< Details of current object. */ } dk_fig_drawing; /** Compound object (group). */ typedef struct { long ulx; /**< BB: Upper left x. */ long uly; /**< BB: Upper left y. */ long lrx; /**< BB: Lower right x. */ long lry; /**< BB: Lower right y. */ dk_storage_t *objects; /**< Objects storage. */ dk_storage_iterator_t *objit; /**< objects iterator. */ } dk_fig_compound; /** Arc calculations struct. */ typedef struct { /* input */ double xa; /**< Point 1 x. */ double ya; /**< Point 1 y. */ double xb; /**< Point 2 x. */ double yb; /**< Point 2 y. */ double xc; /**< Point 3 x. */ double yc; /**< Point 3 y. */ /* output */ double xm; /**< Center x. */ double ym; /**< Center y. */ double ra; /**< Radius. */ double aa; /**< Alpha for point A. */ double ab; /**< Alpha for point B. */ double ac; /**< Alpha for point C. */ double xleft; /**< BB: left x. */ double xright; /**< BB: right x. */ double ytop; /**< BB: Upper y. */ double ybottom; /**< BB: Lower y. */ double astart; /**< Start of arc (rotation), radians. */ double alength; /**< Radians difference between a and c. */ int revert; /**< Flag: Must use reverse path for arrowheads. */ int mathok; /**< Flag: Math error. */ } dk_fig_arc_calc; /** Arc object. */ typedef struct { int direction; /**< Drawing orientation: 0=clockwise */ long x1; /**< Point 1 x. */ long y1; /**< Point 1 y. */ long x2; /**< Point 2 x. */ long y2; /**< Point 2 y. */ long x3; /**< Point 3 x. */ long y3; /**< Point 3 y. */ double lba; /**< Start alpha in radians. */ double rba; /**< End alpha in radians. */ double centerx; /**< Center x. */ double centery; /**< Center y. */ dk_fig_arc_calc calc; /**< Calculation structure. */ } dk_fig_arc; /** Ellipse object. */ typedef struct { int direction; /**< Drawing direction. */ long centerx; /**< Center x. */ long centery; /**< Center y. */ long radiusx; /**< Radius x. */ long radiusy; /**< Radius y. */ long startx; /**< Start x. */ long starty; /**< Start y. */ long endx; /**< End x. */ long endy; /**< End y. */ double angle; /**< Rotation angle. */ } dk_fig_ellipse; /** Polyline object. */ typedef struct { int flipped; /**< Flag: Flipped. */ size_t npoints; /**< Number of points. */ long radius; /**< Radius for rounded rectangle corner. */ long *xvalues; /**< Points (x-values). */ long *yvalues; /**< Points (y.-values). */ char *imagename; /**< Name of image file. */ dk_fig_point pa; /**< Starting point. */ dk_fig_point pe; /**< End point. */ } dk_fig_polyline; /** X-spline object. */ typedef struct { /* from XFig file */ int npoints; /**< Number of points. */ size_t segs; /**< Bezier segments per X-spline segment. */ long *xvalues; /**< x coordinates. */ long *yvalues; /**< y coordinates. */ double *svalues; /**< s values. */ /* calculated internally */ size_t nbpoints; /**< Number of bezier points. */ dk_fig_bezier_point *bpoints; /**< Bezier points. */ /* start and end point for arrowhead */ size_t normals; /**< Start of normal spline after arrowhead. */ size_t normale; /**< End of normal spline before arrowhead. */ double ta; /**< Start t value. */ dk_fig_bezier_point pa; /**< Start point. */ dk_fig_bezier_point pa2; /**< Control point at start. */ double te; /**< End t value. */ dk_fig_bezier_point pe; /**< End point. */ dk_fig_bezier_point pe2; /**< Control point at end. */ int flags; /**< Flags: bit 1=only one partial segment. */ } dk_fig_spline; /** Font handling. handling: * 0 -> label "Text" infont "ptmr" scaled ... * 1 -> label "Text" infont "TimesRoman" scaled ... * 2 -> label btex Text etex * 3 -> \font\fntAA=ptmr at 12pt; * 4 -> \newcommand\font[0]{...size+features...} * 5 -> label btext \textbf{Text} etex */ typedef struct { int handling; /**< Handling type. */ int fontno; /**< PS font number or features collection */ int ofontno; /**< Original font number. */ int oflags; /**< Original flags. */ unsigned long fonthno; /**< Font handling number. */ double fontsize; /**< Font size. */ } dk_fig_fonth_t; /** Text object. */ typedef struct { int font; /**< Font number. */ int font_flags; /**< Text flags. */ long x; /**< x position. */ long y; /**< y position. */ double font_size; /**< Text size. */ double angle; /**< Rotation angle. */ double height; /**< Text height. */ double length; /**< Text length. */ char *text; /**< Text to show. */ dk_fig_fonth_t *font_handling; /**< Font handling. */ } dk_fig_text; /** Color cell object. */ typedef struct { int number; /**< Color number. */ int r; /**< R component. */ int g; /**< G component. */ int b; /**< B component. */ void *drve; /**< Driver specific data. */ } dk_fig_colorcell; /** Color cell. */ typedef struct { double red; /**< R component. */ double green; /**< G component. */ double blue; /**< B component. */ int ired; /**< R component. */ int igreen; /**< G component. */ int iblue; /**< B component. */ } dk_fig_dcc; /** Font. */ typedef struct _dkfig_font_ { char *texname; /**< TeX font name. */ char *psname; /**< PS font name. */ int features; /**< Font features. */ } dk_fig_font; /** Conversion job structure. */ typedef struct { int normal_text; /**< How to handle normal text. */ int special_text; /**< How to handle special text. */ int ahlj; /**< Arrowhead linejoin. */ int latfs; /**< LaTeX font setup. */ int bdnum; /**< Base driver number. */ int svgv; /**< SVG version. */ int svgs; /**< SVG viewport specification. */ unsigned psl; /**< PS level (1, 2 or 3). */ unsigned dscl; /**< DSC level (1, 2 or 3). */ size_t spseg; /**< Spline sub segments. */ size_t lcfge; /**< Size of largest configuration entry. */ long patlw; /**< Pattern line width. */ long patrp; /**< Pattern period. */ unsigned long optn; /**< Number of opt entries. */ unsigned long opt1; /**< Conversion options (1). */ unsigned long opt2; /**< Conversion options (2). */ unsigned nodcoord; /**< Number of digits for coordinates. */ unsigned nodtrigo; /**< Number of digits for trigon calc res. */ unsigned nodcolor; /**< Number of digits for colors. */ unsigned circlesteps; /**< Bezier segments for circle quadrant. */ unsigned long maxitsteps; /**< Maximum number of iteration steps. */ unsigned long minitsteps; /**< Minimum number of iteration steps. */ double fsf; /**< Font scale factor. */ dk_app_t *app; /**< Application (s). */ dk_storage_t *opt; /**< Conversion options (d). */ dk_storage_iterator_t *opti; /**< Options iterator (d). */ char *drn; /**< Driver name (d). */ char *defdr; /**< Default driver name (d). */ char *basdr; /**< Base driver name (d). */ char *ifn1; /**< Input file name as specified (s). */ char *ofn1; /**< Output file name as specified (s). */ char *ifn2; /**< Input file name after expansion (s). */ char *ofn2; /**< Output file name after expansion (s). */ char **msg1; /**< Message texts. */ char *texn; /**< Tex file name. */ char *dvin; /**< Dvi file name. */ char *psn; /**< PS file name. */ char *logn; /**< TeX log file name */ char *auxn; /**< TeX aux file */ char *tpfn; /**< Tex preamble file name */ char *incg; /**< Includegraphics file name */ char *fcfg; /**< Font configuration file name */ /* filled by dkfig_co_load_configuration */ dk_storage_t *optg; /**< Global options from config file (d). */ dk_storage_iterator_t *optgi; /**< Global options conf file (d) iterator */ dk_storage_t *optb; /**< Base driver options from config file (d). */ dk_storage_iterator_t *optbi; /**< Base driver options (d) iterator */ dk_storage_t *optd; /**< Driver specific options from config file (d). */ dk_storage_iterator_t *optdi; /**< Driver specific options (d) iterator */ char *cfgfn; /**< Configuration file name (d). */ dk_stream_t *istrm; /**< Input stream. */ dk_stream_t *ostrm; /**< Output stream. */ dk_fig_object *drwng; /**< Drawing object. */ /* filled by the outut driver functions */ void *outds; /**< Output driver specific data. */ dk_le_t *uc2lat; /**< Text converter. */ char *uc2ldir; /**< Text converter base directory. */ unsigned char af; /**< Flag: Find base driver name automatically. */ int paper_width; /**< Paper width. */ int paper_height; /**< Paper height. */ int paper_xleft; /**< Left edge of draw range. */ int paper_xright; /**< Right edge of draw range. */ int paper_ytop; /**< Top edge of draw range. */ int paper_ybottom; /**< Bottom edge of draw range. */ int align_h; /**< Horizontal alignment. */ int align_v; /**< Vertical alignment. */ int image_align; /**< Image alignment in rectangle. */ } dk_fig_conversion; /** MetaPost output structure. */ typedef struct { int multi; /**< Flag: MultiMetaPost mp (0) or mmp (1). */ int haveflags; /**< Information the driver collected. */ int linecap; /**< Linecap style. */ int linejoin; /**< Linjoin style. */ int havecd; /**< Flag: Have current depth. */ long currentdepth; /**< Current layer number. */ unsigned long currentimage; /**< Number of the next image. */ double bbx; /**< BB x range. */ double bby; /**< BB y range. */ double mx; /**< Coordinates transformation. */ double nx; /**< Coordinates transformation. */ double my; /**< Coordinates transformation. */ double ny; /**< Coordinates transformation. */ double sf; /**< Scale factor for widths. */ double linewidth; /**< Line width. */ double ahlength; /**< Arrow head length. */ double ahangle; /**< Arrow head angle in degree. */ dk_storage_t *flatlist; /**< Flat list of primitives. */ dk_storage_iterator_t *it; /**< Iterator for flat list. */ } dk_fig_output_mp; /** Rotated ellipse. */ typedef struct { /* input data */ double rx; /**< x radius. */ double ry; /**< y radius. */ double phi0; /**< Rotation in radians. */ /* output data */ double h; /**< Single height. */ double w; /**< Single width. */ } dk_fig_rot_ellipse; /** MetaPost output structure. */ typedef struct { int me; /**< Flag: Math error. */ double patrp; /**< Delta for pattern repeat. */ dk_fig_bb obb; /**< Output bounding box. */ dk_fig_conversion *c; /**< Conversion job structure. */ dk_fig_drawing *d; /**< Drawing. */ dk_fig_output_mp *m; /**< MetaPost structure. */ dk_fig_object *o; /**< Fig object. */ dk_stream_t *s; /**< Output stream. */ dk_fig_arrow *a; /**< Arrowhead calculation structure. */ } dkfig_mp_output_instruction; /** EPS output structure. */ typedef struct { int flags; /**< Flag set. */ int me; /**< Flag: Math error occured. */ int have; /**< Informations configured. */ int lc; /**< Linecap style. */ int lj; /**< Linejoin style. */ int ls; /**< Line style. */ int spcpass; /**< Flag: In special comments pass. */ int errprinted; /**< Flag: Error message printed. */ unsigned psfont; /**< PS font number. */ size_t allimw; /**< String length to encode number. */ unsigned long numimw; /**< Number of image widths. */ int skip_images; /**< Flag: Skip image handling. */ double xfactor; /**< Coordinates transformation. */ double xshift; /**< Coordinates transformation. */ double yfactor; /**< Coordinates transformation. */ double yshift; /**< Coordinates transformation. */ double xleft; /**< BB: left x. */ double xright; /**< BB: right x. */ double ybottom; /**< BB: bottom y. */ double ytop; /**< BB: top y. */ double lw; /**< Line width. */ double sv; /**< Element length of dashed lines. */ double psfsize; /**< PS font size. */ dk_fig_dcc dcc; /**< Current color cell. */ dk_fig_conversion *c; /**< Conversion job structure. */ dk_fig_drawing *d; /**< Fig drawing (from c). */ dk_stream_t *s; /**< Output stream (c->ostrm). */ dk_fig_object *dro; /**< Root drawing object (c->drwng). */ dk_storage_t *fl; /**< Flattened objs container (dyn) . */ dk_storage_iterator_t *fli; /**< Flattened objs iterator (dyn). */ dk_storage_t *iw; /**< Image widths container (dyn). */ dk_storage_iterator_t *iwi; /**< Image widths iterator (dyn). */ FILE *fdvi; /**< DVI file, must close. */ FILE *fps; /**< PS file, must close. */ int *fnused; /**< Flags, from dkfig_output_eps(). */ int *patused; /**< flags, from dkfig_output_eps(). */ dk_fig_object *o; /**< Current object. */ dk_fig_arrow *a; /**< Application structure. */ double translate_x; /**< X translation. */ double translate_y; /**< Y translation. */ double scaleval; /**< Scale factor. */ int must_scale; /**< Flag: Must scale image. */ } dkfig_eps_output_instruction; /** SVG output structure. */ typedef struct { int me; /**< Math error. */ int spcp; /**< Flag: Special comments pass. */ int errprinted; /**< Flag: Error message printed. */ int prep_mods; /**< Flag: Expect modifications. */ int spcpass; /**< Flag: Special comments pass. */ size_t lpat; /**< String length for number (patterns). */ size_t lsty; /**< String length for number (styles). */ long xmin; /**< Viewport left x in PS points. */ long xmax; /**< Viewport right x in PS points. */ long ymin; /**< Viewport upper y in PS points. */ long ymax; /**< Viewport lower y in PS points. */ unsigned long njsl; /**< Number of JS libraries. */ unsigned long npat; /**< Number of patterns. */ unsigned long nsty; /**< Number of styles. */ double mx; /**< Coordinates transformation. */ double nx; /**< Coordinates transformation. */ double my; /**< Coordinates transformation. */ double ny; /**< Coordinates transformation. */ dk_fig_conversion *c; /**< Conversion job structure. */ dk_fig_drawing *d; /**< Fig drawing (from c). */ dk_stream_t *s; /**< Output stream (c->ostrm). */ dk_fig_object *dro; /**< Fig drawing root object. */ dk_storage_t *fl; /**< Flattened object list. */ dk_storage_iterator_t *fli; /**< Flattened object list. */ dk_storage_t *pat; /**< Patterns. */ dk_storage_iterator_t *pati; /**< Patterns. */ dk_storage_t *sty; /**< Styles. */ dk_storage_iterator_t *styi; /**< Styles. */ /* during output pass */ dk_fig_object *o; /**< Current object. */ dk_storage_t *jsl; /**< JavaScript libraries. */ dk_storage_iterator_t *jsli; /**< JavaScript libraries. */ char *urw_dir; /**< URW font directory. */ char *fnused; /**< Fonts used, array(35). */ dk_font_mapping_t *fontmap; /**< Font mapping. */ } dkfig_svg_output_instruction; /** SVG fill pattern. */ typedef struct _dk_fig_svg_pat_ { int pattp; /**< Pattern type. */ int sred; /**< Stroke R component. */ int sgreen; /**< Stroke G component. */ int sblue; /**< Stroke B component. */ int fred; /**< Fill R component. */ int fgreen; /**< Fill G component. */ int fblue; /**< Fill B component. */ long patrp; /**< Pattern repeat distance. */ unsigned long patno; /**< Pattern ID. */ unsigned long flags; /**< DKFIG_SVG_FL_xxx. */ /* unsigned long lw; */ /**< Line width. */ } dk_fig_svg_pat; /** SVG fill style. */ typedef struct _dk_fig_svg_style_ { int ls; /**< Line style. */ int lc; /**< Linecap style. */ int lj; /**< Linejoin style. */ int sred; /**< Stroke color R. */ int sgreen; /**< Stroke color G. */ int sblue; /**< Stroke color B. */ int fred; /**< Fill color R. */ int fgreen; /**< Fill color G. */ int fblue; /**< Fill color B. */ int talign; /**< Text align. */ long lw; /**< Line width. */ unsigned long classno; /**< Class ID number. */ unsigned long flags; /**< Flags which information is set. */ double sv; /**< Style value. */ dk_fig_svg_pat *pat; /**< Fill pattern. */ dk_fig_fonth_t *fonth; /**< Font handling. */ } dk_fig_svg_style; /** SVG attribute. */ typedef struct _dk_fig_svg_attr_ { int classid; /**< Attribute type. */ char *value; /**< Attribute value. */ } dk_fig_svg_attr; /** SVG-driver-specific data for an object. */ typedef struct _dk_fig_svg_drve_ { dk_fig_svg_style *st1; /**< Object style. */ dk_fig_svg_style *st2; /**< Arrowhead forward style. */ dk_fig_svg_style *st3; /**< Arrowhead backward style. */ dk_storage_t *attr; /**< Attributes storage. */ dk_storage_iterator_t *attri; /**< Attributes storage iterator. */ dk_storage_t *xl; /**< Xlink attributes. */ dk_storage_iterator_t *xli; /**< Xlink attributes storage iterator. */ } dk_fig_svg_drve; /** Image used in EPS output driver. */ typedef struct { int type; /**< Type: 0=PS/EPS, 1=PNG, 2=JPEG, 3=NetPBM. */ int colored; /**< Flag: Colored (1) or grayscaled (0). */ int binary; /**< Flag: PS contains binary data. */ int fl; /**< Flag: Image flipped, 0=none, 1=horiz, 2=diag. */ long xmin; /**< Origin x. */ long width; /**< Image width in pixels / PS points. */ long ymin; /**< Origin y. */ long height; /**< Image height in pixels / PS points. */ char *filename; /**< Name of temporary file. */ } dkfig_eps_image_info; /** Image used by PDF output driver. */ typedef struct { int flipped; /**< Flag: flipped, 0=no, 1=horiz, 2=diag. */ char *inputfilename; /**< Input file name. */ char *ofn; /**< Output file name. */ char *afn; /**< Alpha file name. */ unsigned long ol; /**< Output length. */ unsigned long al; /**< Alpha length. */ unsigned long w; /**< Image width. */ unsigned long h; /**< Image height. */ int bpp; /**< Bits per pixel. */ int ch; /**< Number of channels. */ unsigned long objno; /**< Object number. */ unsigned long lineno; /**< Line number. */ } dkfig_pdf_image; /** Pattern description for PDF output driver. */ typedef struct { int patno; /**< Pattern number. */ int bgcol; /**< Background color. */ int fgcol; /**< Foreground color. */ unsigned long objno; /**< Object number. */ /* long lt; */ /**< Line thickness. */ int tile; /**< Flag: Tiled. */ unsigned long lineno; /**< Line number. */ } dkfig_pdf_pattern; /** PDF-driver-specific object extension. */ typedef struct { int fn; /**< Font number. */ dkfig_pdf_pattern *p; /**< Fill pattern. */ dkfig_pdf_image *i; /**< Fill image. */ } dkfig_pdf_drve_text; /** PDF output instruction. */ typedef struct _dkfig_pdf_output_instruction_ { dk_fig_bb imgbb; /**< Bounding box for images. */ dk_fig_conversion *c; /**< Conversion job structure. */ dk_fig_drawing *d; /**< Drawing. */ dk_stream_t *s; /**< Output stream. */ dk_stream_t *gcs; /**< Graphics contents stream. */ dk_storage_t *pdfo; /**< PDF object position storage. */ dk_storage_iterator_t *pdfoi; /**< PDF object position iterator. */ dk_storage_t *fl; /**< Flattened object container storage. */ dk_storage_iterator_t *fli; /**< Flattened object container iterator. */ dk_storage_t *patl; /**< Pattern storage. */ dk_storage_iterator_t *patli; /**< Pattern iterator. */ dk_storage_t *imgl; /**< Images storage. */ dk_storage_iterator_t *imgli; /**< Images iterator. */ dk_fig_object *co; /**< Current object. */ dkfig_pdf_pattern *cp; /**< Current pattern. */ dkfig_pdf_image *ci; /**< Current image. */ unsigned long *fu; /**< Flags: Fonts used (14). */ unsigned long no; /**< Next object number. */ size_t nostr; /**< Curent obj no encoded as string. */ int ec; /**< Error code. */ int me; /**< Flag: Math error. */ int procs; /**< Flag bit set: Procsets in use. */ int flags; /**< Flags: Which information do I have. */ int dash; /**< Dash type. */ int lc; /**< Linecap style. */ int lj; /**< Linejoin style. */ int spcpass; /**< Flag: In pass for spec comm. */ int errprinted; /**< Flag: Error message issued. */ double xfactor; /**< Scale factor for x. */ double yfactor; /**< Scale factor for y. */ double xadd; /**< Shift value for x. */ double yadd; /**< Shift value for y. */ double xleft; /**< BB: Left x. */ double xright; /**< BB: Right x. */ double ybottom; /**< BB: Bottom y. */ double ytop; /**< BB: Top y. */ dk_fig_dcc strok; /**< Stroke color. */ dk_fig_dcc nonst; /**< Non-stroke (fill+text) color. */ double lw; /**< Line width. */ double dasv; /**< Dash length. */ } dkfig_pdf_output_instruction; /** Image for Java output driver. */ typedef struct { unsigned long imgno; /**< Unique image number. */ char *filename; /**< File name. */ } dkfig_java_image; /** Color for Java output driver. */ typedef struct { unsigned long colno; /**< Color number. */ double r; /**< Red. */ double g; /**< Green. */ double b; /**< Blue. */ } dkfig_java_color; /** Font for Java output driver. */ typedef struct { unsigned long fontno; /**< Font number. */ int font; /**< PS font index (0-35). */ double size; /**< Font size. */ } dkfig_java_font; /** Stroke for Java output driver. */ typedef struct { unsigned long strokeno; /**< Unique stroke number. */ double linewidth; /**< Line width. */ double sv; /**< Style value. */ int cap; /**< Line cap. */ int join; /**< Line join. */ int dash; /**< Dash pattern index. */ } dkfig_java_stroke; /** Driver specific object extension for Java output driver. */ typedef struct { dkfig_java_stroke *st; /**< Stroke. */ dkfig_java_color *draw; /**< Draw color. */ dkfig_java_color *fill; /**< Fill color. */ dkfig_java_image *img; /**< Image. */ dkfig_java_font *font; /**< Font (to show texts). */ unsigned long tn; /**< Text number. */ } dkfig_java_drve; /** Layer information. */ typedef struct { long layer; /**< Layer number. */ dk_fig_bb bb; /**< Bounding box. */ } dkfig_java_layer; /** Java conversion structure. */ typedef struct { dk_fig_conversion *c; /**< Conversion job structure. */ dk_fig_drawing *d; /**< Fig drawing. */ dk_stream_t *s; /**< Output stream. */ dk_fig_object *dro; /**< Fig drawing root object. */ dk_storage_t *fl; /**< Flat list. */ dk_storage_iterator_t *fli; /**< Flat list iterator. */ dk_storage_t *s_c; /**< Colors. */ dk_storage_iterator_t *i_c; /**< Colors iterator. */ dk_storage_t *s_f; /**< Fonts. */ dk_storage_iterator_t *i_f; /**< Fonts iterator. */ dk_storage_t *s_s; /**< Strokes. */ dk_storage_iterator_t *i_s; /**< Strokes iterator. */ dk_storage_t *s_i; /**< Images. */ dk_storage_iterator_t *i_i; /**< Images iterator. */ dk_storage_t *s_l; /**< Layers storage. */ dk_storage_iterator_t *i_l; /**< Layers iterator. */ dk_fig_object *o; /**< Current object to process. */ dk_font_mapping_t *fontmap; /**< Font mapping. */ double xfactor; /**< Coordinates transformation. */ double xshift; /**< Coordinates transformation. */ double yfactor; /**< Coordinates transformation. */ double yshift; /**< Coordinates transformation. */ double xleft; /**< BB: left x. */ double xright; /**< BB: right x. */ double ybottom; /**< BB: bottom y. */ double ytop; /**< BB: top y. */ unsigned long n_c; /**< Number of colors. */ unsigned long n_f; /**< Number of fonts. */ unsigned long n_s; /**< Number of strokes. */ unsigned long n_i; /**< Number of images. */ unsigned long n_t; /**< Number of texts. */ unsigned long c_c; /**< Current color. */ unsigned long c_f; /**< Current font. */ unsigned long c_s; /**< Current stroke. */ size_t l_c; /**< Digits in number of colors. */ size_t l_f; /**< Digits in number of fonts. */ size_t l_s; /**< Digits in number of strokes. */ size_t l_i; /**< Digits in number of images. */ size_t l_t; /**< Digits in number of texts. */ int ec; /**< Error code (last error). */ int me; /**< Math error. */ int spcpass; /**< Pass of special comment. */ int wr_utf8; /**< Flag: Write texts in UTF-8. */ unsigned char text_right; /**< Flag: right aligned text. */ unsigned char text_centered; /**< Flag: centered text. */ unsigned char h_c; /**< Flag: Have current color. */ unsigned char h_f; /**< Flag: Have current font. */ unsigned long h_s; /**< Flag: Have current stroke. */ } dkfig_java_output_instruction; /** PDF object position. */ typedef struct { unsigned long objno; /**< Object number. */ unsigned long pos; /**< Position in PDF file. */ } dkfig_pdf_object_position; /* Fig object types */ /** Fig object: Color. */ #define DK_FIG_OBJ_COLOR 0 /** Fig object: Ellipse. */ #define DK_FIG_OBJ_ELLIPSE 1 /** Fig object: Polyline. */ #define DK_FIG_OBJ_POLYLINE 2 /** Fig object: Spline. */ #define DK_FIG_OBJ_SPLINE 3 /** Fig object: Text. */ #define DK_FIG_OBJ_TEXT 4 /** Fig object: Arc. */ #define DK_FIG_OBJ_ARC 5 /** Fig object: Compound (group of objects). */ #define DK_FIG_OBJ_COMPOUND 6 /** Fig object: Drawing. */ #define DK_FIG_OBJ_DRAWING 255 /* dkfigopt.c */ #if defined(EXTERN) #undef EXTERN #endif /** Keyword "extern" for all modules except dkfigopt. */ #ifndef DKFIGOPT_C #if !DK_HAVE_PROTOTYPES #define EXTERN extern #else #define EXTERN /* nix */ #endif #else #define EXTERN /* nix */ #endif #if defined(__cplusplus) extern "C" { #endif /** Compare two stored options by line number. @param p1 Pointer to left option structure. @param p2 Pointer to right option structure. @param cr Comparison criteria, 1=pointer/lineno, default=pointer/pointer. @return The comparison result. */ EXTERN int dkfig_opt_compare DK_PR((void *p1, void *p2,int cr)); /** Destroy option structure, release memory. @param o Option structure to destroy. */ EXTERN void dkfig_opt_delete DK_PR((dk_fig_opt *o)); /** Create new option structure. Option structures created by this function must be destroyed using dkfig_opt_delete(). @param number Line number of option in config file. @param text Text line (key = value). @return Pointer to new option structure or NULL. */ EXTERN dk_fig_opt * dkfig_opt_new DK_PR((unsigned long number, char *text)); /** Retrieve text (key = value) from option structure. @param o Option structure. @return The option text. */ EXTERN char * dkfig_opt_get_text DK_PR((dk_fig_opt *o)); /** Process all stored options. Walk through all 4 option storages (general defaults, base driver options, driver options and command line arguments) and apply the settings to the conversion job structure. @param c Conversion job structure. @return 1 on success, 0 on errors. */ EXTERN int dkfig_opt_process_all DK_PR((dk_fig_conversion *c)); /** Process one special comment (either for the entire drawing or before processing an object). @param c Conversion job structure. @param line Special comment. @param dr Driver name. @param atdoclevel Flag: at document level. @return 1 on success, error indicator on error (0=key not found, -1=ignored by the driver, -2=only allowed at document level, -3=errors while processing, -4=driver name not in the list). */ EXTERN int dkfig_opt_process_special_comment DK_PR((dk_fig_conversion *c, char *line, char *dr, int atdoclevel)); /** Retrieve special comment text (key = value) from special comment line (driverlist: key = value). @param line Text line to inspect. @param dr Name of the current driver. @return Pointer to the text on success (Current driver is in the driver list and the line syntax is correct), NULL on error. */ EXTERN char * dkfig_opt_special_comment_contents DK_PR((char *line, char *dr)); /** Show configuration file contents. @param c Conversion job structure. @param fn File name. @return 1 on success, 0 on error. */ EXTERN int dkfig_opt_show_config_file DK_PR((dk_fig_conversion *c, char *fn)); /** Write standard input to new configuration file. @param c Conversion job structure. @param fn File name @return 1 on success, 0 on error. */ EXTERN int dkfig_opt_write_config_file DK_PR((dk_fig_conversion *c, char *fn)); /* only from within the library */ #if DKFIGCO_C #endif #if defined(__cplusplus) } #endif /* dkfigco.c */ #if defined(EXTERN) #undef EXTERN #endif /** Keyword "extern" for all modules except dkfigco. */ #ifndef DKFIGCO_C #if !DK_HAVE_PROTOTYPES #define EXTERN extern #else #define EXTERN /* nix */ #endif #else #define EXTERN /* nix */ #endif #if defined(__cplusplus) extern "C" { #endif /** Clean up conversion job structure before releasing the memory. This function is invoked from dkfig_co_delete() or dkfig_co_new(). @param c Conversion job structure. */ EXTERN void dkfig_co_cleanup DK_PR((dk_fig_conversion *c)); /** Cleanup up and release conversion job structure. @param c Conversion job structure. */ EXTERN void dkfig_co_delete DK_PR((dk_fig_conversion *c)); /** Initialize newly created conversion job structure, use default values and preferences obtained from \arg a. @param c New conversion job structure. @param a Application structure. @return 1 on success, 0 on error. */ EXTERN int dkfig_co_init DK_PR((dk_fig_conversion *c, dk_app_t *a)); /** Allocate new dk_fig_conversion structure and initialize it. @param a Application structure. @return Pointer to new conversion job structure on success, NULL on error. */ EXTERN dk_fig_conversion * dkfig_co_new DK_PR((dk_app_t *a)); /** Apply command line arguments to conversion job. @param c Conversion job structure. @param argc Number of command line arguments. @param argv Command line arguments array. @return 1 on success, 0 on error. */ EXTERN int dkfig_co_apply_args DK_PR((dk_fig_conversion *c, int argc, char **argv)); /** Show current configuration. @param c Configuration job structure. */ EXTERN void dkfig_co_showconf_app DK_PR((dk_fig_conversion *c)); /** Save current configuration. @param c Conversion job structure. @return 1 on success, 0 on error. */ EXTERN int dkfig_co_configure_app DK_PR((dk_fig_conversion *c)); /** Add input stream contents to drawing. @param c Conversion job structure @return 1 on success, 0 on error. */ EXTERN int dkfig_co_add_stream DK_PR((dk_fig_conversion *c)); /** Load configuration file, process options and run conversion. @param c Conversion job structure. @return 1 on success, 0 on error. */ EXTERN int dkfig_co_run DK_PR((dk_fig_conversion *c)); /** Show the contents of the used configuration file on standard output. A GUI wrapped around fig2vect may run "fig2vect --configuration-file" to see the driver configurations and the configuration settings. @param c Conversion job structure. @return 1 on success, 0 on error. */ EXTERN int dkfig_co_show_config_file DK_PR((dk_fig_conversion *c)); /** Save a configuration file read from standard input as user-specific configuration file. A GUI wrapped around fig2vect may allow the user to create driver configurations and passes the configuration file contents as standard input to "fig2vect --write-configuration-file". @param c Conversion job structure. @return 1 on success, 0 on error. */ EXTERN int dkfig_co_write_config_file DK_PR((dk_fig_conversion *c)); #if defined(__cplusplus) } #endif /* dkfigrd.c */ #if defined(EXTERN) #undef EXTERN #endif /** Keyword "extern" for all modules except dkfigrd. */ #ifndef DKFIGRD_C #if !DK_HAVE_PROTOTYPES #define EXTERN extern #else #define EXTERN /* nix */ #endif #else #define EXTERN /* nix */ #endif #if defined(__cplusplus) extern "C" { #endif /** Compare two Fig objects. Comparison by layer number (largest layer number is lowest layer), object type, line style and source file line number. @param l Left object. @param r Right object. @param cr Comparison criteria. @return The comparison result. */ EXTERN int dkfig_object_compare DK_PR((void *l, void *r, int cr)); /** Compare two color cells. @param l Left color cell. @param r Right color cell or color number. @param cr Comparison criteria (1=color/number, default=color/color). @return The comparison result. */ EXTERN int color_cell_compare DK_PR((void *l, void *r, int cr)); /** Delete color cell, release memory. @param cc Color cell. */ EXTERN void dkfig_delete_color_cell DK_PR((dk_fig_colorcell *cc)); /** Create Fig object structure. @param l Line number in source file. @param p Parent object (drawing or compound). @param st Storage for special comments. @param it Iterator for special comments storage. @return Pointer to new object on success, NULL on error. */ EXTERN dk_fig_object * dkfig_object_new DK_PR((unsigned long l,dk_fig_object *p, dk_storage_t *st, dk_storage_iterator_t *it)); /** Create new color cell structure. @param n Color number. @param r Red component. @param g Green component. @param b Blue component. @return Pointer to new structure on success, NULL on error. */ EXTERN dk_fig_colorcell * dkfig_new_color_cell DK_PR((int n,int r,int g,int b)); /** Destroy drawing object including all contents. @param o Drawing root object. */ EXTERN void dkfig_delete DK_PR((dk_fig_object *o)); /** Create Fig object for entire drawing. @param uwp Flag: Use web-optimized color palette. @return Pointer to new object on success, NULL on error. */ EXTERN dk_fig_object * dkfig_new DK_PR((int uwp)); /** Add one line to drawing structure. @param o Fig drawing root object. @param b Buffer containing the line to add. @param c Conversion job structure. @return 1 on success, 0 on error. */ EXTERN int dkfig_read_add_line DK_PR((dk_fig_object *o,char *b, dk_fig_conversion *c)); /** Handle end of input. Check parser state (last object must be finished) and prepare some structures for text handling. @param o Fig drawing root object. @param n Text handling type for normal texts. @param s Text handling type for special texts. @param c Conversion job structure. @return 1 on success, 0 on error. */ EXTERN int dkfig_read_input_finished DK_PR((dk_fig_object *o, int n, int s, dk_fig_conversion *c)); /** Retrieve object line number (the line number in which the object was started). @param o Fig object structure. @return The line number. */ EXTERN unsigned long dkfig_rd_get_lineno DK_PR((dk_fig_object *o)); /** Retrieve line number of last error. @param o Drawing root object. @return The line number. */ EXTERN unsigned long dkfig_rd_get_errl DK_PR((dk_fig_object *o)); /** Retrieve error code of last error. @param o Drawing root object. @return The error code. */ EXTERN int dkfig_rd_get_errc DK_PR((dk_fig_object *o)); /** Save input file name for later use. @param o Drawing root object. @param n File name. @return 1 on success, 0 on error. */ EXTERN int dkfig_set_input_filename DK_PR((dk_fig_object *o, char *n)); /** Initialize root object to parse input. @param o Drawing root object. @return 1 on success, 0 on error. */ EXTERN int dkfig_read_prepare_for_input DK_PR((dk_fig_object *o)); /** Set number of Bezier spline segments per X-spline segment. @param o Drawing root object. @param n Number of segments. @return 1 on success, 0 on error. */ EXTERN int dkfig_set_spline_segments DK_PR((dk_fig_object *o, size_t n)); /** Set options to drawing. @param d Fig drawing structure. @param o Options as obtained from conversion job structure. */ EXTERN void dkfig_rd_set_opts DK_PR((dk_fig_drawing *d, unsigned long o)); /** Set arrowhead line join. @param d Fig drawing structure. @param ahlj The arrowhead line join. */ EXTERN void dkfig_rd_set_ahlj DK_PR((dk_fig_drawing *d, int ahlj)); /** Create flattened container of Fig objects in order of drawing. @param c Conversion job structure. @param o Drawing root object. */ EXTERN dk_storage_t * dkfig_flat_list DK_PR((dk_fig_conversion *c, dk_fig_object *o)); /** Set minimum and maximum number of iteration steps for arrowhead length on splines calculation. @param d Fig drawing structure. @param min Mininum number of steps. @param max Maximum number of steps. */ EXTERN void dkfig_rd_set_it_steps DK_PR((dk_fig_drawing *d, unsigned long min, unsigned long max)); #if defined(__cplusplus) } #endif /* dkfigeps.c */ #if defined(EXTERN) #undef EXTERN #endif /** Keyword "extern" for all modules except dkfigeps. */ #ifndef DKFIGEPS_C #if !DK_HAVE_PROTOTYPES #define EXTERN extern #else #define EXTERN /* nix */ #endif #else #define EXTERN /* nix */ #endif #if defined(__cplusplus) extern "C" { #endif /** EPS output driver function. @param c Conversion job structure. @return 1 on success, 0 on error. */ EXTERN int dkfig_output_eps DK_PR((dk_fig_conversion *c)); /** PS output driver function. @param c Conversion job structure. @return 1 on success, 0 on error. */ EXTERN int dkfig_output_ps DK_PR((dk_fig_conversion *c)); /** TeX output driver function. @param c Conversion job structure. @return 1 on success, 0 on error. */ EXTERN int dkfig_output_tex DK_PR((dk_fig_conversion *c)); /** Bounding box output driver function. @param c Conversion job structure. @return 1 on success, 0 on error. */ EXTERN int dkfig_output_bb DK_PR((dk_fig_conversion *c)); /** Correct a color cell for using a web optimized color palette. @param dcc Color cell to correct. */ EXTERN void dkfig_eps_correct_for_palette DK_PR((dk_fig_dcc *dcc)); #if defined(__cplusplus) }; #endif /* dkfigpdf.c */ #if defined(EXTERN) #undef EXTERN #endif /** Keyword "extern" for all modules except dkfigpdf. */ #ifndef DKFIGPDF_C #if !DK_HAVE_PROTOTYPES #define EXTERN extern #else #define EXTERN /* nix */ #endif #else #define EXTERN /* nix */ #endif #if defined(__cplusplus) extern "C" { #endif /** PDF output driver function. @param c Conversion job structure. @return 1 on success, 0 on error. */ EXTERN int dkfig_output_pdf DK_PR((dk_fig_conversion *c)); #if defined(__cplusplus) } #endif /* dkfigmp.c */ #if defined(EXTERN) #undef EXTERN #endif /** Keyword "extern" for all modules except dkfigmp. */ #ifndef DKFIGMP_C #if !DK_HAVE_PROTOTYPES #define EXTERN extern #else #define EXTERN /* nix */ #endif #else #define EXTERN /* nix */ #endif #if defined(__cplusplus) extern "C" { #endif /** MMP (Multi-MetaPost) output driver function. @param c Conversion job structure. @return 1 on success, 0 on error. */ EXTERN int dkfig_output_mmp DK_PR((dk_fig_conversion *c)); /** MetaPost output driver function. @param c Conversion job structure. @return 1 on success, 0 on error. */ EXTERN int dkfig_output_mp DK_PR((dk_fig_conversion *c)); #if defined(__cplusplus) } #endif /* dkfigsvg.c */ #if defined(EXTERN) #undef EXTERN #endif /** Keyword "extern" for all modules except dkfigsvg. */ #ifndef DKFIGSVG_C #if !DK_HAVE_PROTOTYPES #define EXTERN extern #else #define EXTERN /* nix */ #endif #else #define EXTERN /* nix */ #endif #if defined(__cplusplus) extern "C" { #endif /** SVG output driver function. @param c Conversion job structure. @return 1 on success, 0 on error. */ EXTERN int dkfig_output_svg DK_PR((dk_fig_conversion *c)); #if defined(__cplusplus) } #endif /* dkfigfnt.c */ #if defined(EXTERN) #undef EXTERN #endif /** Keyword "extern" for all modules except dkfigfnt. */ #ifndef DKFIGFNT_C #if !DK_HAVE_PROTOTYPES #define EXTERN extern #else #define EXTERN /* nix */ #endif #else #define EXTERN /* nix */ #endif #if defined(__cplusplus) extern "C" { #endif #if VERSION_BEFORE_2004_08_19 /** Get LaTeX font name for a given index. @param number Font index. @return The LaTeX name of the font. */ EXTERN char * dkfig_fnt_get_tex_name DK_PR((size_t number)); /** Get PS font name for a given index. @param number Font index. @return The LaTeX name of the font. */ EXTERN char * dkfig_fnt_get_ps_name DK_PR((size_t number)); #endif /** Compare two font handling structure. Comparison by handling type, font number, font size, original font number and font flags. @param pl Left font handling structure. @param pr Right font handling structure. @param cr Comparison criteria (ignored). @return The comparison result. */ EXTERN int dkfig_fnt_comp_fonth DK_PR((void *pl, void *pr, int cr)); /** Fill font handling structure to match requirements of a Fig text object. @param f Destination font handling structure. @param n Text handling type for normal texts. @param s Text handling type for special texts. @param t Fig text object. */ EXTERN void dkfig_fnt_fonth_for_text DK_PR((dk_fig_fonth_t *f, int n, int s, dk_fig_text *t)); /** Create new font handling structure. @return Pointer to new structure on success, NULL on error. */ EXTERN dk_fig_fonth_t * dkfig_fnt_new_fonth DK_PR((void)); /** Create a copy of a font handling structure. @param f Source font handling structure. @return Pointer to new copy on success, NULL on error. */ EXTERN dk_fig_fonth_t * dkfig_fnt_copy_fonth DK_PR((dk_fig_fonth_t *f)); /** Delete font handling structure, release memory. @param f Font handling structure to delete. */ EXTERN void dkfig_fnt_del_fonth DK_PR((dk_fig_fonth_t *f)); #if defined(__cplusplus) } #endif /* dkfigdt.c */ #if defined(EXTERN) #undef EXTERN #endif /** Keyword "extern" for all modules except dkfigdt. */ #ifndef DKFIGDT_C #if !DK_HAVE_PROTOTYPES #define EXTERN extern #else #define EXTERN /* nix */ #endif #else #define EXTERN /* nix */ #endif #if defined(__cplusplus) extern "C" { #endif /** Write LaTeX preamble to a stream. @param c Conversion job structure. @param os Output stream. @return 1 on success, 0 on error. */ EXTERN int dkfig_dt_tex_preamble DK_PR((dk_fig_conversion *c, dk_stream_t *os)); /** Check whether or not the font handling requires LaTeX/TeX. @param fhptr Font handling structure. @return 1 if LaTeX or TeX is needed, 0 if not. */ EXTERN int dkfig_dt_is_latex_text DK_PR((dk_fig_fonth_t *fhptr)); /** Find number of characters needed to string encode a number. @param num Number to encode. @return Needed string length. */ EXTERN size_t dkfig_dt_needed_alpha DK_PR((unsigned long num)); /** Write a font name to output stream. The font number is encoded as character sequence. @param os Output stream. @param drw Fig drawing structure. @param fhptr Font handling structure. */ EXTERN void dkfig_dt_write_fontname DK_PR((dk_stream_t *os, dk_fig_drawing *drw, dk_fig_fonth_t *fhptr)); /** Write LaTeX commands for font definitions to output stream. @param c Conversion job structure. @param os Output stream. @return 1 on success, 0 on error. */ EXTERN int dkfig_dt_font_defs DK_PR((dk_fig_conversion *c, dk_stream_t *os)); /** Write begin{document} to output stream. @param c Conversion job structure. @param os Output stream. */ EXTERN void dkfig_dt_begin_document DK_PR((dk_fig_conversion *c, dk_stream_t *os)); /** Check whether or not there is any text in the drawing requiring the use of LaTeX/TeX. @param c Conversion job structure. @return Test result (1=LaTeX/TeX needed, 0=not needed). */ EXTERN int dkfig_dt_need_tex_file DK_PR((dk_fig_conversion *c)); /** Write LaTeX/TeX file and run LaTeX/TeX. @param c Conversion job structure. @param d Fig drawing structure. @param it Iterator to flattened Fig objects container. @return 1 on success, 0 on error. */ EXTERN int dkfig_dt_run_tex DK_PR((dk_fig_conversion *c, dk_fig_drawing *d, dk_storage_iterator_t *it)); /** Write end{document} sequence to output stream. @param c Conversion job structure. @param os Output stream. */ EXTERN void dkfig_dt_end_document DK_PR((dk_fig_conversion *c, dk_stream_t *os)); /** Write LaTeX commands for font definitions to output stream. @param c Conversion job structure. @param os Output stream. @param r Flag: redefinition (1) or definition (0). @return 1 on success, 0 on error. */ EXTERN int dkfig_dt_font_redef DK_PR((dk_fig_conversion *c, dk_stream_t *os, int r)); #if defined(__cplusplus) } #endif #if VERSION_BEFORE_2009_04_23 /* lat2lat */ #if defined(EXTERN) #undef EXTERN #endif /** Keyword "extern" for all modules except lat2lat. */ #ifndef LAT2LAT_C #if !DK_HAVE_PROTOTYPES #define EXTERN extern #else #define EXTERN /* nix */ #endif #else #define EXTERN /* nix */ #endif #if defined(__cplusplus) extern "C" { #endif EXTERN char * dkfig_l2l_encoding DK_PR((char c)); #if defined(__cplusplus) } #endif #endif /* VERSION_BEFORE_2009_04_23 */ /* dkfigtoo */ #if defined(EXTERN) #undef EXTERN #endif /** Keyword "extern" for all modules except dkfigtoo. */ #ifndef DKFIGTOO_C #if !DK_HAVE_PROTOTYPES #define EXTERN extern #else #define EXTERN /* nix */ #endif #else #define EXTERN /* nix */ #endif #if defined(__cplusplus) extern "C" { #endif /** Check whether or not to invert y coordinates. @param d Fig drawing structure. @return Test result (1=invert, 0=do not invert). */ EXTERN int dkfig_tool_invert_y DK_PR((dk_fig_drawing *d)); /** Initialize arrowhead structure. @param a Arrowhead structure. */ EXTERN void dkfig_tool_null_arrow DK_PR((dk_fig_arrow *a)); /** Calculate arrowhead polygon points. @param a Arrowhead structure (destination). @param p Arrowhead end point. @param phi Direction at the end of line. @param f Objects filling, pattern and drawing. @param d Fig drawing structure. @param c Conversion job structure. @return 1 on success, 0 on error. */ EXTERN int dkfig_tool_calc_arrow DK_PR((dk_fig_arrow *a, dk_fig_point *p, double phi, dk_fig_fpd *f, dk_fig_drawing *d, dk_fig_conversion *c)); /** Initialize a fill, pattern and drawing structure. @param p Structure to initialize. */ EXTERN void dkfig_tool_null_fpd DK_PR((dk_fig_fpd *p)); /** Correct all font handling structures for use with plain TeX. @param c Conversion job structure. */ EXTERN void dkfig_tool_correct_for_plain_tex DK_PR((dk_fig_conversion *c)); /** Initialize a bounding box structure. @param bb Structure to initialize. */ EXTERN void dkfig_tool_bb_reset DK_PR((dk_fig_bb *bb)); /** Add x value to bounding box. @param bb Bounding box structure. @param x X value to add. */ EXTERN void dkfig_tool_bb_add_x DK_PR((dk_fig_bb *bb, double x)); /** Add y value to bounding box. @param bb Bounding box structure. @param y Y value to add. */ EXTERN void dkfig_tool_bb_add_y DK_PR((dk_fig_bb *bb, double y)); /** Get minimum x value from bounding box structure. @param bb Bounding box structure. @return Minimum x value. */ EXTERN double dkfig_tool_bb_get_xmin DK_PR((dk_fig_bb *bb)); /** Get maximum x value from bounding box structure. @param bb Bounding box structure. @return Maximum x value. */ EXTERN double dkfig_tool_bb_get_xmax DK_PR((dk_fig_bb *bb)); /** Get minimum y value from bounding box structure. @param bb Bounding box structure. @return Minimum y value. */ EXTERN double dkfig_tool_bb_get_ymin DK_PR((dk_fig_bb *bb)); /** Get maximum y value from bounding box structure. @param bb Bounding box structure. @return Maximum y value. */ EXTERN double dkfig_tool_bb_get_ymax DK_PR((dk_fig_bb *bb)); /** Check: X values available in bounding box structure. @param bb Bounding box structure. @return Check result (1=values available, 0=no values). */ EXTERN int dkfig_tool_bb_have_x DK_PR((dk_fig_bb *bb)); /** Check: Y values available in bounding box structure. @param bb Bounding box structure. @return Check result (1=values available, 0=no values). */ EXTERN int dkfig_tool_bb_have_y DK_PR((dk_fig_bb *bb)); /** Add object bounding box to drawing bounding box. @param dest Destination bounding box (drawing). @param src Source bounding box (object). */ EXTERN void dkfig_tool_bb_add DK_PR((dk_fig_bb *dest, dk_fig_bb *src)); /** Calculate bounding box for an arc in mathematical coordinates (positive y grow upwards). @param arc Arc calculation structure. */ EXTERN void dkfig_tool_arc_calc DK_PR((dk_fig_arc_calc *arc)); /** Calculate bounding box for an arc in mathematical coordinates (positive y grow upwards). @param o Arc object. @param d Fig drawing structure. */ EXTERN void dkfig_tool_bb_arc DK_PR((dk_fig_object *o, dk_fig_drawing *d)); /** Calculate bounding box for polyline object. @param o Polyline object. @param d Fig drawing structure. */ EXTERN void dkfig_tool_bb_polyline DK_PR((dk_fig_object *o, dk_fig_drawing *d)); /** Calculate bounding box for an ellipse object. @param o Ellipse object. @param d Fig drawing structure. */ EXTERN void dkfig_tool_bb_ellipse DK_PR((dk_fig_object *o, dk_fig_drawing *d)); /** Calculate bounding box for a spline object. @param o Spline object. @param d Fig drawing structure. */ EXTERN void dkfig_tool_bb_spline DK_PR((dk_fig_object *o, dk_fig_drawing *d)); /** Distance between point (xp,yp) and line (0,0)--(x0,y0). @param xp Point x value. @param yp Point y value. @param x0 Line endpoint x value. @param y0 Line endpoint y value. @return Distance between point and line. */ EXTERN double dkfig_tool_dist_pt_to_line0 DK_PR((double xp,double yp,double x0,double y0)); /** Calculate width and height of a rotated ellipse. The ellipse parameters rx, ry and phi0 (radians) are used as calculation input, output is stored in w and h (center to right, center to top). @param e Ellipse object. */ EXTERN void dkfig_tool_rotated_ellipse DK_PR((dk_fig_rot_ellipse *e)); /** Final step in spline processing: Shorten spline if necessary for arrowheads. @param o Spline object. @param d Fig drawing object. @param c Conversion job structure. */ EXTERN int dkfig_tool_build_one_spline DK_PR((dk_fig_object *o, dk_fig_drawing *d, dk_fig_conversion *c)); /** Initialize arc calculation structure. @param c Arc calculation structure. */ EXTERN void dkfig_tool_null_arc_calc DK_PR((dk_fig_arc_calc *c)); /** Invert the y values of the points. @param c Arc calculation structure. */ EXTERN void dkfig_tool_invert_arc_calc DK_PR((dk_fig_arc_calc *c)); /** Swap arrowheads on an arc. MetaPost requires to draw arcs in positive (counterclockwise) direction. If an arc is specified in clockwise direction to use "fill arrowhead p withcolor ...". @param fpd Fill, pattern and draw structure. */ EXTERN void dkfig_tool_swap_arrows DK_PR((dk_fig_fpd *fpd)); /** Final processing step on arcs: Shorten arc for arrowheads if necessary. @param o Arc object. @param d Fig drawing structure. @param c Conversion job structure. @return 1 on success, 0 on error. */ EXTERN int dkfig_tool_arc_complete DK_PR((dk_fig_object *o, dk_fig_drawing *d, dk_fig_conversion *c)); /** Final processing step on polylines: Shorten line for arrowheads if necessary. @param o Polyline object. @param d Fig drawing structure. @param c Conversion job structure. @return 1 on success, 0 on error. */ EXTERN int dkfig_tool_polyline_complete DK_PR((dk_fig_object *o, dk_fig_drawing *d, dk_fig_conversion *c)); /** Fill color cell structure by retrieving data from Fig drawing color cell. @param d Fig drawing structure. @param dcc Destination color cell. @param n Color cell number. */ EXTERN void dkfig_tool_fill_dcc DK_PR((dk_fig_drawing *d, dk_fig_dcc *dcc, int n)); /** Correct a color cell structure for an object's area fill style (brightness, patterns...) @param dcc Color cell. @param colno Color number. @param af Object's area fill style. */ EXTERN void dkfig_tool_correct_dcc DK_PR((dk_fig_dcc *dcc, int colno, int af)); /** Check whether an object must be filled. @param area_fill Object's area fill style. @param opt Object options, checked for DKFIG_OPT_FILL_PATTERNS. @return Test result (1=must fill, 0=no fill). */ EXTERN int dkfig_tool_must_fill DK_PR((int area_fill, unsigned long opt)); /** Check whether or not we need to draw fill patterns. @param area_fill Object's area fill style. @param opt Object options, checked for DKFIG_OPT_FILL_PATTERNS. @return Test result (1=must pattern fill, 0=no fill). */ EXTERN int dkfig_tool_must_pattern DK_PR((int area_fill, unsigned long opt)); /** Write number encoded as string. @param os Output stream to write to. @param no Number value. @param lgt String length. @return 1 on success, 0 on errors. */ EXTERN int dkfig_tool_num_as_string DK_PR((dk_stream_t *os, unsigned long no, size_t lgt)); /** Remove temporary files used for special text processing. @param c Conversion job structure. */ EXTERN void dkfig_tool_delete_tex_files DK_PR((dk_fig_conversion *c)); /** Initialize NetPBM library. @param c Conversion job structure. */ EXTERN void dkfig_tool_init_netpbm DK_PR((dk_fig_conversion *c)); #if defined(__cplusplus) } #endif /* dkfigto2 */ #if defined(EXTERN) #undef EXTERN #endif /** Keyword "extern" for all modules except dkfigto2. */ #ifndef DKFIGTO2_C #if !DK_HAVE_PROTOTYPES #define EXTERN extern #else #define EXTERN /* nix */ #endif #else #define EXTERN /* nix */ #endif #if defined(__cplusplus) extern "C" { #endif /** Create storage container to store image width data. @return Pointer to new storage on success, NULL on error. */ EXTERN dk_storage_t * dkfig_tool2_image_width_storage DK_PR((void)); /** Find width structure for given image attributes. @param it Image width data storage iterator. @param width Image width. @param height Image height. @param colored Flag: Colored. @param seprgb Flag: Separated color channels. @param fl Flip information. @return Pointer to image width structure on success, NULL on error. */ EXTERN dkfig_bitmap_width * dkfig_tool2_find_entry_for_width DK_PR((dk_storage_iterator_t *it, long width, long height, int colored, int seprgb, int fl)); /** Add image width structure to storage. @param st Image width data storage. @param it Image width data storage iterator. @param width Image width. @param height Image height. @param colored Flag: Colored. @param seprgb Flag: Separated color channels. @param fl Flip information. @return 1 on success, 0 on error. */ EXTERN int dkfig_tool2_add_image_width DK_PR((dk_storage_t *st, dk_storage_iterator_t *it, long width, long height, int colored, int seprgb, int fl)); /** Error message: constant text, variable text and constant text. @param c Conversion job structure. @param i1 First constant text index. @param i2 Second constant text index. @param fn Variable text. */ EXTERN void dkfig_tool2_combined_error_message DK_PR((dk_fig_conversion *c, size_t i1, size_t i2, char *fn)); /** Error message: One constant text. @param c Conversion job structure. @param i Text index. */ EXTERN void dkfig_tool2_simple_error_message DK_PR((dk_fig_conversion *c, size_t i)); /** Report why the special comment can not be used. @param c Conversion job structure. @param speccom Special comment/option structure. @param i Failure reason. */ EXTERN void dkfig_tool2_report_special_comment DK_PR((dk_fig_conversion *c, dk_fig_opt *speccom, int i)); /** Report unused options. @param c Conversion job structure. */ EXTERN void dkfig_tool2_report_unused_options DK_PR((dk_fig_conversion *c)); /** Retrieve image size. @param c Conversion job structure. @param fn Image file name. @param w Pointer to width result variable. @param h Pointer to height result variable. @return 1 on success, 0 on error. */ EXTERN int dkfig_tool2_get_image_size DK_PR((dk_fig_conversion *c, char *fn, unsigned long *w, unsigned long *h)); /** Check whether or not an object is a background rectangle. @param o Object to inspect. @param wbgr Flag: Background rectangle uses color white instead of default. @return 1=true, 0=false. */ EXTERN int dkfig_tool2_obj_is_bg_rect DK_PR((dk_fig_object *o, int wbgr)); /** Error output function for the EPS driver. @param oi EPS output instruction structure. @param i Index of error message. */ EXTERN void dkfig_tool2_eps_error_message DK_PR((dkfig_eps_output_instruction *oi, size_t i)); /** Error output function for the SVG driver. @param oi SVG output instruction structure. @param i Index of error message. */ EXTERN void dkfig_tool2_svg_error_message DK_PR((dkfig_svg_output_instruction *oi, size_t i)); /** Progress message. @param c Conversion job structure. @param i Message index. */ EXTERN void dkfig_tool2_simple_progress_message DK_PR((dk_fig_conversion *c, size_t i)); /** Double round with specified number of digits. @param v Value to round. @param c Conversion job structure. @param w Rounding type (1=coordinate, 2=coordinate obtained from trigonometric calculation, default=color). */ EXTERN double dkfig_tool2_drd DK_PR((double v, dk_fig_conversion *c, int w)); /** Retrieve UTF-8 enabled/disabled setting from LANG environment variable. @param c Conversion job structure. @return 1 on success (LANG environment var found), 0 on error. */ EXTERN int dkfig_tool2_utf8_auto DK_PR((dk_fig_conversion *c)); /** Enable/disable UTF-8. @param c Conversion job structure. @param v Text containing either a boolean or "auto". @param allow_auto Flag: Allow automatic detection of UTF-8 setting. @return 1 on success (tests found a result), 0 on error. */ EXTERN int dkfig_tool2_set_utf8 DK_PR((dk_fig_conversion *c, char *v, int allow_auto)); /** Write LaTeX representation of UTF-8 encoded string to output stream. @param os Output stream. @param c Conversion job structure. @param t UTF-8 encoded string. */ EXTERN void dkfig_tool2_utf8_to_latex DK_PR((dk_stream_t *os, dk_fig_conversion *c, char *t)); /** Log message consisting of 2 constant parts and a variable one. @param c Conversion job structure. @param l Log level (DK_LOG_LEVEL_xxx). @param s1 Index of first (constant) part. @param s2 Index of third (constant) part. @param t Second (variable) part of the message. */ EXTERN void dkfig_tool2_msg3 DK_PR((dk_fig_conversion *c, int l, size_t s1, size_t s2, char *t)); /** Log message. @param c Conversion job structure. @param l Log level (DK_LOG_LEVEL_xxx). @param s1 Index of message text. */ EXTERN void dkfig_tool2_msg1 DK_PR((dk_fig_conversion *c, int l, size_t s1)); /** Create font mapping from file. @param c Conversion structure. @return Pointer to font mapping on success, NULL on error. */ EXTERN dk_font_mapping_t * dkfig_tool2_read_font_mapping DK_PR((dk_fig_conversion *c)); #if defined(__cplusplus) } #endif /* dkfigei */ #if defined(EXTERN) #undef EXTERN #endif /** Keyword "extern" for all modules except dkfigei. */ #ifndef DKFIGEI_C #if !DK_HAVE_PROTOTYPES #define EXTERN extern #else #define EXTERN /* nix */ #endif #else #define EXTERN /* nix */ #endif #if defined(__cplusplus) extern "C" { #endif /** Delete image information used by EPS driver. @param i Image information. */ EXTERN void dkfig_eps_image_info_delete DK_PR((dkfig_eps_image_info *i)); /** Create image information used by EPS driver. @param fn Name of image file. @return Pointer to new image information on success, NULL on error. */ EXTERN dkfig_eps_image_info * dkfig_eps_image_info_new DK_PR((char *fn)); /** Attach an information to an object. For each object showing an image we have to store width/height/colors/bits per components. @param oi EPS output instruction structure. @param o Current object. @return 1 on success, 0 on error. */ EXTERN int dkfig_eps_attach_image_info DK_PR((dkfig_eps_output_instruction *oi, dk_fig_object *o)); /** Check whether or not we can use separated color streams for an image. @param w Image width. @param h Image height. @return 1=Yes, we can 0=No we can't. */ EXTERN int dkfig_ei_check_separated_strings DK_PR((unsigned long w, unsigned long h)); /** Get image type. @param fn Image file name. @return 0=ps/eps, 1=png, 2=jpg, 3=NetPBM. */ EXTERN int dkfig_ei_get_image_type DK_PR((char *fn)); #if defined(__cplusplus) } #endif /* dkfigpi */ #if defined(EXTERN) #undef EXTERN #endif /** Keyword "extern" for all modules except dkfigpi. */ #ifndef DKFIGPI_C #if !DK_HAVE_PROTOTYPES #define EXTERN extern #else #define EXTERN /* nix */ #endif #else #define EXTERN /* nix */ #endif #if defined(__cplusplus) extern "C" { #endif /** Prepare to show image. @param oi PDF output instruction structure. @return 1 on success, 0 on error. */ EXTERN int dkfigpi_prepare_image DK_PR((dkfig_pdf_output_instruction *oi)); #if defined(__cplusplus) } #endif /* dkfigjav */ #if defined(EXTERN) #undef EXTERN #endif /** Keyword "extern" for all modules except dkfigjav. */ #ifndef DKFIGJAV_C #if !DK_HAVE_PROTOTYPES #define EXTERN extern #else #define EXTERN /* nix */ #endif #else #define EXTERN /* nix */ #endif #if defined(__cplusplus) extern "C" { #endif EXTERN int dkfig_output_java DK_PR((dk_fig_conversion *c)); #if defined(__cplusplus) } #endif /** Command: Run conversion */ #define DKFIG_WHAT_RUN 0 /** Command: Show version. */ #define DKFIG_WHAT_VERSION 1 /** Command: Show help text. */ #define DKFIG_WHAT_HELP 2 /** Command: Save configuration settings. */ #define DKFIG_WHAT_CONFIGURE 4 /** Command: Delete saved configuration settings. */ #define DKFIG_WHAT_UNCONFIGURE 8 /** Command: Show current configuration. */ #define DKFIG_WHAT_SHOWCONF 16 /** Command: Error occured, show error message and help text. */ #define DKFIG_WHAT_ERROR 32 /** Command: Show configuration file contents. */ #define DKFIG_WHAT_CONFIG_FILE 64 /** Command: Save new configuration file contents. */ #define DKFIG_WHAT_WRITE_CONFIG_FILE 128 /** Command group: All application commands. */ #define DKFIG_WHAT_APP (\ DKFIG_WHAT_VERSION \ | DKFIG_WHAT_HELP \ | DKFIG_WHAT_CONFIGURE \ | DKFIG_WHAT_UNCONFIGURE \ | DKFIG_WHAT_SHOWCONF \ | DKFIG_WHAT_CONFIG_FILE \ | DKFIG_WHAT_WRITE_CONFIG_FILE \ ) /* The opt1 field. */ /** Options (1): Reset all options to built-in defaults. */ #define DKFIG_OPT_RESET 0x00000001UL /** Options (1): Make mode. */ #define DKFIG_OPT_MAKE 0x00000002UL /** Options (1): Use TeX, not LaTeX. */ #define DKFIG_OPT_OLD_TEX 0x00000004UL /** Options (1): Do not embed fonts (MetaPost driver). */ #define DKFIG_OPT_NO_EMBEDDED_FONTS 0x00000008UL /** Options (1): Use web-optimized color palette. */ #define DKFIG_OPT_WEB_PALETTE 0x00000010UL /** Options (1): use coordiantes system settings from Fig file. */ #define DKFIG_OPT_USE_CS_SETTING 0x00000020UL /** Options (1): Enlighten look (half line size only). */ #define DKFIG_OPT_ENLIGHTEN_LOOK 0x00000040UL /** Options (1): Write additional comments to output file. */ #define DKFIG_OPT_VERBOSE_OUTPUT 0x00000080UL /** Options (1): Remove zero linewidth borders. */ #define DKFIG_OPT_REMOVE_THIN_BORDERS 0x00000100UL /** Options (1): Use MetaPost arrowheads (MetaPost driver). */ #define DKFIG_OPT_METAPOST_ARROWHEADS 0x00000200UL /** Options (1): Allow use of fill patterns. */ #define DKFIG_OPT_FILL_PATTERNS 0x00000400UL /** Options (1): Fill patterns of neighboured objects are contiguous. */ #define DKFIG_OPT_FILL_CONTIGOUS 0x00000800UL /** Options (1): When running LaTeX, specify enable/disable write18 (unused). */ #define DKFIG_OPT_SPECIFY_WRITE18 0x00001000UL /** Options (1): When running LaTeX, enable write18 (unused). */ #define DKFIG_OPT_ENABLE_WRITE18 0x00002000UL /** Options (1): PS showpage operator allowed. */ #define DKFIG_OPT_USE_PS_SHOWPAGE 0x00004000UL /** Options (1): After running TeX/LaTeX do not delete *.tex files (unused). */ #define DKFIG_OPT_KEEP_TEX_FILES 0x00008000UL /** Options (1): Flag "NetPBM initialized". */ #define DKFIG_OPT_NETPBM_INITIALIZED 0x00010000UL /** Options (1): Allow PS run-length compression. */ #define DKFIG_OPT_ALLOW_PSRL 0x00020000UL /** Options (1): use separated channels for RGB. */ #define DKFIG_OPT_SEPARATED_RGB 0x00040000UL /** Options (1): Remove border around bitmap images. */ #define DKFIG_OPT_REMOVE_BITMAP_BORDER 0x00080000UL /** Options (1): Keep aspect ration when scaling bitmap images. */ #define DKFIG_OPT_KEEP_BITMAP_WH_RATIO 0x00100000UL /** Options (1): Fill bitmap area using the fill color. */ #define DKFIG_OPT_FILL_BITMAP_AREA 0x00200000UL /** Options (1): Use separated PostScript dictionary for image. */ #define DKFIG_OPT_BITMAP_DICTIONARY 0x00400000UL /** Options (1): In PostScript suggest garbage collection after image. */ #define DKFIG_OPT_GARBAGE_COLLECTION 0x00800000UL /** Options (1): Use CSS for styling SVG objects. */ #define DKFIG_OPT_USE_CSS 0x01000000UL /** Options (1): For SVG produce partial file for embedding to XML files. */ #define DKFIG_OPT_SVG_EMBEDDED 0x02000000UL /** Options (1): Show warning about special text multiple times (for each occurance). */ #define DKFIG_OPT_REPORT_MULTIPLE 0x04000000UL /** Options (1): Ignore unknown paper size. */ #define DKFIG_OPT_IGNORE_UNKNOWN_PAPER 0x08000000UL /** Options (1): Prepare SVG output for modifications (do not use CSS). */ #define DKFIG_OPT_PREPARE_FOR_MODS 0x10000000UL /** Options (1): For dashed lines, a dot has linewidth length instead of 0. */ #define DKFIG_OPT_DP_DOT_LW 0x20000000UL /** Options (1): Write TeX/LaTeX command to start of output (MetaPost driver). */ #define DKFIG_OPT_WR_TEX_COMMAND 0x40000000UL /** Options (1): Do not draw the background rectangle. */ #define DKFIG_OPT_REMOVE_BG_RECTANGLE 0x80000000UL /* The opt2 field. */ /** Options (2): Skip all texts (let TeX/LaTeX handle them). */ #define DKFIG_OPT_SKIP_ALL_TEXTS 0x00000001UL /** Options (2): Use carriage/newline instead of simple newline. */ #define DKFIG_OPT_CRNL 0x00000002UL /** Options (2): Do not compress graphics streams (PDF driver). */ #define DKFIG_OPT_PLAIN_TEXT_STREAMS 0x00000004UL /** Options (2): Open output in full-screen mode (PDF driver). */ #define DKFIG_OPT_FULL_SCREEN 0x00000008UL /** Options (2): Use nonzero fill method, not even-odd (PDF driver). */ #define DKFIG_OPT_FILL_NONZERO 0x00000010UL /** Options (2): Used tiled patterns (PDF driver). */ #define DKFIG_OPT_PDF_PATTERN_TILE 0x00000020UL /** Options (2): Flip objects diagonally. */ #define DKFIG_OPT_FLIP_DIAGONAL 0x00000040UL /** Options (2): Set interpolation flag for bitmap images. */ #define DKFIG_OPT_INTERPOLATE_IMAGES 0x00000080UL /** Options (2): Write full LaTeX source instead of fragment (TeX driver). */ #define DKFIG_OPT_FULL_TEX_FILE 0x00000100UL /** Options (2): Background rectangle uses white color, not default. */ #define DKFIG_OPT_WHITE_BGRECT 0x00000200UL /** Options (2): Use tex command, not latex (TeX driver). */ #define DKFIG_OPT_TEX_DRIVER 0x00000400UL /** Options (2): Use setpagedevice instruction (PS driver). */ #define DKFIG_OPT_SETPAGEDEVICE 0x00000800UL /** Options (2): A unit for font sizes was specified, use it (SVG driver). */ #define DKFIG_OPT_SVG_FONTSIZE_UNIT 0x00001000UL /** Options (2): Text is UTF-8 encoded. */ #define DKFIG_OPT_UTF_8 0x00002000UL /** Options (2): Check LANG environment variable for UTF-8 setting. */ #define DKFIG_OPT_UTF_AUTO 0x00004000UL /** Options (2): Image contains alpha channel data. */ #define DKFIG_OPT_HAVE_ALPHA_CHANNEL 0x00008000UL /** Options (2): Suppress info message about alpha channel in bitmap image. */ #define DKFIG_OPT_SUPPRESS_ALPHA_INFO 0x00010000UL /** Options (2): Write PDF page attributes instruction (TeX driver). */ #define DKFIG_OPT_PDF_PAGE_ATTRIBUTES 0x00020000UL /** Options (2): Fill bounding box white before drawing. */ #define DKFIG_OPT_FILL_BOUNDING_BOX 0x00040000UL /** Options (2): Colored output, not grayscale. */ #define DKFIG_OPT_COLOR 0x00080000UL /** Options (2): Align graphics on paper. */ #define DKFIG_OPT_ALIGN_ON_PAPER 0x00100000UL /** Options (2): Use GS fonts. */ #define DKFIG_OPT_USE_GS_FONTS 0x00200000UL /** Options (2): Use dklibsj Java libraries. */ #define DKFIG_OPT_DKLIBSJ_LIBRARIES 0x00400000UL /** Options (2): Use dklibsj Java libraries for webstart. */ #define DKFIG_OPT_DKLIBSJ_WEBSTART 0x00800000UL /** Options (2): Correct open splines. */ #define DKFIG_OPT_CORRECT_OPEN_SPLINES 0x01000000UL /** Options (2): Write escape sequences. */ #define DKFIG_OPT_JAVA_UNICODE 0x02000000UL /** Horizontal alignment: left. */ #define DKFIG_ALIGN_H_LEFT 0 /** Horizontal alignment: centered. */ #define DKFIG_ALIGN_H_CENTERED 1 /** Horizontal alignment: right. */ #define DKFIG_ALIGN_H_RIGHT 2 /** Vertical alignment: top. */ #define DKFIG_ALIGN_V_TOP 0 /** Vertical alignment: centered. */ #define DKFIG_ALIGN_V_CENTERED 1 /** Vertical alignment: bottom. */ #define DKFIG_ALIGN_V_BOTTOM 2 /** Text handling: Use font as specified in Fig file. */ #define DKFIG_TH_FONT_FIG 1 /** Text handling: Use font with same features as font in Fig file (roman/sans-serif/typewriter, normal/bold, upright/italic). */ #define DKFIG_TH_FONT_SIMILAR 2 /** Text handling: Leave all decisions about the font up to LaTeX/TeX. */ #define DKFIG_TH_FONT_TEX 4 /** Text handling: Mask to find DKFIG_TH_FONT_FIG, DKFIG_TH_FONT_SIMILAR or DKFIG_TH_FONT_TEX. */ #define DKFIG_TH_FONT_MASK 7 /** Text handling: Leave font size decision up to LaTeX/TeX. */ #define DKFIG_TH_SIZE_FIG 8 /** Text handling: LaTeX/TeX font name, not PS ... font name. */ #define DKFIG_TH_HANDLING 16 /** Text handling: Enclose text label in \mbox{} instruction. */ #define DKFIG_TH_MBOX 32 /** Base driver: MetaPost. */ #define DKFIG_BD_MP 0 /** Base driver: MPS (unused). */ #define DKFIG_BD_MPS 1 /** Base driver: EPS. */ #define DKFIG_BD_EPS 2 /** Base driver: SVG. */ #define DKFIG_BD_SVG 3 /** Base driver: PDF. */ #define DKFIG_BD_PDF 4 /* two last significant bits=0: use default font, no explicit switching */ /** Font feature: Roman. */ #define DKFIG_FONT_RM 1 /** Font feature: Sans-serif. */ #define DKFIG_FONT_SF 2 /** Font feature: Typewriter. */ #define DKFIG_FONT_TT 3 /** Font feature: Bold. */ #define DKFIG_FONT_BD 4 /** Font feature: Italic. */ #define DKFIG_FONT_IT 8 /** Font feature mask: find roman/sans-serif/italic. */ #define DKFIG_FONT_FAMILY_MASK (DKFIG_FONT_TT|DKFIG_FONT_SF|DKFIG_FONT_RM) /** Error handling: No error occured. */ #define DKFIG_ERROR_NONE 0 /** Error handling: Not enough memory. */ #define DKFIG_ERROR_MEMORY 1 /** Error handling: Syntax error. */ #define DKFIG_ERROR_SYNTAX 2 /** Error handling: Numeric error occured. */ #define DKFIG_ERROR_MATH 3 /** Very special case: An X-Spline is represented by one Bezier spline segment which must be shortened for arrowheads. */ #define DKFIG_SPLINE_FLAG_ONE_PARTIAL 1 /** Number of different patterns used by the Fig file format. */ #define DKFIG_NUMBER_OF_PATTERNS 22 /** Epsilon for numeric calculations. */ #define DKFIG_EPSILON 0.0001 /** Default DSC level. */ #define DKFIG_DSC_OLD 2 /** SVG format version 1.0 */ #define DKFIG_SVG_VERS_10 0 /** SVG format version 1.1 */ #define DKFIG_SVG_VERS_11 1 /** SVG format version 1.2 */ #define DKFIG_SVG_VERS_12 2 /** SVG viewport unit: points. */ #define DKFIG_SVG_VP_POINTS 0 /** SVG viewport unit: pixels. */ #define DKFIG_SVG_VP_PIXELS 1 /** SVG viewport unit: inches. */ #define DKFIG_SVG_VP_INCHES 2 /** SVG style flag: Stroke setup defined. */ #define DKFIG_SVG_FL_STROKE 0x00000001UL /** SVG style flag: Fill setup defined. */ #define DKFIG_SVG_FL_FILL 0x00000002UL /** SVG style flag: Text setup defined. */ #define DKFIG_SVG_FL_TEXT 0x00000004UL /** SVG style flag: Enlighten look. */ #define DKFIG_SVG_FL_ENLIGHTEN 0x00000008UL /** PDF procsets: Text. */ #define DKFIG_PDF_PROCSET_TEXT 1 /** PDF procsets: Grayscaled images. */ #define DKFIG_PDF_PROCSET_IMGG 2 /** PDF procsets: Colored images. */ #define DKFIG_PDF_PROCSET_IMGC 4 /** PS driver: Always re-encode font. */ #define DKFIG_ALWAYS_RE_ENCODE 0 /** Program name. */ #define DKFIG_PROGRAM_NAME "fig2vect" /** Drivers: MetaPost. */ #define DKFIG_DRIVER_MP 0 /** Drivers: Multi-MetaPost. */ #define DKFIG_DRIVER_MMP 1 /** Drivers: EPS. */ #define DKFIG_DRIVER_EPS 2 /** Drivers: SVG. */ #define DKFIG_DRIVER_SVG 3 /** Drivers: LaTeX/TeX. */ #define DKFIG_DRIVER_TEX 4 /** Drivers: Bounding box. */ #define DKFIG_DRIVER_BB 5 /** Drivers: PDF. */ #define DKFIG_DRIVER_PDF 6 /** Drivers: PS. */ #define DKFIG_DRIVER_PS 7 /** Drivers: Java */ #define DKFIG_DRIVER_JAVA 8 /** Unit length: pt per inch. */ #define DKFIG_PT_PER_INCH 72.72 /** Unit length: bp per inch. */ #define DKFIG_BP_PER_INCH 72.0 #endif