<> <> <> <> <<>> IntTransDefs: CEDAR DEFINITIONS = <<*************************************************************************************>> <> <> <> <> <<2) input parameters specified in (long) integers (no reals); and 3) slow floating point>> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <<;>> <<;>> <> <> <> <> <> <> <> <> <> <> <> <> <<"SaveCompiledFormOfInvokeSymbol[100]WithTransformation[T]";>> <> <> <> <> <> <> <> <> <> <<*************************************************************************************>> BEGIN ContextStack: TYPE = LIST OF Transform _ NIL; Transform: TYPE = REF TransformRecord; TransformRecord: TYPE = RECORD[ type: [ident..translate+rotscale], a11,a21,a31,a12,a22,a32,a33: REAL]; ident: INTEGER = 0; translate: INTEGER = 1; rotscale: INTEGER = 2; CoordName: TYPE = {x,y}; InitTransformation: PUBLIC PROCEDURE RETURNS [BOOL]; <> FinishTransformation: PUBLIC PROCEDURE RETURNS [BOOL]; FreezeContext: PUBLIC PROCEDURE RETURNS [cs: ContextStack]; <> SwapContext: PUBLIC PROCEDURE [cs: ContextStack]; <> Push: PUBLIC PROCEDURE; <> Pop: PUBLIC PROCEDURE; <> Rotate: PUBLIC PROCEDURE[xRot,yRot: INT]; <> Translate: PUBLIC PROCEDURE[xTrans,yTrans: INT]; <> Mirror: PUBLIC PROCEDURE[coord: CoordName]; <> Scale: PUBLIC PROCEDURE[numerator,denominator: INT]; <> GetLocal: PUBLIC PROCEDURE RETURNS[localTransform: TransformRecord]; <> ApplyLocal: PUBLIC PROCEDURE[transform: TransformRecord]; <> GetCurrent: PUBLIC PROCEDURE RETURNS[currentTransform: TransformRecord]; <> TransformPoint: PUBLIC PROCEDURE[x,y: INT] RETURNS[xT,yT: INT]; <> TransformVector: PUBLIC PROCEDURE[x,y: INT] RETURNS[xT,yT: INT]; <> RTransformPoint: PUBLIC PROCEDURE[x,y: REAL] RETURNS[xT,yT: REAL]; <> RTransformVector: PUBLIC PROCEDURE[x,y: REAL] RETURNS[xT,yT: REAL]; <> TransformationStackUnderflow: PUBLIC ERROR; TransformationBadContext: PUBLIC ERROR; END.