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]; 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]; HarmonicFloor: PROC [x: REAL] RETURNS [REAL]; END. Ξ BiAxials.mesa Copyright Σ 1991 by Xerox Corporation. All rights reserved. Spreitze, June 7, 1991 8:43 am PDT Passed to Notify when mouse leaves an Activated BiScroller OK to scale X and Y differently? What stays put when viewer grows/shrinks. bounds is a reasonably tight upper bound on the clipping region. Writes an Interpress master, at same size as on screen, which is returned in inches. If the fileName has no extension, and defaultExtension#NIL, it's appended (defaultExtension should include the dot). If fileName=NIL, Cat[Viewer's name, defaultExtension] is used. File system errors may be raised. If non-NIL, draws into labelBounds+org. Returns what was in info.data in call on Create. BiScrollers.ClientDataOf[ba] won't return that. Returns a policy that puts ticks at regular intervals. This represents the function from client coordinate x to label value l, and tick choosing policy. If logarithmic: At client coord x the label is cc * bc ^ x if x>zc, 0 otherwise. The tick labels are integer powers of bt ^ (n^p) [except for those that are forced to be 0], for some integer n and for p being +1 or -1. If not logarithmic: At client coord x the label is cc + bc * x. The tick labels are multiples of C * 10^n, for some integer n and for C being 1, 2, or 5. rounds x up to the nearest (base**n)*coef. Coefs are in increasing order, starting with 1, and ending with something less than base. x > 0. Returns least n+-1 >= x. x > 0. Returns greatest n+-1 <= x. ΚŠ•NewlineDelimiter ™code™ K™˜4K™)—Kšœ˜K˜—K˜šœ œœ[œœ œœœœ˜€KšΟeœ:™@—K˜Kš ž œœEœœœœ ˜uK˜Kš žœœ œ9œœ˜fK˜šžœ˜šœ˜Kšœ$˜$Kšœ ˜ Kšœ Ÿœœ˜&—Kšœ˜—K˜šžœœ+œœœœœ˜rKšœ­™­—K˜Kšœœœœ ˜0Kšœœ˜Kšœ œœ˜'šœœœ˜Kš žœœœŸœ˜Jšžœœ˜Kšœ˜Kšœ ˜ Kšœ ˜ Kšœ˜Kšœ œŸ7˜IKšœ œŸ4˜FKšœ ΟdœœŸ$˜:KšœŸœ˜*šž œœ˜KšœŸœ˜$KšœŸœ˜!šž œœœ˜ Kšœœ™'—Kšœ˜—Kšœ˜—Kšœœ˜Kšœœœœ˜—K˜Kš žœœTœœœ ˜K˜Kš ž œœ œ:œœ˜tK˜š ž œœ œœœ˜/Kšœa™a—K˜šžœ˜šœ˜K˜ KšœœŸ#˜1Kšœ œ˜Kšœ˜Kš œœœœœŸ#˜SKšœ˜—Kšœ˜K™6—K˜šœœœ˜#Kšœœ˜ Kšœ‘œœ˜ Kšœ‘œœ˜ Kšœ‘œœ˜Kšœ‘œœ˜K™ašœ™Kšœ ‘œ‘œ ‘œ™@Kšœ'‘œa™‰—™Kšœ ‘œ‘œ™+KšœY™Y——K˜Kšœ œœ˜!Kš œœœœ œœœ˜AK˜š žœœœœœ˜OK™…—K˜š žœœœœœ˜/KšœΟuœ™ —K˜š ž œœœœœ˜-Kšœ’œ™#—K˜Kšœ˜—…—Ζ