Copyright (C) 1992, Digital Equipment Corporation                         
 All rights reserved.                                                      
 See the file COPYRIGHT for a full description.                            
 Last modified on Thu Jun 10 13:12:40 PDT 1993 by meehan 
      modified on Tue Feb  2 00:13:22 PST 1993 by mhb    
      modified on Tue Jun 16 13:08:15 PDT 1992 by muller 
A ShadowedVBT.T is a filter whose parent's screen consists of the child's screen surrounded by a 3-D border. The style, size, and colors of the shadow can be set dynamically. The parent's shape is determined from the child's shape by adding the size of the shadow.


IMPORT Filter, Shadow, VBT;

  T <: Public;
  Private <: Filter.T;
  Public = Private OBJECT
      <* LL.sup <= VBT.mu *>
      init (ch: VBT.T;
            shadow: Shadow.T := NIL;
            style: Shadow.Style := Shadow.Style.Flat): T;
The call v.init(...) initializes v as a ShadowedVBT with child ch and the given shadow and style. When Shadow.Support(shadow, v) is TRUE, each dimension of v exceeds the corresponding dimension of ch by 2 * ABS(shadow.size); otherwise, each dimension of v exceeds the corresponding dimension of ch by 2 * ABS(shadow.size/2). If shadow=NIL, it defaults to Shadow.None.

PROCEDURE Set (v: T; shadow: Shadow.T);
<* LL.sup = VBT.mu *>
Change the size and colors of v's shadow and mark v for redisplay.

PROCEDURE SetStyle (v: T; style: Shadow.Style);
<* LL.sup = VBT.mu *>
Change the style of v's shadow, and mark v for redisplay.

PROCEDURE Get (v: T): Shadow.T;
<* LL.sup = VBT.mu *>
Return v's shadow.

PROCEDURE GetStyle (v: T): Shadow.Style;
<* LL.sup = VBT.mu *>
Return v's shadow style.

END ShadowedVBT.