home *** CD-ROM | disk | FTP | other *** search
- /*
- * GRAPH, Version 1.00 - 4 August 1989
- *
- * Copyright 1989, David Gay. All Rights Reserved.
- * This software is freely redistrubatable.
- */
-
- /* The object class. All the different objects are subclasses of it */
- #ifndef OBJECT_H
- #define OBJECT_H
-
- #include <stdio.h>
- #include "list.h"
- #include "grph.h"
-
- #define FNAMELEN 20 /* Length of object name */
-
- struct object
- {
- node node;
- struct graph *g; /* Which graph this object is in (g->s.x,y contains curren
- t mouse pos)*/
- char name [FNAMELEN]; /* Name (for functions only) "" otherwise */
- int ok; /* For functions only: is it displayed */
- int mx, my; /* Specify an (optional) displacement for the mouse pointer whe
- n this is selected */
- struct Region *(*delete) (struct object *this);
- void (*select) (struct object *this); /* You have been selecte
- d */
- struct Region *(*deselect) (struct object *this); /* done. does the screen
- need refreshing ? */
- int (*down) (struct object *this); /* User pressed button.
- Return TRUE if (x,y) is inside you */
- void (*move) (struct object *this);
- struct Region *(*up) (struct object *this); /* Redraw necessary ? */
-
- int (*edit) (struct object *this, struct Region **ref); /*
- Returns true if graph changed */
- void (*draw) (struct object *this, int allow_mes);
- struct Region *(*improve) (struct object *this);
- char *(*f2str) (struct object *this, char *buf, int maxlen);
- void (*var_change)(struct object *this, char *name); /* Change in
- variable "name" */
- int (*save) (struct object *this, FILE *f);
- int (*inform) (struct object *this); /* Inform of changes to
- g */
- void (*confirm) (struct object *this, int ok); /* Confirm previ
- ous changes */
- };
-
- /* A special object, used for selecting points on screen (cross hair mode) */
- /* The fields are public. Only new, down, move, up and deselect are implemented
- */
- struct pos
- {
- struct object o;
- int cross : 1;
- int rect : 1;
- double x0, y0, x1, y1;
- };
-
- struct pos *new_pos(struct graph *g);
-
- /* A label on the graph */
- struct label *new_label(struct graph *g, double x, double y);
- struct label *load_label(struct graph *g, FILE *f);
-
- /* A function (ie f(x), r(theta), etc */
- struct function *new_function(struct graph *g);
- struct function *load_function(struct graph *g, FILE *f);
-
- #endif
-
-