ngspice/xgraph/xgraph.h

211 lines
5.4 KiB
C

/*
* Globally accessible information from xgraph
*/
#ifndef _XGRAPH_H_
#define _XGRAPH_H_
#include "autoconf.h"
#include <X11/Xos.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/cursorfont.h>
/*
* Get definitions from headers.
*/
#include <stdio.h> /* sprintf */
#ifdef HAVE_STRING_H
#include <string.h> /* str* */
#else
#ifdef HAVE_STRINGS_H
#include <strings.h> /* str* */
#else
extern char *strcpy();
extern char *strcat();
extern char *rindex();
extern char *index();
#endif /* HAVE_STRINGS_H */
#endif /* HAVE_STRING_H */
#ifdef HAVE_UNISTD_H
#include <unistd.h> /* exit, abort */
#endif /* HAVE_UNISTD_H */
#ifdef HAVE_STDLIB_H
#include <stdlib.h> /* atof */
#endif /* HAVE_STDLIB_H */
#include "xgout.h"
#define VERSION_STRING "12.1 December 1999 "
#define MAXKEYS 50
#define MAXATTR 8
#define MAXSETS 112
#define MAXBUFSIZE 120
#define MAXLS 50
#define STRDUP(xx) (strcpy(Malloc((unsigned) (strlen(xx)+1)), (xx)))
#define SCREENX(ws, userX) \
(((int) (((userX) - ws->UsrOrgX)/ws->XUnitsPerPixel + 0.5)) + ws->XOrgX)
#define SCREENY(ws, userY) \
(ws->XOppY - ((int) (((userY) - ws->UsrOrgY)/ws->YUnitsPerPixel + 0.5)))
#define HARDCOPY_IN_PROGRESS 0x01
/* Portability */
/* try to get those constants */
#include <math.h>
#ifdef HAVE_LIMITS_H
#include <limits.h>
#endif /* HAVE_LIMITS */
#ifdef HAVE_FLOAT_H
#include <float.h>
#endif /* HAVE_FLOAT_H */
#ifdef CRAY
#undef MAXFLOAT
#define MAXFLOAT 10.e300
#endif /* CRAY */
#ifndef MAXFLOAT
#if defined(FLT_MAX)
#define MAXFLOAT FLT_MAX
#elif defined(HUGE)
#define MAXFLOAT HUGE
#endif
#endif
#ifndef BIGINT
#if defined(INT_MAX)
#define BIGINT INT_MAX
#elif defined(MAXINT)
#define BIGINT MAXINT
#else
#define BIGINT 0xffffffff
#endif
#endif
#define GRIDPOWER 10
#define INITSIZE 128
#define CONTROL_D '\004'
#define CONTROL_C '\003'
#define TILDE '~'
#define BTNPAD 1
#define BTNINTER 3
#ifndef MAX
#define MAX(a,b) ((a) > (b) ? (a) : (b))
#endif
#ifndef MIN
#define MIN(a,b) ((a) < (b) ? (a) : (b))
#endif
#ifndef ABS
#define ABS(x) ((x) < 0 ? -(x) : (x))
#endif
#define ZERO_THRES 1.0E-07
/* To get around an inaccurate log */
#define nlog10(x) (x == 0.0 ? 0.0 : log10(x) + 1e-15)
#define ISCOLOR (wi->dev_info.dev_flags & D_COLOR)
#define PIXVALUE(set) ((set) % MAXATTR)
#define LINESTYLE(set) \
(ISCOLOR ? ((set)/MAXATTR) : ((set) % MAXATTR))
#define MARKSTYLE(set) \
(colorMark ? COLMARK(set) : BWMARK(set))
#define COLMARK(set) \
((set) / MAXATTR)
#define BWMARK(set) \
((set) % MAXATTR)
#define LOG_X 0x01
#define LOG_Y 0x02
#define STK 0x04
#define FITX 0x08
#define FITY 0x10
typedef unsigned long Pixel;
/* Globally accessible values */
extern Display *disp; /* Open display */
extern Visual *vis; /* Standard visual */
extern Colormap cmap; /* Standard colormap */
extern int screen; /* Screen number */
extern int depth; /* Depth of screen */
extern void do_hardcopy(); /* Carries out hardcopy */
extern void ho_dialog(); /* Hardcopy dialog */
extern void set_X(); /* Initializes X device */
typedef struct point_list {
int numPoints; /* Number of points in group */
int allocSize; /* Allocated size */
double *xvec; /* X values */
double *yvec; /* Y values */
struct point_list *next; /* Next set of points */
} PointList;
typedef struct new_data_set {
char *setName; /* Name of data set */
PointList *list; /* List of point arrays */
} NewDataSet;
typedef struct local_win {
double loX,
loY,
hiX,
hiY; /* Local bounding box of window */
int XOrgX,
XOrgY; /* Origin of bounding box on screen */
int XOppX,
XOppY; /* Other point defining bounding box */
double UsrOrgX,
UsrOrgY; /* Origin of bounding box in user space */
double UsrOppX,
UsrOppY; /* Other point of bounding box */
double XUnitsPerPixel; /* X Axis scale factor */
double YUnitsPerPixel; /* Y Axis scale factor */
struct xg_out dev_info; /* Device information */
Window close,
hardcopy; /* Buttons for closing and hardcopy */
Window about; /* Version information */
Window rewind; /* PW Added this, for animation. */
Window replot; /* PW Added this, for animation. */
Window deriv; /* PW Added this, for animation. */
int flags; /* Window flags */
int DOrder; /* Which order of Derivative is being set? */
} LocalWin;
extern NewDataSet PlotData[MAXSETS], DataD1[MAXSETS], DataD2[MAXSETS];
extern XSegment *Xsegs[2]; /* Point space for X */
extern double llx, lly, urx, ury; /* Bounding box of all data */
extern int numFiles; /* Number of input files */
extern char *inFileNames[MAXSETS]; /* File names */
/* Total number of active windows */
extern int Num_Windows;
extern char *Prog_Name;
extern char *disp_name;
/* To make lint happy */
extern char *Malloc();
extern char *Realloc();
extern void Free();
#ifndef _POSIX_SOURCE
/* extern int sprintf(); ---conflicts with sunos */
extern void exit();
extern double atof();
extern void abort();
#endif /* _POSIX_SOURCE */
#endif /* _XGRAPH_H_ */