#define X_SIZE 800             /* default draw area size, change as desired */
#define Y_SIZE 685
#define INFO_X_SIZE 173
#define LOGO_SIZE 200
#define INFO_Y_SIZE 60

#define NITEM 20         /* Max number of menu items in a menu             */
#define NMAX 100         /* Max number of points on a boundary             */
#define NB 20            /* Max number of boundaries                       */
#define NH 500           /* Max number of points where eqdata can be spec. */
#define MAXLEVELS 10     /* Max number of refinment levels                 */
#define NOBF 3           /* Number of basefcn's in an element              */
#define WORKSIZE 3000000 /* Default size for the fortran work array        */

#define CLICK_TOL 10  /* How close one must click on a point (pixels)       */


/*                    */
/* Some magic numbers */
/*                    */
#define OUTER 0
#define INNER 1
#define INTERNAL 2

#define DIRICHLET 0
#define NEUMANN 1

#define NORMAL 0
#define DRAWING 1
#define DELETING 2
#define MOVING 3
#define PICKING 4
#define WAITING 5
#define ZOOMING 6



#define HAVE_NOTHING 0
#define HAVE_SCALE 2
#define HAVE_BOUNDARY 4
#define HAVE_MESHSIZE 8
#define HAVE_MESH 12
#define HAVE_EQDATA 16
#define HAVE_BCDATA 18
#define HAVE_SOLVDATA 20
#define HAVE_SOLUTION 24
#define HAVE_MORE 124

#define TO_PRINTER 0
#define TO_FILE 1

#include "multireq.h"

void quit(Widget w, void *data);
void file(Widget w, void *data);
void save(Widget w, void *data);
void cut(Widget w, void *data);
void sselect(Widget w, void *data);
void scroll(Widget w, float x, void *data);
void getDrawingScale();

int state;
int action;
int substate;
int have_colors;
int zoomActive;
extern int solverLevels;
extern float solverTol;
extern char solverNorm[];
Widget solButt[MAXLEVELS];
Widget label;

int moveThis, onThisB, boundaryType;

struct {
  unsigned int plotTable[10] ;
  int zoom;
} flags;

typedef struct {
  Widget name;
  Widget item[NITEM];
  int needs[NITEM];
  int noItems;
} menu;


typedef struct {
  int el;
  int x;
  int y;
  float f[4];
} pointData;
typedef struct {
  char text[80];
} name;

typedef struct {
  int what;
  char *label;
  int nvalues;
  int n;
  pointData value[NH];
  int type;
  name expr[10];
} EqData;

typedef struct {
  char *sectionName;
  char *labelName[4];
  Widget label[4];
  Widget input[4];
  Widget header;
  Widget butt;
} EqDataUI;

typedef struct {
  int n;
  char type[NB*NMAX];
  int segment[NB*NMAX];
  float value[NB*NMAX];
  int id[NB*NMAX];
} BoundaryCondition;


/* Equation data definition */
BoundaryCondition cdbc[5];
extern int numberOfEqData;
extern int nvar;
extern EqData cddata[];
extern EqDataUI cdUI[];

int hx[NH];
int hy[NH];
int ih ;
float h[NH];



/* The menus */
menu fileMenu, geomMenu, meshMenu, solverMenu, plotMenu;
/* The buttons */
Widget zoomButton, unZoomButton;
menu levelMenu;
/* The windows */
Widget drawWindow, infoWindow, logoWindow;

Widget kth;
Widget sbar, sbar1, sbar2;
float psred, psgreen, psblue;
int white1, white2;
int curcol ;
int GREY;
int color_ps;


syntax highlighted by Code2HTML, v. 0.9.1