home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
199.lha
/
GimmeLib
/
graph.h
< prev
next >
Wrap
C/C++ Source or Header
|
1988-12-27
|
6KB
|
131 lines
#ifndef GIMMELIB_GRAPH_H
#define GIMMELIB_GRAPH_H
#include "gimmelib/postext.h"
typedef struct _gim_nax {
SHORT origin, size; /* offset of origin and axis size in pixels */
SHORT low; /* coord corresponding to origin */
SHORT amt; /* modified by newgraph flags */
SHORT initpt; /* coord of initial point (see newgraph flags) */
SHORT step; /* step size for even labelling, 0 for fancy */
SHORT labnum, labdenom; /* fraction for label scaling */
} NEWAXIS;
typedef struct _gim_axis {
SHORT origin, size; /* offset of origin and axis size in pixels */
SHORT low; /* coord corresponding to origin */
SHORT high; /* coord corresponding to high end of axis */
SHORT scale; /* scale of axis: -ve means coords per pixel */
SHORT usesize; /* actual size of axis used in pixels */
SHORT lastdata; /* last coord added to graph */
SHORT lastoff; /* offset of last coord in pixels */
SHORT step; /* step size for even labelling, 0 for fancy */
SHORT labnum, labdenom; /* fraction for label scaling */
SHORT flow, fhigh; /* first low and high - for graph reinit */
SHORT fdata, foff; /* first coord and offset - for graph reinit */
} AXIS;
typedef struct _gim_newgr {
UBYTE *title, *xtitle, *ytitle; /* graph and axes titles */
struct TextAttr *titleta, *xta, *yta; /* text attributes for titles */
BYTE FPen, BPen, AxesPen, TitlePen; /* colours for primary parts */
ULONG flags, ctlflags; /* all-important flags */
NEWAXIS X, Y; /* actual new-axis structs */
struct RastPort *rp; /* RastPort to be copied, or NULL */
} NEWGRAPH;
/* flags for NEWGRAPH.flags (and GRAPH.flags) */
#define GGR_DELTAX (1L << 0)
#define GGR_LINETOX (1L << 1)
#define GGR_FILLTOX (1L << 2)
#define GGR_BLACKTOX (1L << 3)
#define GGR_X_MAX (1L << 8) /* default */
#define GGR_X_INTERVALS (1L << 9)
#define GGR_X_SPACING (1L << 10) /* auto-spacing based on size */
#define GGR_X_INTEGRAL (1L << 11)
#define GGR_X_FLAGS 0x0000FFFFL
#define GGR_DELTAY (1L << 16)
#define GGR_LINETOY (1L << 17)
#define GGR_FILLTOY (1L << 18)
#define GGR_BLACKTOY (1L << 19)
#define GGR_Y_MAX (1L << 24) /* default */
#define GGR_Y_INTERVALS (1L << 25)
#define GGR_Y_SPACING (1L << 26)
#define GGR_Y_INTEGRAL (1L << 27)
#define GGR_Y_FLAGS 0xFFFF0000L
#define GGR_DEFAULT 0L
/* control flags for NEWGRAPH.ctlflags (and GRAPH.ctlflags) */
#define GGR_INITORIGIN (1L << 0)
#define GGR_INITPOINT (1L << 1)
#define GGR_NOCLEARSTART (1L << 8)
#define GGR_NOCONNECTLINE (1L << 9)
#define GGR_NOLABELS (1L << 10)
#define GGR_CLEARONEND (1L << 15)
#define GGR_HIRES (1L << 24)
#define GGR_INTERLACE (1L << 25)
#define GGR_CTL_DEFAULT 0L
/* explanation of drawing flags:
* DELTA: coord of new point is relative to coord of previous point
* LINETO: draw a line from the point to the respective axis
* FILLTO: area fill the trapezoid from previous point to resp. axis
* BLACKTO: like LINETO but using background colour (useful with FILLTO)
/* explanation of newaxis-specific flags:
* MAX: newaxis.amt specifies max coord on initial graph
* INTERVALS: newaxis.amt specifies difference between low and high coords
* SPACING: newaxis.amt specifies the scale to be applied (+ve or -ve)
* INTEGRAL: force integer number of pixels/coord or coords/pixel
/* explanation of control flags:
* INITORIGIN: use origin as initial point
* INITPOINT: use point specified in nexaxes as initial point
* (otherwise newaxis.initpt is ignored)
* NOCLEARSTART: don't clear the rastport when initializing graph
* (useful if several graphs on same "rastport")
* NOLABELS: don't draw titles, axes and labels for me ever (I'll do it)
* NOCONNECTLINE: don't connect points in graph by a line
* CLEARONEND: clear the graph when doing getRidOfGraph
* HIRES: graph to be displayed on HIRES screen
* INTERLACE: graph to be displayed on INTERLACE screen
* (these two are useful for determining aspect ratios)
typedef struct _gim_graph {
struct RastPort rp; /* actual RastPort struct */
ULONG flags; /* flags, as in newgraph */
ULONG ctlflags; /* control flags, as in newgraph */
UBYTE *title, *xtitle, *ytitle; /* graph and axes titles */
struct TextFont *titletf, *xtf, *ytf; /* fonts for titles */
struct TextFont *xlabtf, *ylabtf; /* fonts for axes' labels */
BYTE FPen, BPen, AxesPen, TitlePen; /* colours for primary parts */
BYTE XlabPen, YlabPen, XtitlePen, YtitlePen; /* secondary colours */
SHORT points; /* number of points added so far */
AXIS X, Y; /* actual axis structs */
void *memhead; /* memory-chain for this graph */
struct _gim_graph *next; /* link to next graph (future use) */
} GRAPH;
/* INTERNAL scaling factor used by graph routines for intermediate results */
#define SCALE 6
/* flags for graphWriteLabel() */
#define GWL_XAXIS (1L << 20) /* label the x-axis (don't set yaxis) */
#define GWL_YAXIS (1L << 21) /* label the y-axis (don't set xaxis) */
#define GWL_CLEAR_ONLY (1L << 22) /* clear the previous labels only! */
#define GWL_CLEAR_OLD (1L << 23) /* clear previous then draw labels */
#define GWL_RESERVED (0x000fffffL) /* reserved for internal use only!! */
#define GWL_DEFAULT (AWL_YAXIS)
#endif !GIMMELIB_GRAPH_H