Copyright (C) 1992, Digital Equipment Corporation
All rights reserved.
See the file COPYRIGHT for a full description.
by Steve Glassman, Mark Manasse and Greg Nelson
Last modified on Mon Feb 24 13:54:56 PST 1992 by muller
modified on Sun Nov 10 18:21:52 PST 1991 by gnelson
modified on Wed Sep 11 15:46:44 PDT 1991 by msm
<*PRAGMA LL*>
MODULE TextureVBT;
IMPORT VBT, PaintOp, Pixmap, Region, Rect, Point;
REVEAL T = Public BRANDED OBJECT
op: PaintOp.T;
txt: Pixmap.T;
nwAlign: BOOLEAN
OVERRIDES
repaint := Repaint;
reshape := Reshape;
redisplay := Redisplay;
init := Be
END;
PROCEDURE Be(
v: T;
op: PaintOp.T := PaintOp.BgFg;
txt: Pixmap.T := Pixmap.Solid;
nwAlign: BOOLEAN := FALSE): T =
BEGIN
v.op := op;
v.txt := txt;
v.nwAlign := nwAlign;
RETURN v
END Be;
PROCEDURE New(
op: PaintOp.T := PaintOp.BgFg;
txt: Pixmap.T := Pixmap.Solid;
nwAlign: BOOLEAN := FALSE): T RAISES {} =
BEGIN
RETURN Be(NEW(T), op, txt, nwAlign);
END New;
PROCEDURE Set(
v: T;
op: PaintOp.T := PaintOp.BgFg;
txt: Pixmap.T := Pixmap.Solid;
nwAlign: BOOLEAN := FALSE)
RAISES {} =
BEGIN v.op := op; v.txt := txt; v.nwAlign := nwAlign; VBT.Mark(v) END Set;
PROCEDURE Get(
v: T;
VAR op: PaintOp.T;
VAR txt: Pixmap.T;
VAR nwAlign: BOOLEAN) =
BEGIN op := v.op; txt := v.txt; nwAlign := v.nwAlign END Get;
PROCEDURE Repaint(v: T; READONLY rgn: Region.T) =
BEGIN
IF v.nwAlign THEN
VBT.PaintTexture(v, rgn.r, v.op, v.txt, Rect.NorthWest(VBT.Domain(v)))
ELSE
VBT.PaintTexture(v, rgn.r, v.op, v.txt, Point.Origin)
END
END Repaint;
PROCEDURE Reshape(v: T; <*UNUSED*> READONLY cd: VBT.ReshapeRec) =
BEGIN Repaint(v, Region.Full) END Reshape;
PROCEDURE Redisplay(v: T) =
BEGIN Repaint(v, Region.Full) END Redisplay;
BEGIN END TextureVBT.