ftp.nice.ch/pub/next/science/mathematics/HippoDraw.2.0.s.tar.gz#/HippoDraw/Hippo.bproj/hippoplotamus/hstruct.h

This is hstruct.h in view mode; [Download] [Up]

#ifndef _HIPPOSTRUCT_H_
#define _HIPPOSTRUCT_H_

/*
 * hippostruct.h - definitions to structures in hippo package.
 * Structures were put in a separate file so the RCS version
 * number changes only when the structures have been changed.
 *
 * Paul Rensing, May 2, 1991 
 *
 * Copyright (C)  1991  The Board of Trustees of The Leland Stanford
 * Junior University.  All Rights Reserved.
 *
 * $Id: hstruct.h,v 5.0 1993/08/17 21:56:41 rensing Exp $
 */


/*
 * ntuple/display structure version number (maintained by RCS)
 */
#define STRUCT_VERSION "$Id: hstruct.h,v 5.0 1993/08/17 21:56:41 rensing Exp $"

/*
 * the "magic number", which is "h_" (in ASCII), 
 *     for the start of hippo data files.
 */
#define MAGIC "\150\137"	/* circumvent the EBCDIC strings */

/*
 * allowed length of function name used in registry.
 */
#define FUNCNAMELEN 32

/*
 * a rectangle. Designed to match NeXT's NXRect
 */
typedef struct rectangle_s
{
     struct origin_s
     {
	  float x, y;
     } origin;
     struct size_s
     {
	  float width, height;
     } size;
} rectangle;


/*
 * structure to keep lists of functions.
 * Maintain as linked lists for ease of use.
 */
typedef struct fid_str
{
     char name[FUNCNAMELEN+1];
     int (*funcPtr)();
     double *paramBlk;
     int blkSize;		/* parameter block size in nParam */
     linestyle_t lineStyle;	/* linestyle; needed for overplot funcs */
     struct fid_str *next;
} func_id_t, *func_id;

typedef struct bins_s
{
     struct bin_flags
     {
	  char fixed;		/* fixed bins */
	  char dirty;		/* bins are dirty, re-bin */
	  char dummies[2];	/* keep struct length to multiply of 4 */
     } flags;

     struct axis2_s
     {
	  int nBins;
	  float low;
	  float high;
	  float moments[3];	/* moments[n] = sum of weight*var^n */
     } xAxis, yAxis;

     float *data;		/* contents of bins */
     float *variance;		/* variance (error^2) of bins */
     float totals[3][3];	/* overflow and underflow */
     float binMin;
     float binMax;
     int binAlloc;		/* amount of space allocated for bins */
     int ndata;			/* number of data points binned */
} bins_t;

     
typedef struct axis_s
{
     float low;			/* lower limit for axis */
     float high;		/* upper limit for axis */
     char *label;		/* label for axis */
     struct axis_flags
     {
	  char log;		/* false=linear axis,true=log10 axis */
	  char autoScale;	/* flag to autoscale axis */
	  char tickLocation;	/* or of LEFT,RIGHT,TOP,BOTTOM  */
	  char labelLocation;
	  char scaleLocation;
	  char autoTick;
	  char dummies[2];	/* keep struct length to multiple of 4 */
     } flags;
     float tickLength;
     float scaleFontSize;

     float firstTick;
     float tickStep;
     int numMinorTicks; /* number of minor ticks betw. major */
} axis_t;

typedef struct bind_strt_s
{
     int x;			/* n-tuple variable we use as x     */
     int y;			/*   "        "       "       y     */
     int z;			/*   "        "       "       z     */
     int weight;		/*   "        "       "     weight  */
     int xerror;		/*   "        "       "     x error */
     int yerror;		/*   "        "       "     y error */
} bind_strt_t;


/*
 * Structure defining the data for an n-tuple.
 */
typedef struct ntuple_s
{
     int ndim;			/* number of dimensions of data */
     int rev;			/* revision number; incr if clear n-tuple */

     float **data;		/* array of data */
     int ndata;			/* number of data points */
     int memAlloc;		/* size of one data vector */

     int extremeBad;            /* TRUE if nlow/nhigh could be bad */
     float *nlow;		/* lowest value for dimension n */
     float *nhigh;		/* highest value for dimension n */

     char *title;		/* title of whole ntuple */
     char **label;		/* label for dimension n */
} ntuple_t, *ntuple;



/*
 * Structure defining data for a hippo display.
 */
typedef struct display_s
{
     ntuple tuple;		/* ntuple from which bins are made */
     int nt_rev;		/* rev no. of ntuple when last displayed */
     char *ntFile;		/* file name for ntuple if by reference */

     int dim;			/* obsolete! */
     graphtype_t graphtype;	/* type of graph, e.g. lego, scatter, etc */
     drawtype_t drawtype;	/* type of drawing, e.g. point, line, etc */

     struct display_flags
     {
	  char drawTitles;	/* if true, draw titles and axis labels */
	  char drawAxes;	/* if true, draw axes */
	  char ntByReference;	/* variable "ntuple" is actually integer */
	  char plotFuncs;	/* plot the individual functions */
	  char plotFuncSum;	/* plot the sum of the functions */
	  char dummies[3];
     } flags;
     
     char *title;		/* title */

     bins_t bins;		/* the bins */
     
     axis_t xAxis,yAxis,zAxis;
     
     plotsymbol_t plotSymbol;	/* plot symbol, line style */
     float symbolSize;
     linestyle_t lineStyle;
     
     bind_strt_t binding;	/* binding of n-tuple dim. to plot quantity */
     
     rectangle drawRect;	/* specify rectangle within which we draw */
     rectangle marginRect;	/* the margin area within the above */

     func_id nt_cut;		/* list of cuts on ntuple data */
     func_id bin_func;		/* list of bin transform funcs */
     func_id plot_func;		/* list of overplot functions */
     linestyle_t fSumLineStyle;
     
     func_id binToColor;	/* transfer function for greyscale/color */
     
     void *threeDWorkArea;	/* pointer to 3D plot workarea or null */
     float theta, phi, dist;    /* angles and distance for 3D plots */
     int doCube, doWireFrame, doFill, doMesh, doScatter, doSpeedy;
     float color[5];		/* grey/color for lego plot faces */
} display_t, *display;


/*
 * structure to hold a hippo record. Only used by the internal IO routines.
 */
typedef struct hippo_rec_s
{
     char magic[4];
     char *s_version;
     ntuple *nt_list;
     int num_nt;
     display *disp_list;
     int num_disp;
} hippo_rec;


#endif				/* _HIPPOSTRUCT_H_ */

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.