--m.stone November 3, 1979 6:07 PM
--PointDefs
-- Last Edited by: Stone, December 16, 1982 5:50 pm

PointDefs: DEFINITIONS =
BEGIN
X: INTEGER = 1;
Y: INTEGER = 2;
Z: INTEGER = 3;
W: INTEGER = 4;
NDIM: INTEGER = Y;
--points in object space
ObjPt: TYPE = ARRAY [X..NDIM] OF REAL;
--points in screen space
ScrPt: TYPE = ARRAY [X..NDIM] OF INTEGER;
OutOfRange: SIGNAL[value: REAL];
InitPointFns: PROCEDURE;
ObjToScr: PROCEDURE [pt: ObjPt] RETURNS [ScrPt];
ScrToObj: PROCEDURE [pt: ScrPt] RETURNS [ObjPt];
ObjToScrReal: PROCEDURE [pt: ObjPt] RETURNS [ObjPt];
ObjValToScrVal: PROCEDURE [val: REAL] RETURNS [INTEGER] ;
ScrValToObjVal: PROCEDURE [val: INTEGER] RETURNS [REAL] ;

RealSequence: TYPE = REF RealSequenceRec;
RealSequenceRec: TYPE = RECORD[element: SEQUENCE length:NAT OF REAL];
IntegerSequence: TYPE = REF IntegerSequenceRec;
IntegerSequenceRec: TYPE = RECORD[element: SEQUENCE length:NAT OF INTEGER];
ObjPtSequence: TYPE = REF ObjPtSequenceRec;
ObjPtSequenceRec: TYPE = RECORD[element: SEQUENCE length:NAT OF ObjPt];
ScrPtSequence: TYPE = REF ScrPtSequenceRec;
ScrPtSequenceRec: TYPE = RECORD[element: SEQUENCE length:NAT OF ScrPt];

END.