Annotation of OpenXM_contrib/pari/src/graph/rect.h, Revision 1.1.1.1
1.1 maekawa 1: /* $Id: rect.h,v 1.1.1.1 1999/09/16 13:47:44 karim Exp $ */
2:
3: #define PLOT_NAME_LEN 20
4: #define NUMRECT 18
5:
6: typedef struct PARI_plot {
7: long width;
8: long height;
9: long hunit;
10: long vunit;
11: long fwidth;
12: long fheight;
13: long init;
14: char name[PLOT_NAME_LEN+1];
15: } PARI_plot;
16:
17: extern PARI_plot pari_plot, pari_psplot;
18:
19: #define w_height (pari_plot.height)
20: #define w_width (pari_plot.width)
21: #define f_height (pari_plot.fheight)
22: #define f_width (pari_plot.fwidth)
23: #define h_unit (pari_plot.hunit)
24: #define v_unit (pari_plot.vunit)
25: #define lmargin (f_width*10)
26: #define rmargin (h_unit - 1)
27: #define tmargin (v_unit - 1)
28: #define bmargin (v_unit + f_height - 1)
29:
30: typedef struct dblPointList{
31: double *d; /* data */
32: long nb; /* number of elements */
33: double xsml,xbig,ysml,ybig; /* extrema */
34: } dblPointList;
35:
36: typedef struct RectObj {
37: struct RectObj *next;
38: long code,color;
39: } RectObj;
40:
41: typedef struct PariRect {
42: RectObj *head,*tail;
43: long sizex,sizey;
44: double cursorx,cursory;
45: double xscale,yscale;
46: double xshift,yshift;
47: } PariRect;
48:
49: /* The structures below are "subclasses" of RectObj. */
50:
51: typedef struct RectObj1P {
52: struct RectObj *next;
53: long code,color;
54: long x,y;
55: } RectObj1P;
56:
57: typedef struct RectObj2P {
58: struct RectObj *next;
59: long code,color;
60: long x1,y1;
61: long x2,y2;
62: } RectObj2P;
63:
64: typedef struct RectObjMP {
65: struct RectObj *next;
66: long code,color;
67: long count;
68: long *xs,*ys;
69: } RectObjMP;
70:
71: typedef struct RectObjST {
72: struct RectObj *next;
73: long code,color;
74: long length;
75: char *s;
76: long x,y;
77: } RectObjST;
78:
79: typedef struct RectObjPN {
80: struct RectObj *next;
81: long code,color;
82: long pen;
83: } RectObjPN;
84:
85: typedef struct RectObjPS {
86: struct RectObj *next;
87: long code,color;
88: double size;
89: } RectObjPS;
90:
91: #define BLACK 1 /* Default */
92: #define BLUE 2 /* Axes */
93: #define SIENNA 3 /* Odd numbered curves in ploth */
94: #define RED 4 /* Curves, or Even numbered curves in ploth */
95: #define CORNSILK 5
96: #define GREY 6
97: #define GAINSBORO 7
98:
99: #define MAX_COLORS 8
100: #define DEFAULT_COLOR BLACK
101:
102: #define ROt_MV 0 /* Move */
103: #define ROt_PT 1 /* Point */
104: #define ROt_LN 2 /* Line */
105: #define ROt_BX 3 /* Box */
106: #define ROt_MP 4 /* Multiple point */
107: #define ROt_ML 5 /* Multiple lines */
108: #define ROt_ST 6 /* String */
109: #define ROt_PTT 7 /* Point type change */
110: #define ROt_LNT 8 /* Line type change */
111: #define ROt_PTS 9 /* Point size change */
112: #define ROt_NULL 10 /* To be the start of the chain */
113:
114: #define ROt_MAX 10 /* Maximal type */
115:
116: /* Pointer conversion. */
117:
118: #define RoMV(rop) ((RectObj1P*)rop)
119: #define RoPT(rop) ((RectObj1P*)rop)
120: #define RoLN(rop) ((RectObj2P*)rop)
121: #define RoBX(rop) ((RectObj2P*)rop)
122: #define RoMP(rop) ((RectObjMP*)rop)
123: #define RoML(rop) ((RectObjMP*)rop)
124: #define RoST(rop) ((RectObjST*)rop)
125: #define RoPTT(rop) ((RectObjPN*)rop)
126: #define RoPTS(rop) ((RectObjPS*)rop)
127: #define RoLNT(rop) ((RectObjPN*)rop)
128: #define RoNULL(rop) ((RectObj*)rop)
129:
130: /* All the access to the rectangle data _should_ go via these macros! */
131:
132: #define RHead(rp) ((rp)->head)
133: #define RTail(rp) ((rp)->tail)
134: #define RXsize(rp) ((rp)->sizex)
135: #define RYsize(rp) ((rp)->sizey)
136: #define RXcursor(rp) ((rp)->cursorx)
137: #define RYcursor(rp) ((rp)->cursory)
138: #define RXshift(rp) ((rp)->xshift)
139: #define RYshift(rp) ((rp)->yshift)
140: #define RXscale(rp) ((rp)->xscale)
141: #define RYscale(rp) ((rp)->yscale)
142:
143: #define RoNext(rop) ((rop)->next)
144: #define RoType(rop) ((rop)->code)
145: #define RoCol(rop) ((rop)->color)
146: #define RoMVx(rop) (RoMV(rop)->x)
147: #define RoMVy(rop) (RoMV(rop)->y)
148: #define RoPTx(rop) (RoPT(rop)->x)
149: #define RoPTy(rop) (RoPT(rop)->y)
150: #define RoLNx1(rop) (RoLN(rop)->x1)
151: #define RoLNy1(rop) (RoLN(rop)->y1)
152: #define RoLNx2(rop) (RoLN(rop)->x2)
153: #define RoLNy2(rop) (RoLN(rop)->y2)
154: #define RoBXx1(rop) (RoBX(rop)->x1)
155: #define RoBXy1(rop) (RoBX(rop)->y1)
156: #define RoBXx2(rop) (RoBX(rop)->x2)
157: #define RoBXy2(rop) (RoBX(rop)->y2)
158:
159: #define RoMPcnt(rop) (RoMP(rop)->count)
160: #define RoMPxs(rop) (RoMP(rop)->xs)
161: #define RoMPys(rop) (RoMP(rop)->ys)
162:
163: #define RoMLcnt(rop) (RoML(rop)->count)
164: #define RoMLxs(rop) (RoML(rop)->xs)
165: #define RoMLys(rop) (RoML(rop)->ys)
166:
167: #define RoSTs(rop) (RoST(rop)->s)
168: #define RoSTl(rop) (RoST(rop)->length)
169: #define RoSTx(rop) (RoST(rop)->x)
170: #define RoSTy(rop) (RoST(rop)->y)
171:
172: #define RoPTTpen(rop) (RoPTT(rop)->pen)
173: #define RoLNTpen(rop) (RoLNT(rop)->pen)
174: #define RoPTSsize(rop) (RoPTS(rop)->size)
175:
176: #define PL_POINTS 1
177: #define GOODRECT(r) (0 <= r && r < NUMRECT)
178: #define GOODCOLOR(c) (1 <= c && c < MAX_COLORS)
179:
180: #define PLOT_PARAMETRIC 0x00001
181: #define PLOT_RECURSIVE 0x00002
182: #define PLOT_NO_RESCALE 0x00004
183: #define PLOT_NO_AXE_X 0x00008
184: #define PLOT_NO_AXE_Y 0x00010
185: #define PLOT_NO_FRAME 0x00020
186: #define PLOT_POINTS 0x00040
187: #define PLOT_POINTS_LINES 0x00080
188: #define PLOT_SPLINES 0x00100
189:
190: #define PLOT_POSTSCRIPT 0x80000
191:
192: extern PariRect **rectgraph;
193: extern long rectpoint_itype;
194: extern long rectline_itype;
195:
196: /* plotport.c */
197:
198: void initrect(long ne, long x, long y);
199: void killrect(long ne);
200: void plot(entree *ep, GEN a, GEN b, char *ch, long prec);
201: GEN ploth(entree *ep, GEN a, GEN b, char *ch, long prec, long flag, long numpoints);
202: GEN ploth2(entree *ep, GEN a, GEN b, char *ch, long prec);
203: GEN plothmult(entree *ep, GEN a, GEN b, char *ch, long prec);
204: GEN plothraw(GEN listx, GEN listy, long flag);
205: GEN plothsizes();
206: void postdraw(GEN list);
207: GEN postploth(entree *ep,GEN a,GEN b,char *ch,long prec,long flag,long numpoints);
208: GEN postploth2(entree *ep,GEN a,GEN b,char *ch,long prec,long numpoints);
209: GEN postplothraw(GEN listx, GEN listy, long flag);
210: void rectbox(long ne, GEN gx2, GEN gy2);
211: void rectcolor(long ne, long color);
212: void rectcopy(long source, long dest, long xoff, long yoff);
213: GEN rectcursor(long ne);
214: void rectdraw(GEN list);
215: void rectline(long ne, GEN gx2, GEN gy2);
216: void rectlines(long ne, GEN listx, GEN listy, long flag);
217: void rectlinetype(long ne, long t);
218: void rectmove(long ne, GEN x, GEN y);
219: GEN rectploth(long drawrect,entree *ep, GEN a, GEN b, char *ch, long prec, ulong flags, long testpoints);
220: GEN rectplothraw(long drawrect, GEN data, long flags);
221: void rectpoint(long ne, GEN x, GEN y);
222: void rectpoints(long ne, GEN listx, GEN listy);
223: void rectpointtype(long ne, long t);
224: void rectpointsize(long ne, GEN size);
225: void rectrbox(long ne, GEN gx2, GEN gy2);
226: void rectrline(long ne, GEN gx2, GEN gy2);
227: void rectrmove(long ne, GEN x, GEN y);
228: void rectrpoint(long ne, GEN x, GEN y);
229: void rectscale(long ne, GEN x1, GEN x2, GEN y1, GEN y2);
230: void rectstring(long ne, char *x);
231: void rectclip(long rect);
232:
233: /* architecture-dependent plot file (plotX.c, plotsun.c, plognuplot.c...) */
234:
235: void PARI_get_plot(long fatal);
236: long term_set(char *s);
237: long plot_outfile_set(char *s);
238: void set_pointsize(double d);
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>