/*
   File:        contours.h
   Author:      Andrew W. Moore
   Created:     Fri May 14 16:32:22 EDT 1993
   Description: Header for Drawing contours of functions and 2d arrays

   Copyright (C) 1992, Andrew W. Moore
*/

#define THREE 3

typedef struct contrig_struct
{
  point corners[THREE];
  float values[THREE];
} contrig;

typedef struct caxis_struct
{
  float lo,hi;
  int parts;
} caxis;

typedef struct conaxes_struct
{
  caxis x,y,z;
} conaxes;

typedef struct condata_struct
{
  int num_x_parts,num_y_parts;
  float_ptr *data;
} condata;

typedef struct conenv_struct
{
  conaxes *conaxes;
  condata *condata;
} conenv;
  
extern condata *make_condata();               /* (num_x_parts,num_y_parts) */
extern void free_condata();                   /* (cd) */
extern float condata_ref();                   /* (cd,i,j) */
extern void condata_update();                 /* (cd,i,j,v) */

extern void init_caxis();                     /* (ax,lo,hi,parts) */

/*
    height_fn : (float) x , (float) y , (char *) data -----> (float) height
*/

extern condata *make_condata_from_function(); /* (cax,height_fn,h_fn_data) */

extern lines *find_scalefree_contours();      /* (cd,z_caxis) */
extern lines *find_function_contours();       /* (cax,height_fn,h_fn_data) */

extern void draw_data_contours();             /* (cd,z_axis) */
extern void draw_function_contours();         /* (cax,height_fn,h_fn_data) */

