--m.stone June 10, 1980 3:20 PM
DIRECTORY
PointDefs: FROM "PointDefs" USING[ObjPt,ScrPt,NDIM];
SplineDefs: DEFINITIONS =
BEGIN
FPCoords: TYPE = PointDefs.ObjPt;
NDIM: INTEGER = PointDefs.NDIM;
Coeffs: TYPE = RECORD
[t3: FPCoords,
t2: FPCoords,
t1: FPCoords,
t0: FPCoords];
SplineType: TYPE =
--global splines
{naturalUM,cyclicUM,naturalAL,cyclicAL,
--special case cubic curves
bezier,bsplineInterp,
--local splines
bspline,crspline};
DisplayFnc: TYPE = {write,erase};
TooFewKnots: SIGNAL[numknots: INTEGER] ;
UnknownSpline: SIGNAL[splineType: SplineType] ;
UnmatchedEnds: SIGNAL ;
NoInitSplines: SIGNAL ;
InitSplines: PROCEDURE[
alloc: PROCEDURE[nwords: CARDINAL] RETURNS[POINTER],
free: PROCEDURE[POINTER TO UNSPECIFIED]];
FreeCoeffs: PROCEDURE[coeffs: DESCRIPTOR FOR ARRAY OF Coeffs];
MakeSpline: PROCEDURE
[knots: DESCRIPTOR FOR ARRAY OF FPCoords, splineType: SplineType]
RETURNS [DESCRIPTOR FOR ARRAY OF Coeffs];
DisplayCubic: PROCEDURE
[coeffs: POINTER TO Coeffs,
MoveTo: PROCEDURE[PointDefs.ScrPt],
DrawTo: PROCEDURE[PointDefs.ScrPt]];
END.