GR: module{ PATH: con "/dis/math/gr.dis"; OP: adt{ code, n: int; x, y: array of real; t: string; }; open: fn(ctxt: ref Draw->Context, title: string): ref Plot; Plot: adt{ bye: fn(p: self ref Plot); equalxy:fn(p: self ref Plot); graph: fn(p: self ref Plot, x, y: array of real); paint: fn(p: self ref Plot, xlabel, xunit, ylabel, yunit: string); pen: fn(p: self ref Plot, nib: int); text: fn(p: self ref Plot, justify: int, s: string, x, y: real); op: list of OP; xmin, xmax, ymin, ymax: real; textsize: real; t: ref Tk->Toplevel; # window containing .fc.c canvas titlechan: chan of string; # Wm titlebar canvaschan: chan of string; # button clicks for measurements }; # op code GRAPH: con 1; TEXT: con 2; PEN: con 3; # pen CIRCLE: con 101; CROSS: con 102; SOLID: con 103; DASHED: con 104; INVIS: con 105; REFERENCE: con 106; DOTTED: con 107; # text justify LJUST: con 8r00; CENTER: con 8r01; RJUST: con 8r02; HIGH: con 8r00; MED: con 8r10; BASE: con 8r20; LOW: con 8r30; UP: con 8r100;};
GR: module{
PATH: con "/dis/math/gr.dis";
OP: adt{
code, n: int;
x, y: array of real;
t: string;
};
open: fn(ctxt: ref Draw->Context, title: string): ref Plot;
Plot: adt{
bye: fn(p: self ref Plot);
equalxy:fn(p: self ref Plot);
graph: fn(p: self ref Plot, x, y: array of real);
paint: fn(p: self ref Plot, xlabel, xunit, ylabel, yunit: string);
pen: fn(p: self ref Plot, nib: int);
text: fn(p: self ref Plot, justify: int, s: string, x, y: real);
op: list of OP;
xmin, xmax, ymin, ymax: real;
textsize: real;
t: ref Tk->Toplevel; # window containing .fc.c canvas
titlechan: chan of string; # Wm titlebar
canvaschan: chan of string; # button clicks for measurements
};
# op code
GRAPH: con 1;
TEXT: con 2;
PEN: con 3;
# pen
CIRCLE: con 101;
CROSS: con 102;
SOLID: con 103;
DASHED: con 104;
INVIS: con 105;
REFERENCE: con 106;
DOTTED: con 107;
# text justify
LJUST: con 8r00;
CENTER: con 8r01;
RJUST: con 8r02;
HIGH: con 8r00;
MED: con 8r10;
BASE: con 8r20;
LOW: con 8r30;
UP: con 8r100;
};