home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_disks
/
200-299
/
ff280.lzh
/
Graph
/
object
/
function.h
< prev
next >
Wrap
C/C++ Source or Header
|
1989-11-20
|
3KB
|
84 lines
/*
* GRAPH, Version 1.00 - 4 August 1989
*
* Copyright 1989, David Gay. All Rights Reserved.
* This software is freely redistrubatable.
*/
/* class function, inherits from class object. The actual function types are su
b-classes of this one */
#ifndef FUNCTION_H
#define FUNCTION_H
#include "list.h"
#include "object.h"
#include "graph.h"
#include "user/eval.h"
#include <stddef.h>
#define MAXERROR 0.2 /* For discontinuities */
#define MAXITER 4 /* In improvement algo */
#define FLAT 2 /* number of pixels allowed in "flat" discontinuities */
#define DEFSTEPS 100 /* Default number of steps */
#define FDIST 5 /* Max (y) distance for function select */
/* class function (inherited from class object). Fields are public. */
struct function {
struct object o;
int (*calcf)(struct function *this, int allow_mes); /* Recalculate values o
f points */
int (*save)(struct function *this, FILE *f); /* Save function specif
ic info. to file */
/* Information global to all types of functions */
char vname[VARLEN]; /* name of variable */
double min, max; /* Limits for variable */
int steps; /* Number of points to calculate */
BYTE colour; /* Colour in which to draw */
int showdisc : 1; /* Show discontinuities ? */
int nicedisc : 1; /* Allow "nice" discontinuities */
/* State info */
int calc : 1; /* Points calculated ? */
int selected : 1; /* function selected ? */
variable var; /* Actual variable */
var_list used; /* Vars this function depends on */
list pts; /* Points composing this, different structure for each
type of function */
size_t sizept; /* Size of one point (for delete) */
};
/* Flags for point state */
#define EXISTS 1 /* Function is defined here */
#define DISC 2 /* This is a discontinuity */
#define OK 4 /* All is well */
/* The base class for a point */
struct point {
node node;
char state;
double x, y;
};
typedef struct point point;
/* Create/load the various types of function */
struct f_of_x *new_f_of_x(struct graph *g, char *name);
struct x_y *new_x_y(struct graph *g, char *name);
struct r_of_t *new_r_of_t(struct graph *g, char *name);
struct r_t *new_r_t(struct graph *g, char *name);
struct f_of_x *load_f_of_x(struct graph *g, FILE *f);
struct x_y *load_x_y(struct graph *g, FILE *f);
struct r_of_t *load_r_of_t(struct graph *g, FILE *f);
struct r_t *load_r_t(struct graph *g, FILE *f);
/* A few useful functions ... */
void display_function(struct function *this); /* Draws a function */
void init_function(struct function *this, struct graph *g, char *name); /* Stan
dard init. */
int load_rest(struct function *this, FILE *f); /* Load public part of function
*/
#endif