From: V. <seb...@en...> - 2004-12-17 13:00:25
|
Hi, I am currently trying to recompile a scientific software which uses a very old version of plplot (around 1992-1994). The software can be found here: http://econ.lse.ac.uk/staff/dquah/tsrf.html I've tried to recompile it with a recent version of plplot (5.3.1), but plplot complained about plinit() not having been called, and several other things. I think the simplest way would be to get the source tarball of plplot that the author initially used for his software; unfortunately, he doesn't provide it anymore. To give you an idea of the version I need, I have copied below an include shipped with this software, which is said to be a private version of plplot.h. If someone still has such an old version of plplot on his hard drive, it would be very helpful! Thank you all, S. Villemot ----- /********************************************************************** * @(#) qplplot.h: Private version of plplot:plplot.h * Last edited: Wed Feb 9 18:56:05 1994 -- Danny Quah (dquah@exx) * $ * Revision History: * % Mon Apr 06 20:40:23 1992 -- Danny Quah (dquah@pc386nb) * define PLSTDC for qTURBOC * % Sat Oct 5 20:21:35 1991 -- Danny Quah (dquah@exx) * define check for previous inclusion. * % Sat Oct 5 13:07:14 1991 -- Danny Quah (dquah@exx) **********************************************************************/ #if !defined(Q_PLPLOT_H) #define Q_PLPLOT_H 1 #include "tsrf.h" /*--------------------------------------------------------------------*/ /* Symbolic constants for plotting option/driver */ /*--------------------------------------------------------------------*/ #define qHP_LJII 1 #define qPOST_SC 2 #define qPL_MAX_DRV 2 /* This qPL_MAX_DRV must match npldrivers calculated * in qunixdsp.c; checked in qplstar (). */ /*--------------------------------------------------------------------*/ /* plotting structs, unions */ /*--------------------------------------------------------------------*/ typedef struct { /* 3d plotting data struct */ char * theTitle ; /* can be NULL */ int nXpnts ; int nYpnts ; FLOAT * xPnts ; /* [0..nXpnts-1] */ char * xLabel ; FLOAT * yPnts ; /* [0..nYpnts-1] */ char * yLabel ; pDT_2D_TYPE pDt2d_Z ; char * zLabel ; float wMinZ ; float wMaxZ ; } sPL_3D_DATA, * pPL_3D_DATA ; /*--------------------------------------------------------------------*/ /* environment */ /*--------------------------------------------------------------------*/ #define env_EQ_SCALE (1) #define env_NE_SCALE (0) /* box only */ #define env_XS_BXNLY (-1) /* box, coords around edge */ #define env_XS_BXEDG (0) /* add axes x=0, y=0 */ #define env_XS_BXZER (1) /* add grid at major ticks */ #define env_XS_BXGRD (2) /*--------------------------------------------------------------------*/ /* axes options in the 3d surface plot */ /*--------------------------------------------------------------------*/ #define xs_BASIC_OPTS "bnstu" #define xs_Z_BOTH_SIDES "bcdmnstu" #define xs_Z_LEFT_SIDE "bdnstu" #define xs_Z_RIGHT_SIDE "cdmstv" #define xs_TICK_AUTO 0.0 #define xs_SUB_INT_AUTO 0 /*--------------------------------------------------------------------*/ /* representation for 3d mesh surface */ /*--------------------------------------------------------------------*/ #define msh4_EACH_Y 1 /* lines showing Z as a * function of X for each Y */ #define msh4_EACH_X 2 /* lines showing Z as a * function of Y for each X */ #define msh4_ALL 3 /* network of lines connecting * all points where Z is defined */ #define wcBOX_BASE_X 1.0 /* world coordinate box base */ #define wcBOX_BASE_Y 1.0 #define wcBOX_BASE_Z 0.75 /*--------------------------------------------------------------------*/ /* text relative to a viewport boundary */ /* text are parallel to edge, unless specified otherwise */ /*--------------------------------------------------------------------*/ #define txt_ON_TOP "t" #define txt_ON_LEFT "l" #define txt_ON_RIGHT "r" #define txt_ON_BOTTOM "b" #define txt_ON_LEFT_O "lv" /* text on left; written * orthogonal to edge */ #define txt_ON_RIGHT_O "rv" /* text on right; written * orthogonal to edge */ #define txt_DISPLACE 2.0 #define txt_POSITION 0.5 #define txt_REF_LEFT 0.0 #define txt_REF_RIGHT 1.0 #define txt_REF_CENTER 0.5 /*--------------------------------------------------------------------*/ /* viewport */ /*--------------------------------------------------------------------*/ #define vp_MIN_X 0.0 #define vp_MAX_X 1.0 #define vp_MIN_Y 0.0 #define vp_MAX_Y 0.8 /* save room for title on top */ /*--------------------------------------------------------------------*/ /* miscellaneous */ /*--------------------------------------------------------------------*/ #define plNEXT_SUB_PAGE 0 /* Mon Apr 06 20:42:06 1992 -- Danny Quah (dquah@pc386nb) */ /* These environments have GEN_PTR as (void *) and PRTO_TYP defined. */ #if defined(qTURBOC) || defined(qGCC_386) || defined (qGCC_NeXT) #define PLSTDC 1 #endif /*--------------------------------------------------------------------*/ /* what comes below is plplot.h: try not to modify */ /*--------------------------------------------------------------------*/ /* This header file contains all of the function prototypes and machine dependent defines */ #include <stdio.h> #ifdef LATTICE_50 #define PLSTDC 1 #define STDLIB 1 #endif #ifdef __STDC__ #define PLSTDC 1 #endif /* We need a signed char type for the fonts, MANX doesn't support this keyword but fortunately char's are signed by default. */ #if defined(sun4) || defined(vax) || defined(vax3200) || defined(AZTEC_C) typedef char SCHAR; #else typedef signed char SCHAR; #endif /* Let's try to get around some ANSI/non-ANSI problems. */ #ifdef PLSTDC typedef void VOID; #define PLARGS(a) a /* Use function prototypes. */ #else typedef char VOID; #define PLARGS(a) () #endif #ifdef NO_PROTOS #undef PLARGS #define PLARGS(a) () #endif #define MAX(a,b) ((a)>(b) ? (a) : (b)) #define MIN(a,b) ((a)<(b) ? (a) : (b)) #define ABS(a) ((a)<0 ? -(a) : (a)) #define round(a) (int)((a)<0. ? ((a)-.5) : ((a)+.5)) /* All of the void type declarations are made first. */ void pladv PLARGS((int page)); void plbeg PLARGS((int dev, int nx, int ny)); void plbin PLARGS((int nbin, FLOAT *x, FLOAT *y, int centre)); void plbox PLARGS((char *xopt, double xtick, int nxsub, char *yopt, \ double ytick, int nysub)); void plccal PLARGS((FLOAT **pts, int nx, int ny, double zlev, \ int ix, int iy, int ixg, int iyg, double *dist)); void plclr PLARGS((void)); void plcntr PLARGS((FLOAT **points, int nx, int ny, int kx, int lx, \ int ky, int ly, double zlev, int *iscan, \ int *ixstor, int *iystor, int nstor, \ void (*tr)(double x, double y, double *tx, double *ty))); void plcol PLARGS((int color)); void plcont PLARGS((FLOAT **z, int nx, int ny, int kx, int lx, \ int ky, int ly, FLOAT *clevel, int nlevel, \ void (*tr)())); void pldeco PLARGS((short **symbol, int *length, char *text)); void pldtik PLARGS((double vmin, double vmax, double *tick, int *nsubt, \ int *mode, int *prec, int *scale)); void plend PLARGS((void)); void plenv PLARGS((double xmin, double xmax, double ymin, double ymax, \ int just, int axis)); void pleop PLARGS((void)); void plerrx PLARGS((int n, FLOAT *xmin, FLOAT *xmax, FLOAT *y)); void plerry PLARGS((int n, FLOAT *x, FLOAT *ymin, FLOAT *ymax)); void plerx1 PLARGS((double xmin, double xmax, double y)); void plery1 PLARGS((double x, double ymin, double ymax)); void plexit PLARGS((char *msg)); void plfill PLARGS((int n, FLOAT *x, FLOAT *y)); void plfont PLARGS((int ifont)); void plfntld PLARGS((int fnt)); void plfontld PLARGS((int fnt)); void plfontrel PLARGS((void)); void plform PLARGS((double value, int scal, int prec, char *result)); void plgra PLARGS((void)); void plgspa PLARGS((double *xmin, double *xmax, double *ymin, double *ymax)); void plhist PLARGS((int n, FLOAT *data, double datmin, double datmax, \ int nbin, int oldwin)); void plhrsh PLARGS((int ch, int x, int y)); void pljoin PLARGS((double x1, double y1, double x2, double y2)); void pllab PLARGS((char *xlabel, char *ylabel, char *tlabel)); void pllclp PLARGS((int x1, int y1, int x2, int y2)); void plline PLARGS((int n, FLOAT *x, FLOAT *y)); void pllsty PLARGS((int line)); void plmtex PLARGS((char *side, double disp, double pos, double just, \ char *text)); void plorient PLARGS((int orient)); void plpat PLARGS((int n, int *inc, int *del)); void plpoi1 PLARGS((double x, double y, int code)); void plpoin PLARGS((int n, FLOAT *x, FLOAT *y, int code)); void plprec PLARGS((int setp, int prec)); void plpsty PLARGS((int patt)); void plptex PLARGS((double x, double y, double dx, double dy, double just, \ char *text)); void plr135 PLARGS((int *ix, int *iy, int isens)); void plr45 PLARGS((int *ix, int *iy, int isens)); void plschr PLARGS((double dep, double scale)); void plselect PLARGS((FILE *file)); void plsetup PLARGS((double xdpi, double ydpi, int xw, int yw)); void plsmaj PLARGS((double def, double scale)); void plsmin PLARGS((double def, double scale)); void plssym PLARGS((double def, double scale)); void plstar PLARGS((int nx, int ny)); void plstik PLARGS((double mx, double my, double dx, double dy)); void plstr PLARGS((int base, double *xform, int refx, int refy, char *string)); void plstyl PLARGS((int nels, int *mk, int *sp)); void plsvpa PLARGS((double xmin, double xmax, double ymin, double ymax)); void plsym PLARGS((int n, FLOAT *x, FLOAT *y, int code)); void plsym1 PLARGS((double x, double y, int code)); void pltext PLARGS((void)); void plupd PLARGS((int nms, int *mark, int *space, int *curel, int *pendn, int *timecnt, int *alarm)); void plvasp PLARGS((double aspect)); void plvpor PLARGS((double xmin, double xmax, double ymin, double ymax)); void plvsta PLARGS((void)); void plwid PLARGS((int pwid)); void plwind PLARGS((double xmin, double xmax, double ymin, double ymax)); void plxtik PLARGS((int x, int y, int below, int above)); void plxybx PLARGS((char *opt, char *label, double wx1, double wy1, \ double wx2, double wy2, double vmin, double vmax, \ double tick, int nsub, int nolast)); void plxytx PLARGS((double wx1, double wy1, double wx2, double wy2, \ double disp, double pos, double just, char *text)); void plytik PLARGS((int x, int y, int left, int right)); void plzbx PLARGS((char *opt, char *label, int right, double dx, double dy, \ double wx, double wy1, double wy2, double vmin, \ double vmax, double tick, int nsub)); void plztx PLARGS((char *opt, double dx, double dy, double wx, double wy1, \ double wy2, double disp, double pos, double just, char *t)); /* 3-D routine types*/ void pl3cut PLARGS((int sx1, int sy1, int sx2, int sy2, int su1, \ int sv1, int su2, int sv2, int *cx, int *cy)); void plbox3 PLARGS((char *xopt, char *xlabel, double xtick, int nsubx, \ char *yopt, char *ylabel, double ytick, int nsuby, \ char *zopt, char *zlabel, double ztick, int nsubz)); void plgrid3a PLARGS((double tick)); void plmesh PLARGS((FLOAT *x, FLOAT *y, FLOAT **z, \ int nx, int ny, int opt)); void plnxtv PLARGS((int *u, int *v, int n, int init)); void plot3d PLARGS((FLOAT *x, FLOAT *y, FLOAT **z, \ int nx, int ny, int opt, int side)); void plside3a PLARGS((FLOAT *x, FLOAT *y, FLOAT **z, int nx, \ int ny, int opt)); void plt3zz PLARGS((int xstar0, int ystar0, int dx, int dy, \ int flg0, int init, FLOAT *x, FLOAT *y, FLOAT **z, \ int nx, int ny, int *u, int *v)); void plw3d PLARGS((double basex, double basey, double height, double xmin0, \ double xmax0, double ymin0, double ymax0, double zmin0, \ double zmax0, double alt, double az)); /* The novice plplot user will not need to call the following functions */ void cleanup PLARGS((void)); void genlin PLARGS((int x1, int y1, int x2, int y2)); void movphy PLARGS((int x, int y)); void draphy PLARGS((int x, int y)); void movwor PLARGS((double x, double y)); void drawor PLARGS((double x, double y)); void setphy PLARGS((int xmin, int xmax, int ymin, int ymax)); void setpxl PLARGS((double xpmm0, double ypmm0)); void setsub PLARGS((void)); void xform PLARGS((double x, double y, double *tx, double *ty)); /* stuff in global.c */ void glev PLARGS((int *n)); void slev PLARGS((int n)); void gbase PLARGS((double *x, double *y, double *xc, double *yc)); void sbase PLARGS((double x, double y, double xc, double yc)); void gnms PLARGS((int *n)); void snms PLARGS((int n)); void gdev PLARGS((int *dev, int *term, int *gra)); void sdev PLARGS((int dev, int term, int gra)); void smod PLARGS((int term)); void gcurr PLARGS((int *ix, int *iy)); void scurr PLARGS((int ix, int iy)); void gdom PLARGS((double *xmin, double *xmax, double *ymin, double *ymax)); void sdom PLARGS((double xmin, double xmax, double ymin, double ymax)); void grange PLARGS((double *zscl, double *zmin, double *zmax)); void srange PLARGS((double zscl, double zmin, double zmax)); void gw3wc PLARGS((double *dxx, double *dxy, double *dyx, double *dyy, \ double *dyz)); void sw3wc PLARGS((double dxx, double dxy, double dyx, double dyy, double dyz)); void gvpp PLARGS((int *ixmin, int *ixmax, int *iymin, int *iymax)); void svpp PLARGS((int ixmin, int ixmax, int iymin, int iymax)); void gspp PLARGS((int *ixmin, int *ixmax, int *iymin, int *iymax)); void sspp PLARGS((int ixmin, int ixmax, int iymin, int iymax)); void gclp PLARGS((int *ixmin, int *ixmax, int *iymin, int *iymax)); void sclp PLARGS((int ixmin, int ixmax, int iymin, int iymax)); void gphy PLARGS((int *ixmin, int *ixmax, int *iymin, int *iymax)); void sphy PLARGS((int ixmin, int ixmax, int iymin, int iymax)); void gsub PLARGS((int *nx, int *ny, int *cs)); void ssub PLARGS((int nx, int ny, int cs)); void gumpix PLARGS((int *ix, int *iy)); void sumpix PLARGS((int ix, int iy)); void gatt PLARGS((int *ifnt, int *icol)); void satt PLARGS((int ifnt, int icol)); void gcol PLARGS((int *icol)); void scol PLARGS((int icol)); void gwid PLARGS((int *pwid)); void swid PLARGS((int pwid)); void gspd PLARGS((double *xmin, double *xmax, double *ymin, double *ymax)); void sspd PLARGS((double xmin, double xmax, double ymin, double ymax)); void gvpd PLARGS((double *xmin, double *xmax, double *ymin, double *ymax)); void svpd PLARGS((double xmin, double xmax, double ymin, double ymax)); void gvpw PLARGS((double *xmin, double *xmax, double *ymin, double *ymax)); void svpw PLARGS((double xmin, double xmax, double ymin, double ymax)); void gpixmm PLARGS((double *x, double *y)); void spixmm PLARGS((double x, double y)); void gwp PLARGS((double *xscl, double *xoff, double *yscl, double *yoff)); void swp PLARGS((double xscl, double xoff, double yscl, double yoff)); void gwm PLARGS((double *xscl, double *xoff, double *yscl, double *yoff)); void swm PLARGS((double xscl, double xoff, double yscl, double yoff)); void gdp PLARGS((double *xscl, double *xoff, double *yscl, double *yoff)); void sdp PLARGS((double xscl, double xoff, double yscl, double yoff)); void gmp PLARGS((double *xscl, double *xoff, double *yscl,double *yoff)); void smp PLARGS((double xscl, double xoff, double yscl, double yoff)); void gchr PLARGS((double *def, double *ht)); void schr PLARGS((double def, double ht)); void gsym PLARGS((double *def, double *ht)); void ssym PLARGS((double def, double ht)); void gmaj PLARGS((double *def, double *ht)); void smaj PLARGS((double def, double ht)); void gmin PLARGS((double *def, double *ht)); void smin PLARGS((double def, double ht)); void gpat PLARGS((int **inc, int **del, int *nlin)); void spat PLARGS((int *inc, int *delm, int nlin)); void gmark PLARGS((int **mar, int **spa, int **nels)); void smark PLARGS((int *mar, int *spa, int nels)); void gcure PLARGS((int **cur, int **pen, int **tim, int **ala)); void scure PLARGS((int cur, int pen, int time, int ala)); void gdevice PLARGS((int *dev)); void sdevice PLARGS((int dev)); void ggra PLARGS((int *gra)); void sgra PLARGS((int gra)); void gzback PLARGS((int **zbf, int **zbc, double **zbt)); void goldhivw PLARGS((int **ohivw)); void goldlovw PLARGS((int **olovw)); void set3mode PLARGS((int mod)); void set3upd PLARGS((int updm)); /* Functions that return double's */ double plstrl PLARGS((char *string)); /* Stuff in fcnvrt.c */ double dcmmx PLARGS((double x)); double dcmmy PLARGS((double y)); double dcscx PLARGS((double x)); double dcscy PLARGS((double y)); double mmdcx PLARGS((double x)); double mmdcy PLARGS((double y)); double scdcx PLARGS((double x)); double scdcy PLARGS((double y)); double wcmmx PLARGS((double x)); double wcmmy PLARGS((double y)); double w3wcx PLARGS((double x, double y, double z)); double w3wcy PLARGS((double x, double y, double z)); /* Functions returning ints */ int plabv PLARGS((int px, int py, int sx1, int sy1, int sx2, int sy2)); int plcvec PLARGS((int ch, signed char **xygrid)); int stindex PLARGS((char *str1, char *str2)); int strpos PLARGS((char *str, int chr)); int stsearch PLARGS((char *str, int chr)); /* This stuff is all in icnvrt.c */ int dcpcx PLARGS((double x)); int dcpcy PLARGS((double y)); int mmpcx PLARGS((double x)); int mmpcy PLARGS((double y)); int wcpcx PLARGS((double x)); int wcpcy PLARGS((double y)); /* Device independent routines */ void grsetup PLARGS((void)); void grorient PLARGS((void)); void grselect PLARGS((void)); void grbeg PLARGS((int dev)); void grclr PLARGS((void)); void grpage PLARGS((void)); void greop PLARGS((void)); void grcol PLARGS((void)); void grwid PLARGS((void)); void grinit PLARGS((void)); void grgra PLARGS((void)); void grline PLARGS((int x1, int y1, int x2, int y2)); void grtext PLARGS((void)); void grtidy PLARGS((void)); #endif /* Q_PLPLOT_H */ /* eof qplplot.h */ |
From: Alan W. I. <ir...@be...> - 2004-12-17 17:20:23
|
On 2004-12-17 14:00+0100 S=E9bastien Villemot wrote: > Hi, > > I am currently trying to recompile a scientific software which uses a > very old version of plplot (around 1992-1994). The software can be found > here: > http://econ.lse.ac.uk/staff/dquah/tsrf.html For the others here, that appears to be an application written in C. > > I've tried to recompile it with a recent version of plplot (5.3.1), but > plplot complained about plinit() not having been called, and several > other things. > > I think the simplest way would be to get the source tarball of plplot > that the author initially used for his software; unfortunately, he > doesn't provide it anymore. S=E9bastien, I think the best way to deal with this problem is to change th= at old application code to be compatible with the modern PLplot library. If you follow the documentation at http://plplot.sourceforge.net/docbook-manual/plplot-html-5.3.1/ (especially Chapter 2 which will give you some ideas about initializing PLplot and=20 Chapter 16 which documents the modern API), I think that task will be entirely straightforward. Also, I suggest you look at some of our many examples (in examples/c) for guidance about how to call the PLplot C library. If you have any specific questions about a modern equivalent to some old PLplot call, don't hesitate to post your question to this list. Good luck! Alan __________________________ Alan W. Irwin email: ir...@be... phone: 250-727-2902 Astronomical research affiliation with Department of Physics and Astronomy, University of Victoria (astrowww.phys.uvic.ca). Programming affiliations with the FreeEOS equation-of-state implementation for stellar interiors (freeeos.sf.net); PLplot scientific plotting software package (plplot.org); the Yorick front-end to PLplot (yplot.sf.net); the Loads of Linux Links project (loll.sf.net); and the Linux Brochure Project (lbproject.sf.net). __________________________ Linux-powered Science __________________________ |