99typedef char * caddr_t;
110#ifdef PL_HAVE_UNISTD_H
119#define M_PI 3.14159265358979323846
137#define pl_fsetpos( a, b ) fsetpos( a, b )
138#define pl_fgetpos( a, b ) fgetpos( a, b )
142#define pl_fsetpos( a, b ) fseek( a, *b, 0 )
143#define pl_fgetpos( a, b ) ( -1L == ( *b = ftell( a ) ) )
182#define free_mem( a ) \
183 if ( a != NULL ) { free( (void *) a ); a = NULL; }
187#define plsetvar( a, b ) \
188 if ( b != PL_NOTSET ) a = b;
193#define MAX( a, b ) ( ( ( a ) > ( b ) ) ? ( a ) : ( b ) )
196#define MIN( a, b ) ( ( ( a ) < ( b ) ) ? ( a ) : ( b ) )
199#define ABS( a ) ( ( a ) < 0 ? -( a ) : ( a ) )
202#define ROUND( a ) (PLINT) ( ( a ) < 0. ? ( ( a ) - .5 ) : ( ( a ) + .5 ) )
205#define BETW( ix, ia, ib ) ( ( ( ix ) <= ( ia ) && ( ix ) >= ( ib ) ) || ( ( ix ) >= ( ia ) && ( ix ) <= ( ib ) ) )
208#define SSQR( a, b ) sqrt( ( a ) * ( a ) + ( b ) * ( b ) )
211#define SIGN( a ) ( ( a ) < 0 ? -1 : 1 )
214#define TRANSFORM( x, y, xnew, ynew ) if ( plsc->coordinate_transform ) { plsc->coordinate_transform( ( x ), ( y ), ( xnew ), ( ynew ), plsc->coordinate_transform_data ); } else { *xnew = x; *ynew = y; }
219#define PL_UNDEFINED -9999999
223#ifdef PL_HAVE_SNPRINTF
226 #ifdef _PL_HAVE_SNPRINTF
227 #define snprintf _snprintf
228 #define snscanf _snscanf
235 #define snprintf plsnprintf
236 #define snscanf plsnscanf
243#if defined ( PL__HAVE_ISNAN )
245# if defined ( _MSC_VER )
249#if defined ( PL__HAVE_ISINF )
252#if defined ( PL_HAVE_FINITE )
253# define isfinite finite
255#if defined ( PL__HAVE_FINITE )
256# define isfinite _finite
261#if !defined ( PL_HAVE_ISNAN )
262# define isnan( x ) ( ( x ) != ( x ) )
264#if !defined ( PL_HAVE_ISINF )
265# define isinf( x ) ( !isnan( x ) && isnan( x - x ) )
267#if !defined ( PL_HAVE_ISFINITE )
268# define isfinite( x ) ( !isnan( x - x ) )
274#define HUGE_VAL ( 1.0 / 0.0 )
283#define PL_MAXPOLY 256
284#define PL_NSTREAMS 100
285#define PL_RGB_COLOR -1
288#define GRAPHICS_MODE 1
290#define PI 3.1415926535897932384
304#define PIXELS_X 32768
305#define PIXELS_Y 24576
307#define VDPMM ( DPMM * 32 )
308#define LPAGE_X ( PIXELS_X / VDPMM )
309#define LPAGE_Y ( PIXELS_Y / VDPMM )
313#define PLPLOT_MM_PER_INCH 25.4
314#define PLPLOT_POINTS_PER_INCH 72.
315#define PLPLOT_WIDTH_A4_MM 297.
316#define PLPLOT_HEIGHT_A4_MM 210.
317#define PLPLOT_WIDTH_A5_MM 210.
318#define PLPLOT_HEIGHT_A5_MM 148.
326#define PLPLOT_DEFAULT_PIXELS_PER_INCH 90.
329#define PLPLOT_DEFAULT_WIDTH_PIXELS ( (int) ( PLPLOT_WIDTH_A5_MM * PLPLOT_DEFAULT_PIXELS_PER_INCH / PLPLOT_MM_PER_INCH ) )
330#define PLPLOT_DEFAULT_HEIGHT_PIXELS ( (int) ( PLPLOT_HEIGHT_A5_MM * PLPLOT_DEFAULT_PIXELS_PER_INCH / PLPLOT_MM_PER_INCH ) )
341#define PLPLOT_DEFAULT_WIDTH_MM ( (int) ( PLPLOT_WIDTH_A4_MM )
342#define PLPLOT_DEFAULT_HEIGHT_MM ( (int) ( PLPLOT_HEIGHT_A4_MM )
346#define PLPLOT_DEFAULT_WIDTH_POINTS ( (int) ( PLPLOT_WIDTH_A4_MM * PLPLOT_POINTS_PER_INCH / PLPLOT_MM_PER_INCH ) )
347#define PLPLOT_DEFAULT_HEIGHT_POINTS ( (int) ( PLPLOT_HEIGHT_A4_MM * PLPLOT_POINTS_PER_INCH / PLPLOT_MM_PER_INCH ) )
362#define PLSTATE_WIDTH 1
363#define PLSTATE_COLOR0 2
364#define PLSTATE_COLOR1 3
365#define PLSTATE_FILL 4
366#define PLSTATE_CMAP0 5
367#define PLSTATE_CMAP1 6
370#define PLSTATE_EOFILL 9
385#ifndef PL_FILESIZE_KB
386#define PL_FILESIZE_KB 1000
394#define PL_XFONT "plxtnd5.fnt"
395#define PL_SFONT "plstnd5.fnt"
397#define PL_XFONT "plxtnd4.fnt"
398#define PL_SFONT "plstnd4.fnt"
440#define PLPLOT_BIN_ENV "PLPLOT_BIN"
441#define PLPLOT_LIB_ENV "PLPLOT_LIB"
442#define PLPLOT_TCL_ENV "PLPLOT_TCL"
443#define PLPLOT_HOME_ENV "PLPLOT_HOME"
446#define PLPLOT_MAX_PATH 1024
527 PLFLT *affine_vectorA,
558 void ( *draw )(
short *,
short *,
PLINT ) );
565 void ( *draw )(
short *,
short *,
PLINT ) );
1278#ifdef ENABLE_DYNDRIVERS
1283#ifdef PL_HAVE_FREETYPE
1294pl_set_extended_cmap0(
PLStream *,
int,
int );
void plP_affine_xskew(PLFLT *affine_vector, PLFLT angle)
void plP_affine_rotate(PLFLT *affine_vector, PLFLT angle)
void plP_affine_yskew(PLFLT *affine_vector, PLFLT angle)
void plP_affine_translate(PLFLT *affine_vector, PLFLT xtranslate, PLFLT ytranslate)
void plP_affine_scale(PLFLT *affine_vector, PLFLT xscale, PLFLT yscale)
void plP_affine_identity(PLFLT *affine_vector)
void plP_affine_multiply(PLFLT *affine_vectorA, PLFLT_VECTOR affine_vectorB, PLFLT_VECTOR affine_vectorC)
int plParseDrvOpts(DrvOpt *acc_opt)
void plHelpDrvOpts(DrvOpt *acc_opt)
void label_box_custom(PLCHAR_VECTOR xopt, PLINT n_xticks, PLFLT_VECTOR xticks, PLCHAR_VECTOR yopt, PLINT n_yticks, PLFLT_VECTOR yticks)
void cont_clean_store(CONT_LEVEL *ct)
PLFLT plf2eval(PLINT ix, PLINT iy, PLPointer plf2eval_data)
void cont_store(PLFLT_MATRIX f, PLINT nx, PLINT ny, PLINT kx, PLINT lx, PLINT ky, PLINT ly, PLFLT_VECTOR clevel, PLINT nlevel, PLTRANSFORM_callback pltr, PLPointer pltr_data, CONT_LEVEL **contour)
void plP_fci2hex(PLUNICODE fci, unsigned char *phexdigit, unsigned char hexpower)
void plP_xgvpw(PLFLT *p_xmin, PLFLT *p_xmax, PLFLT *p_ymin, PLFLT *p_ymax)
void plP_polyline(short *x, short *y, PLINT npts)
void plP_text(PLINT base, PLFLT just, PLFLT *xform, PLINT x, PLINT y, PLINT refx, PLINT refy, PLCHAR_VECTOR string)
void difilt_clip(PLINT *x_coords, PLINT *y_coords)
void plP_image(PLFLT *z, PLINT nx, PLINT ny, PLFLT xmin, PLFLT ymin, PLFLT dx, PLFLT dy, void(*pltr)(PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer), PLPointer pltr_data)
const char plP_greek_mnemonic[]
void plP_line(short *x, short *y)
void plP_gsub(PLINT *p_nx, PLINT *p_ny, PLINT *p_cs)
void pl_cpcolor(PLColor *to, PLColor *from)
void difilt(PLINT *xsc, PLINT *ysc, PLINT npts, PLINT *clpxmi, PLINT *clpxma, PLINT *clpymi, PLINT *clpyma)
void plP_setpxl(PLFLT xpmm, PLFLT ypmm)
PLCHAR_VECTOR plP_gtimefmt()
void plP_gw3wc(PLFLT *p_dxx, PLFLT *p_dxy, PLFLT *p_dyx, PLFLT *p_dyy, PLFLT *p_dyz)
void plP_gradient(short *x, short *y, PLINT npts)
void plP_gdom(PLFLT *p_xmin, PLFLT *p_xmax, PLFLT *p_ymin, PLFLT *p_ymax)
void plP_swin(PLWindow *plwin)
void plP_hex2fci(unsigned char hexdigit, unsigned char hexpower, PLUNICODE *pfci)
void plP_gpixmm(PLFLT *p_x, PLFLT *p_y)
void plP_grange(PLFLT *p_zscl, PLFLT *p_zmin, PLFLT *p_zmax)
int ucs4_to_utf8(PLUNICODE unichar, char *ptr)
void plP_gclp(PLINT *p_ixmin, PLINT *p_ixmax, PLINT *p_iymin, PLINT *p_iymax)
void plP_sclp(PLINT ixmin, PLINT ixmax, PLINT iymin, PLINT iymax)
PLINT plP_checkdriverinit(char *names)
void plP_ssub(PLINT nx, PLINT ny, PLINT cs)
void plP_gphy(PLINT *p_ixmin, PLINT *p_ixmax, PLINT *p_iymin, PLINT *p_iymax)
void plP_esc(PLINT op, void *ptr)
void plP_setphy(PLINT xmin, PLINT xmax, PLINT ymin, PLINT ymax)
void plP_gprec(PLINT *p_setp, PLINT *p_prec)
void plP_fill(short *x, short *y, PLINT npts)
void plP_getinitdriverlist(char *names)
FILE * plLibOpen(PLCHAR_VECTOR fn)
void plwarn(PLCHAR_VECTOR errormsg)
int plsnprintf(char *buffer, int n, PLCHAR_VECTOR format,...)
void plcmap1_calc(void)
Bin up cmap 1 space and assign colors to make inverse mapping easy.
void plexit(PLCHAR_VECTOR errormsg)
int plsnscanf(PLCHAR_VECTOR buffer, int n, PLCHAR_VECTOR format,...)
char PLDLLIMPEXP * plstrdup(PLCHAR_VECTOR src)
char * plsave_set_locale(void)
void plrestore_locale(char *saved_lc_numeric_locale)
void plabort(PLCHAR_VECTOR errormsg)
PLFLT plP_w3wcx(PLFLT x, PLFLT y, PLFLT PL_UNUSED(z))
PLFLT plP_w3wcz(PLFLT x, PLFLT y, PLFLT z)
PLFLT plP_w3wcy(PLFLT x, PLFLT y, PLFLT z)
#define PLDLLIMPEXP_DATA(type)
void pldtik(PLFLT vmin, PLFLT vmax, PLFLT *tick, PLINT *nsubt, PLBOOL ld)
void pldprec(PLFLT vmin, PLFLT vmax, PLFLT tick, PLINT lf, PLINT *mode, PLINT *prec, PLINT digmax, PLINT *scale)
void pldtfac(PLFLT vmin, PLFLT vmax, PLFLT *factor, PLFLT *start)
void plP_plfclp(PLINT *x, PLINT *y, PLINT npts, PLINT xmin, PLINT xmax, PLINT ymin, PLINT ymax, void(*draw)(short *, short *, PLINT))
void plfill_soft(short *x, short *y, PLINT n)
int plP_pointinpolygon(PLINT n, PLFLT_VECTOR x, PLFLT_VECTOR y, PLFLT xp, PLFLT yp)
void grimage(short *x, short *y, unsigned short *z, PLINT nx, PLINT ny)
void plimageslow(PLFLT *idata, PLINT nx, PLINT ny, PLFLT xmin, PLFLT ymin, PLFLT dx, PLFLT dy, PLTRANSFORM_callback pltr, PLPointer pltr_data)
void RestoreWrite2BufferPixmap()
void plP_drawor(PLFLT x, PLFLT y)
void plP_movwor(PLFLT x, PLFLT y)
void plP_pllclp(PLINT *x, PLINT *y, PLINT npts, PLINT xmin, PLINT xmax, PLINT ymin, PLINT ymax, void(*draw)(short *, short *, PLINT))
void plP_drawor_poly(PLFLT_VECTOR x, PLFLT_VECTOR y, PLINT n)
void plP_movphy(PLINT x, PLINT y)
int plP_clipline(PLINT *p_x1, PLINT *p_y1, PLINT *p_x2, PLINT *p_y2, PLINT xmin, PLINT xmax, PLINT ymin, PLINT ymax)
void plP_draphy_poly(PLINT *x, PLINT *y, PLINT n)
void plP_draphy(PLINT x, PLINT y)
void plRotationShear(PLFLT *xFormMatrix, PLFLT *rotation, PLFLT *shear, PLFLT *stride)
void plP_gzback(PLINT **zbf, PLINT **zbc, PLFLT **zbt, PLFLT **zbw)
int plP_clip_poly(int Ni, PLFLT *Vi[3], int axis, PLFLT dir, PLFLT offset)
Hershey_to_Unicode_table hershey_to_unicode_lookup_table[]
int number_of_entries_in_hershey_to_unicode_table
struct cont_line CONT_LINE
struct cont_level CONT_LEVEL
const char * PLCHAR_VECTOR
const PLFLT * PLFLT_VECTOR
const PLFLT *const * PLFLT_MATRIX
void xform(PLFLT x, PLFLT y, PLFLT *tx, PLFLT *ty, PLPointer pltr_data)
void plio_fwrite(void *buf, size_t size, size_t nmemb, FILE *stream)
void plio_fgets(char *buf, int size, FILE *stream)
void plio_fread(void *buf, size_t size, size_t nmemb, FILE *stream)
FILE * pl_create_tempfile(char **fname)
char * pl_create_tempfifo(const char **p_fifoname, const char **p_dirname)
void plstr(PLINT base, PLFLT *xform, PLINT refx, PLINT refy, PLCHAR_VECTOR string)
PLINT plP_strpos(PLCHAR_VECTOR str, int chr)
PLINT plP_stindex(PLCHAR_VECTOR str1, PLCHAR_VECTOR str2)
int plhershey2unicode(int in)
PLCHAR_VECTOR plP_FCI2FontName(PLUNICODE fci, const FCI_to_FontName_Table lookup[], const int nlookup)
void plhrsh(PLINT ch, PLINT x, PLINT y)
PLFLT plstrl(PLCHAR_VECTOR string)
void plP_script_scale(PLBOOL ifupper, PLINT *level, PLFLT *old_scale, PLFLT *scale, PLFLT *old_offset, PLFLT *offset)
PLBOOL plP_stsearch(PLCHAR_VECTOR str, int chr)
void plwytik(PLFLT x, PLFLT y, PLBOOL minor, PLBOOL invert)
void plxtik(PLINT x, PLINT y, PLINT below, PLINT above)
void plytik(PLINT x, PLINT y, PLINT left, PLINT right)
void plwxtik(PLFLT x, PLFLT y, PLBOOL minor, PLBOOL invert)
void plstik(PLFLT mx, PLFLT my, PLFLT dx, PLFLT dy)
void plfvect(PLF2EVAL_callback getuv, PLPointer up, PLPointer vp, PLINT nx, PLINT ny, PLFLT scale, PLTRANSFORM_callback pltr, PLPointer pltr_data)
unsigned short unicode_array_len
PLUNICODE * unicode_array
const unsigned char * pfont