<<>> <> <> <> DIRECTORY Atom, BiScrollers, Cursors, Icons, Imager, Menus, Rope, TIPUser, ViewerClasses; BiAxials: CEDAR DEFINITIONS = BEGIN LORA: TYPE ~ LIST OF REF ANY; ROPE: TYPE ~ Rope.ROPE; VEC: TYPE ~ Imager.VEC; Box: TYPE ~ Imager.Box; Font: TYPE ~ Imager.Font; Viewer: TYPE ~ ViewerClasses.Viewer; BiScrollerClass: TYPE ~ BiScrollers.BiScrollerClass; BiScroller: TYPE ~ BiScrollers.BiScroller; BiAxial: TYPE ~ BiScroller; Class: TYPE ~ REF ClassRep; ClassRep: TYPE ~ RECORD [ private: ClassPrivate, classData: REF ANY ]; ClassPrivate: TYPE ~ REF ClassPrivateRep; ClassPrivateRep: TYPE; --private to BiAxials impl ImageDestination: TYPE ~ {screen, print}; ClassCommon: TYPE = RECORD [--just like a BiScrollers.ClassCommon, except that the PaintProc takes an additional argument, and there's a property list. flavor: ATOM, extrema: BiScrollers.ExtremaProc, notify: ViewerClasses.NotifyProc _ NIL, bsUserAction: BiScrollers.BSUserActionProc _ NIL, paint: PaintProc _ NIL, modify: ViewerClasses.ModifyProc _ NIL, destroy: ViewerClasses.DestroyProc _ NIL, copy: ViewerClasses.CopyProc _ NIL, set: ViewerClasses.SetProc _ NIL, get: ViewerClasses.GetProc _ NIL, init: ViewerClasses.InitProc _ NIL, finish: LORA _ NIL, <> save: ViewerClasses.SaveProc _ NIL, caption: ViewerClasses.CaptionProc _ NIL, adjust: ViewerClasses.AdjustProc _ NIL, menu: Menus.Menu _ NIL, tipTable: TIPUser.TIPTable _ NIL, icon: Icons.IconFlavor _ document, cursor: Cursors.CursorType _ textPointer, mayStretch: BOOLEAN _ TRUE, <> offsetsMustBeIntegers, preferIntegerCoefficients: BOOL _ FALSE, vanilla: BiScrollers.TransformGenerator _ NIL --means GenID--, preserve: BiScrollers.PreservationPair _ [0.5, 0.5], <> props: Atom.PropList _ NIL ]; PaintProc: TYPE ~ PROC [self: Viewer, context: Imager.Context, bounds: Box, dest: ImageDestination, whatChanged: REF ANY, clear: BOOL] RETURNS [quit: BOOL _ FALSE]; <> CreateClass: PROC [bsStyle: BiScrollers.BiScrollerStyle, bcc: ClassCommon, classData: REF ANY _ NIL] RETURNS [Class]; DecomposeClass: PROC [Class] RETURNS [bsClass: BiScrollerClass, bcc: ClassCommon, classData: REF ANY]; CreateDrawingButton: PROC [ viewerInfo: ViewerClasses.ViewerRec, ba: BiAxial, font: Font--for button's text-- _ NIL] RETURNS [button: Viewer]; ToIP: PROC [ba: BiAxial, fileName, defaultExtension: ROPE _ NIL] RETURNS [writtenName: ROPE, width, height: REAL]; <> LabelPolicies: TYPE ~ ARRAY Axis OF LabelPolicy; Axis: TYPE ~ BiScrollers.Axis; LabelPolicy: TYPE ~ REF LabelPolicyRep; LabelPolicyRep: TYPE ~ RECORD [ EstimateLabelSize: PROC [LabelPolicy, Axis] RETURNS [VEC--Viewer scale--], EnumerateTicks: PROC [ labelPolicy: LabelPolicy, ba: BiAxial, axis: Axis, imageDest: ImageDestination, bMin, bMax: REAL, --bounds of visible area for ticks, client cordinates-- aMin, aMax: REAL, --intersection of above with extent of client data-- labelWidthEstc: REAL, --the estimate, appropriately scaled ctx: Imager.Context--Viewer coordinates--, ConsumeTick: PROC [ coord: REAL--in client cordinates--, labelBounds: Box--Viewer scale--, DrawLabel: PROC [org: VEC] _ NIL <> ] ], props: Atom.PropList _ NIL, data: REF ANY _ NIL]; Create: PROC [class: Class, labelPolicies: LabelPolicies, info: ViewerClasses.ViewerRec, paint: BOOL _ TRUE] RETURNS [BiAxial]; Decompose: PROC [BiAxial] RETURNS [class: Class, labelPolicies: LabelPolicies, clientData: REF ANY, bs: BiScroller]; ClientDataOf: PROC [BiAxial] RETURNS [REF ANY]; <> CreateLinearLabelPolicy: PROC [ axis: Axis, format: ROPE, --produces at most labelChars chars labelChars: NAT, ctl: LinearCoordToLabel, font: ARRAY ImageDestination OF Font _ ALL[NIL] --NIL means pick a standard default ] RETURNS [LabelPolicy]; <> LinearCoordToLabel: TYPE ~ RECORD [ log: BOOL, cc: REAL, bc: REAL, bt: REAL _ 10.0, zc: REAL _ 0.0]; <> <> <zc, 0 otherwise.>> <> <> <> <> RealSeq: TYPE ~ REF RealSequence; RealSequence: TYPE ~ RECORD [elts: SEQUENCE length: NAT OF REAL]; PositionalCeiling: PROC [x, base, lnBase: REAL, coefs: RealSeq] RETURNS [REAL]; <> HarmonicCeiling: PROC [x: REAL] RETURNS [REAL]; < 0. Returns least n+-1 >= x.>> HarmonicFloor: PROC [x: REAL] RETURNS [REAL]; < 0. Returns greatest n+-1 <= x.>> END.