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.h
< prev
next >
Wrap
C/C++ Source or Header
|
1989-11-20
|
3KB
|
74 lines
/*
* 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