Copyright (C) 1992, Digital Equipment Corporation
All rights reserved.
See the file COPYRIGHT for a full description.
Last modified on Fri Sep 25 16:09:24 PDT 1992 by msm
<*PRAGMA LL*>
MODULE TwoTone;
IMPORT PaintOp, Pixmap, Point, Palette, Rect,
ScreenType, ScrnPaintOp, ScrnPixmap, VBT;
TYPE
PMClosure = Palette.PixmapClosure OBJECT
pm: Pixmap.T
METHODS OVERRIDES
apply := PMApply
END;
PROCEDURE PMApply(cl: PMClosure; st: ScreenType.T): ScrnPixmap.T =
BEGIN
IF st.color OR st.depth > 1 THEN
RETURN Palette.ResolvePixmap(st, Pixmap.Solid)
ELSE
RETURN Palette.ResolvePixmap(st, cl.pm)
END
END PMApply;
TYPE
OpClosure = Palette.OpClosure OBJECT
op: PaintOp.T;
METHODS OVERRIDES
apply := OpApply;
END;
PROCEDURE OpApply(cl: OpClosure; st: ScreenType.T): ScrnPaintOp.T =
BEGIN
IF st.color OR st.depth > 1 THEN
RETURN Palette.ResolveOp(st, cl.op)
ELSE
RETURN Palette.ResolveOp(st, PaintOp.BgFg)
END
END OpApply;
PROCEDURE New(colorop: PaintOp.T; monotxt: Pixmap.T):T =
BEGIN
RETURN T { Palette.FromOpClosure(NEW(OpClosure, op := colorop)),
Palette.FromPixmapClosure(NEW(PMClosure, pm := monotxt)) }
END New;
PROCEDURE Paint ( v : VBT.Leaf;
READONLY clip : Rect.T;
READONLY tone : T;
READONLY delta := Point.Origin) = <* LL.sup < v *>
BEGIN VBT.PaintTexture(v, clip, tone.op, tone.txt, delta); END Paint;
BEGIN END TwoTone.