
/**************************************************************************
 *                                                                        *
 * Copyright (c) 1996 Michael Richmond and Richard Treffers               *
 *                                                                        *
 *                    This software may be copied and distributed for     *
 *                    educational, research and not for profit services   *
 *                    provided that this copyright and statement are      *
 *                    included in all such copies.                        *
 *                                                                        *
 **************************************************************************/


/*	include file for PCVISTA
		9/23/92 heavily revised removed ibm*, tec*, pga* screen*,SCREEN*
				removed many globals.
				raised NMAX --> 2048
        7/8/93  NMAX --> 4096 (how times have changed)
*/


typedef unsigned short uint16;		/* an unsigned 16-bit integer type */
typedef short   int16; 		/* a 16-bit integer type */
typedef int     int32;		/* a 32-bit integer type */

#define	NMAX	4096	/* maximum row size 		*/
#define	NBUF	80
#define BIG_BUF	255
#define NBOX	20		/* maximum number of boxes 	*/
#define NHIST   65536	/* max number of bins in a histogram */
#define SMALL	1.0e-8
#define NWINDOW		16		/* max number of image windows open at once */
                       		/* can be handled by dir-searching routines */

	/* PCVISTA uses 16-bit signed integers to store data */
#define MAX_DATA_VAL  32767		/* maximum data value per pixel */
#define MIN_DATA_VAL -32767		/* minimum data value per pixel */

void autospan(int fh,int * span,int *zero,int sr,int sc,int nr,int nc );
int16 **boxdata(int fh, int boxno, int imrows, int imcols, int *boxrows, int *boxcols);
void check_box(int boxno, int nrow, int ncol);
void check_circle(int circno, int nrow, int ncol);
int do_axes(int16 **p, int sr, int sc, int nr, int nc, 
            double sky, double fitrad,
            double *row_cen, double *col_cen, 
            double *row_width, double *col_width,
            double *fwhm, double *peak, double *eccen, 
            double *major_axis, double *minor_axis);
int find_sky(int fh, int sr, int sc, int nr, int nc,
            int nskip, int binsize, int16 *sky, float *skysig);
void error(int level, char *msg);
void disable_warnings(void);
void enable_warnings(void);
void exten(char *fname,char *ext);
double evaluate(char *);
char *find(char *, char *);
int find_chord(int dr,int rad);
int gauss_fit(float *x, float *y, float *sig, int ndata, float *amp,
              float *center, float *width, float *chisq);
int getbox(int boxno,int * sr, int * sc, int *nr, int * nc);
int getcircle(int circle,int * cr, int * cc, int * rad);
double get_col(char *buf, int col);
int get_data(int x,int y,int *prow,int *pcol,int16 *pdata,int ndata,char **fname,int* bin,int *zoom);	
int get_win_data(char **fname, 
	int *x_origin, int *x_end, int *y_origin, int *y_end,  
	int *zoom, int *sr, int *endrow, int *sc, int *endcol, int *bin,
	int *zero, int *span, int *dither );
char *getsym(char *);
void image_init(int colormap);
void image_quit(void);
int int_box(int *,int *,int *,int *);
int int_circle(int *,int *,int *);
int keyword(char *,char *);
void putsym(char *);
int show_box(int sr, int sc, int er, int ec);
int show_circle(int cr, int cc,  int rad);
void sortem(char **);
void store_window(char *fname,int x_origin,int y_origin,int zoom,int sr,int endrow,int sc,int endcol,int bin, int zero, int span, int dither);
void trim_window(int, int, int, int, int *, int *);
int vista_usleep(int microseconds);
int window_init(void);
int xform_window(int i,int row,int col,int *px,int *py);
int xform_in_window(int i,int row,int col,int *px,int *py);
void	set_win_id(int);
void X_fill(int, int, int, char *);
void X_box(int, int, int, int);
int gauss_matrix(double **matrix, int num, double *vector);
