Copyright (C) 1992, Digital Equipment Corporation
All rights reserved.
See the file COPYRIGHT for a full description.
by Steve Glassman and Stephen Harrison
Last modified on Wed Jul 22 01:41:52 1992 by steveg
<*PRAGMA LL*>
MODULE Grid;
IMPORT Axis, MG, MGV,
Pts, R2, VBT;
REVEAL
V = PublicV BRANDED OBJECT
OVERRIDES
init := Init;
reshape := MGV.ReshapeLeaveOrigin;
shape := Shape;
END;
PROCEDURE Shape (v: V; ax: Axis.T; <* UNUSED *> n: CARDINAL):
VBT.SizeRange =
BEGIN
WITH pref = Pts.ToScreenPixels(v, v.size[ax] + 2.0 * v.border[ax], ax) DO
RETURN VBT.SizeRange{0, pref, MAX(pref + 1, VBT.DefaultShape.hi)}
END;
END Shape;
PROCEDURE Init (v: V; rows, cols: CARDINAL; width, height: REAL): V =
BEGIN
EVAL MGV.V.init(v);
v.a := NEW(Array, rows, cols);
v.group := NEW(MG.Group).init(v := v);
v.size[Axis.T.Hor] := FLOAT(cols) * width;
v.size[Axis.T.Ver] := FLOAT(rows) * height;
WITH hor = v.border[Axis.T.Hor],
ver = v.border[Axis.T.Ver] DO
FOR i := 0 TO rows - 1 DO
FOR j := 0 TO cols - 1 DO
v.a[i, j] := NEW(MG.Rectangle).init(
R2.T{hor + FLOAT(j) * width,
-ver - FLOAT(i) * height},
R2.T{hor + FLOAT(j + 1) * width,
-ver - FLOAT(i + 1) * height}, v, v.group);
END;
END;
END;
RETURN v;
END Init;
BEGIN
END Grid.