<> <> <> <> <<>> <> DIRECTORY ImagerColor USING [Color, ColorOperator], ImagerFont USING [Char, CharSet, Font], ImagerPath USING [Clipper, PathProc], ImagerPixelArray USING [PixelArray], ImagerTransformation USING [Transformation], Prop USING [PropList], Rope USING [ROPE], Vector2 USING [VEC]; Imager: CEDAR DEFINITIONS ~ BEGIN <<>> <> Context: TYPE ~ REF ContextRep; ContextRep: TYPE ~ RECORD[ class: Class, -- procedures for the context class data: REF, -- instance data (class-dependent) props: Prop.PropList -- instance property list ]; VEC: TYPE ~ Vector2.VEC; Transformation: TYPE ~ ImagerTransformation.Transformation; PathProc: TYPE ~ ImagerPath.PathProc; Clipper: TYPE ~ ImagerPath.Clipper; PixelArray: TYPE ~ ImagerPixelArray.PixelArray; Color: TYPE ~ ImagerColor.Color; ColorOperator: TYPE ~ ImagerColor.ColorOperator; Char: TYPE ~ ImagerFont.Char; CharSet: TYPE ~ ImagerFont.CharSet; Font: TYPE ~ ImagerFont.Font; ROPE: TYPE ~ Rope.ROPE; <<>> <> DoSave: PROC[context: Context, action: PROC]; DoSaveAll: PROC[context: Context, action: PROC]; <> <> <> <<>> PutProp: PROC[context: Context, key: REF, value: REF]; <> <<>> GetProp: PROC[context: Context, key: REF] RETURNS[value: REF]; <> <> <<>> RemProp: PROC[context: Context, key: REF]; <> <> <<>> <> Error: ERROR[errorCode: ErrorCode]; ErrorCode: TYPE ~ { Bug, -- detected an internal inconsistency Unimplemented, -- operation not provided for this context NotYetImplemented, -- part of the Imager implementation is incomplete UnknownSpecialColor, -- unrecognized atom for a special Color GrayParameterOutOfRange -- for SetGray or MakeGray, f<0 or f>1 }; <<>> <> <<>> ConcatT: PROC[context: Context, m: Transformation]; <> <<>> <<>> metersPerInch: REAL ~ 0.0254; metersPerPoint: REAL ~ 0.00035146; metersPerMica: REAL ~ 0.00001; <> <<>> ScaleT: PROC[context: Context, s: REAL]; <> <> <<>> Scale2T: PROC[context: Context, s: VEC]; <> <<>> RotateT: PROC[context: Context, a: REAL]; <> <> <<>> TranslateT: PROC[context: Context, t: VEC]; <> <<>> <<>> Move: PROC[context: Context]; <> <<>> Trans: PROC[context: Context]; <> <<>> <<>> <> MaskFill: PROC[context: Context, pathProc: PathProc, pathData: REF _ NIL]; <> <> <<>> MaskFillParity: PROC[context: Context, pathProc: PathProc, pathData: REF _ NIL]; <> <<>> MaskRectangle: PROC[context: Context, x, y, w, h: REAL]; MaskRectangleI: PROC[context: Context, x, y, w, h: INTEGER] ~ INLINE { context.class.MaskRectangleI[context, x, y, w, h] }; <> <<>> Box: TYPE ~ RECORD[xmin, ymin, xmax, ymax: REAL]; MaskBox: PROC[context: Context, box: Box]; <> <> <<>> StrokeEnd: TYPE ~ {square, butt, round}; <> <> <> StrokeJoint: TYPE ~ {miter, round}; <> <> StrokeStyle: TYPE ~ RECORD[end: StrokeEnd, joint: StrokeJoint]; StrokeDashes: TYPE ~ REF StrokeDashesRep; StrokeDashesRep: TYPE ~ RECORD[begin, repeat, end: DashPattern _ NIL]; DashPattern: TYPE ~ LIST OF DashSpec; DashSpec: TYPE ~ RECORD[style: StrokeStyle, width, length, stretch: REAL]; SetStrokeWidth: PROC[context: Context, width: REAL]; <> SetStrokeStyle: PROC[context: Context, style: StrokeStyle]; <> SetStrokeDashes: PROC[context: Context, dashes: StrokeDashes _ NIL]; <> MaskStroke: PROC[context: Context, pathProc: PathProc, pathData: REF _ NIL]; <> <<>> MaskStrokeClosed: PROC[context: Context, pathProc: PathProc, pathData: REF _ NIL]; <> <<>> MaskVector: PROC[context: Context, p1, p2: VEC]; MaskVectorI: PROC[context: Context, x1, y1, x2, y2: INTEGER] ~ INLINE { context.class.MaskVectorI[context, x1, y1, x2, y2] }; <> <<>> MaskPixel: PROC[context: Context, pa: PixelArray]; <> MaskBits: PROC[context: Context, base: LONG POINTER, wordsPerLine: NAT, sMin, fMin, sSize, fSize: NAT, sOffset, fOffset: INTEGER _ 0]; SetPriorityImportant: PROC[context: Context, priorityImportant: BOOL]; <> <<>> SetNoImage: PROC[context: Context, noImage: BOOL]; <> <<>> <<>> <> <<>> SetXY: PROC[context: Context, p: VEC]; SetXYI: PROC[context: Context, x, y: INTEGER] ~ INLINE { context.class.SetXYI[context, x, y] }; <> <<>> SetXYRel: PROC[context: Context, v: VEC]; SetXYRelI: PROC[context: Context, x, y: INTEGER] ~ INLINE { context.class.SetXYRelI[context, x, y] }; <> SetXRel: PROC[context: Context, x: REAL]; SetXRelI: PROC[context: Context, x: INTEGER] ~ INLINE { context.class.SetXYRelI[context, x, 0] }; <> <<>> SetYRel: PROC[context: Context, y: REAL]; SetYRelI: PROC[context: Context, y: INTEGER] ~ INLINE { context.class.SetXYRelI[context, 0, y] }; <> <<>> <<>> SetFont: PROC[context: Context, font: Font]; <> Show: PROC[context: Context, chars: PROC[PROC[Char]], xrel: BOOL _ FALSE]; ShowChar: PROC[context: Context, char: CHAR, set: CharSet _ 0]; ShowRope: PROC[context: Context, rope: ROPE, start: INT _ 0, len: INT _ INT.LAST, set: CharSet _ 0]; ShowText: PROC[context: Context, text: REF READONLY TEXT, start: NAT _ 0, len: NAT _ NAT.LAST, set: CharSet _ 0]; <<>> SetAmplifySpace: PROC[context: Context, amplifySpace: REAL]; <<>> StartUnderline: PROC[context: Context]; <> <<>> MaskUnderline: PROC[context: Context, dy, h: REAL]; MaskUnderlineI: PROC[context: Context, dy, h: INTEGER] ~ INLINE { context.class.MaskUnderlineI[context, dy, h] }; <> <> <> <<>> CorrectMask: PROC[context: Context]; CorrectSpace: PROC[context: Context, v: VEC]; Space: PROC[context: Context, x: REAL]; SpaceI: PROC[context: Context, x: INTEGER] ~ INLINE { context.class.SpaceI[context, x] }; <> <<>> SetCorrectMeasure: PROC[context: Context, v: VEC]; SetCorrectTolerance: PROC[context: Context, v: VEC]; SetCorrectShrink: PROC[context: Context, correctShrink: REAL]; <<>> Correct: PROC[context: Context, action: PROC]; <<>> <> <<>> black, white: READONLY Color; SetColor: PROC[context: Context, color: Color]; <> SetGray: PROC[context: Context, f: REAL]; <> <<>> SetSampledColor: PROC[context: Context, pa: PixelArray, m: Transformation _ NIL, colorOperator: ColorOperator]; SetSampledBlack: PROC[context: Context, pa: PixelArray, m: Transformation _ NIL, clear: BOOL _ FALSE]; <> <<>> <<>> <> ClipOutline: PROC[context: Context, pathProc: PathProc, pathData: REF _ NIL]; ExcludeOutline: PROC[context: Context, pathProc: PathProc, pathData: REF _ NIL]; ClipRectangle: PROC[context: Context, x, y, w, h: REAL]; ClipRectangleI: PROC[context: Context, x, y, w, h: INTEGER] ~ INLINE { context.class.ClipRectangleI[context, x, y, w, h, FALSE] }; ExcludeRectangle: PROC[context: Context, x, y, w, h: REAL]; ExcludeRectangleI: PROC[context: Context, x, y, w, h: INTEGER] ~ INLINE { context.class.ClipRectangleI[context, x, y, w, h, TRUE] }; <<>> <> RealKey: TYPE ~ { -- for SetReal, GetReal DCScpx, DCScpy, correctMX, correctMY, mediumXSize, mediumYSize, fieldXMin, fieldYMin, fieldXMax, fieldYMax, strokeWidth, underlineStart, amplifySpace, correctShrink, correctExpand, correctTX, correctTY }; IntKey: TYPE ~ { -- for SetInt, GetInt priorityImportant, noImage, strokeStyle, correctPass }; SetT: PROC[context: Context, m: Transformation]; <> <> SetClipper: PROC[context: Context, clipper: Clipper]; SetReal: PROC[context: Context, key: RealKey, value: REAL]; SetInt: PROC[context: Context, key: IntKey, value: INT]; GetT: PROC[context: Context] RETURNS[Transformation]; GetFont: PROC[context: Context] RETURNS[Font]; GetColor: PROC[context: Context] RETURNS[Color]; GetClipper: PROC[context: Context] RETURNS[Clipper]; GetReal: PROC[context: Context, key: RealKey] RETURNS[REAL]; GetInt: PROC[context: Context, key: IntKey] RETURNS[INT]; GetCP: PROC[context: Context] RETURNS[VEC]; GetCPRounded: PROC[context: Context] RETURNS[VEC]; Class: TYPE ~ REF ClassRep; ClassRep: TYPE ~ RECORD[ type: ATOM, SetT: PROC[context: Context, m: Transformation], SetFont: PROC[context: Context, font: Font], SetColor: PROC[context: Context, color: Color], SetClipper: PROC[context: Context, clipper: Clipper], SetReal: PROC[context: Context, key: RealKey, value: REAL], SetInt: PROC[context: Context, key: IntKey, value: INT], GetT: PROC[context: Context] RETURNS[Transformation], GetFont: PROC[context: Context] RETURNS[Font], GetColor: PROC[context: Context] RETURNS[Color], GetClipper: PROC[context: Context] RETURNS[Clipper], GetReal: PROC[context: Context, key: RealKey] RETURNS[REAL], GetInt: PROC[context: Context, key: IntKey] RETURNS[INT], DoSave: PROC[context: Context, action: PROC], DoSaveAll: PROC[context: Context, action: PROC], ConcatT: PROC[context: Context, m: Transformation], Scale2T: PROC[context: Context, s: VEC], RotateT: PROC[context: Context, a: REAL], TranslateT: PROC[context: Context, t: VEC], Move: PROC[context: Context], Trans: PROC[context: Context], SetGray: PROC[context: Context, f: REAL], SetSampledColor: PROC[context: Context, pa: PixelArray, m: Transformation, colorOperator: ColorOperator], MaskFill: PROC[context: Context, pathProc: PathProc, pathData: REF, parity: BOOL], MaskStroke: PROC[context: Context, pathProc: PathProc, pathData: REF, closed: BOOL], MaskRectangle: PROC[context: Context, x, y, w, h: REAL], MaskRectangleI: PROC[context: Context, x, y, w, h: INTEGER], MaskVector: PROC[context: Context, p1, p2: VEC], MaskVectorI: PROC[context: Context, x1, y1, x2, y2: INTEGER], StartUnderline: PROC[context: Context], MaskUnderline: PROC[context: Context, dy, h: REAL], MaskUnderlineI: PROC[context: Context, dy, h: INTEGER], MaskPixel: PROC[context: Context, pa: PixelArray], MaskBits: PROC[context: Context, base: LONG POINTER, wordsPerLine: NAT, sMin, fMin, sSize, fSize: NAT, sOffset, fOffset: INTEGER], ClipOutline: PROC[context: Context, pathProc: PathProc, pathData: REF, exclude: BOOL], ClipRectangle: PROC[context: Context, x, y, w, h: REAL, exclude: BOOL], ClipRectangleI: PROC[context: Context, x, y, w, h: INTEGER, exclude: BOOL], SetXY: PROC[context: Context, p: VEC], SetXYI: PROC[context: Context, x, y: INTEGER], SetXYRel: PROC[context: Context, v: VEC], SetXYRelI: PROC[context: Context, x, y: INTEGER], GetCP: PROC[context: Context, round: BOOL] RETURNS[VEC], Show: PROC[context: Context, chars: PROC[PROC[Char]], xrel: BOOL], CorrectMask: PROC[context: Context], CorrectSpace: PROC[context: Context, v: VEC], Space: PROC[context: Context, x: REAL], SpaceI: PROC[context: Context, x: INTEGER], SetCorrectMeasure: PROC[context: Context, v: VEC], SetCorrectTolerance: PROC[context: Context, v: VEC], Correct: PROC[context: Context, action: PROC], props: Prop.PropList _ NIL ]; <<>> END.