DIRECTORY BiScrollers, IO, Rope, ViewerClasses; HistogramsPrivate: CEDAR DEFINITIONS = {OPEN BS:BiScrollers; ROPE: TYPE = Rope.ROPE; Viewer: TYPE = ViewerClasses.Viewer; BiScroller: TYPE = BS.BiScroller; Dim: TYPE = {X, Y}; Range2: TYPE = ARRAY Dim OF Range1; Range1: TYPE = RECORD [min, max: INT]; nullRange1: Range1 = [INT.LAST, INT.FIRST]; fullRange1: Range1 = [INT.FIRST, INT.LAST]; nullRange2: Range2 = ALL[nullRange1]; fullRange2: Range2 = ALL[fullRange1]; DataRef: TYPE = REF Data; Data: TYPE = RECORD [counts: SEQUENCE length:NAT OF Count]; Count: TYPE = CARDINAL; Histogram: TYPE = REF HistogramRep; HistogramRep: TYPE = MONITORED RECORD [ dimensionality: [1 .. 2], data: DataRef, iMin, iMax, jMin, jMax, nI, nJ: INT _ 0, iFactor, iOffset, jFactor, jOffset: REAL, maxCount: Count _ 0, maxValid: BOOL _ TRUE, views: HistogramViewList _ NIL ]; HistogramViewList: TYPE = LIST OF HistogramView; HistogramView: TYPE = REF HistogramViewRep; HistogramViewRep: TYPE = RECORD [ h: Histogram, bs: BS.BiScroller, ctr, bsOuter: Viewer, shown: DataRef, iFormat: ROPE, iChars, minHLabSep, iFreq: NAT _ 0, vFreq, vFreqForR, maxCountForR: Count _ 0, dHeight: REAL, dWidth: NAT _ 0, cWidth: REAL _ 0, rxmin, rxmax: REAL _ 0, finding: BOOL _ FALSE, findFirstI, findFirstJ: INT _ 0, shownMax: Count _ 0, bad: Range2 _ fullRange2, updatePeriod: REAL, tracker: PROCESS ]; }. NHistogramsPrivate.mesa Mike Spreitzer September 26, 1986 6:53:10 pm PDT Κ“– "cedar" style˜code™K™0—K˜KšΟk œœ˜/K˜š Οnœœ œœœ ˜