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 Tue Jan 31 09:51:17 PST 1995 by kalsow   
      modified on Mon Jan 25 18:19:36 PST 1993 by msm      
      modified on Mon Feb 24 13:57:40 PST 1992 by muller   
      modified on Sat Nov  2 17:21:17 PST 1991 by gnelson  
<*PRAGMA LL*>
MODULE Pixmap;
IMPORT Palette, PlttFrnds, ScrnPixmap, ScreenType, TrestleComm;
PROCEDURE FromBitmap (bits: Raw): T =
  BEGIN
    IF bits.depth # 1 THEN Crash() END;
    LOCK PlttFrnds.con DO
      IF PlttFrnds.con.pixmaps # NIL THEN
        FOR i := 0 TO PlttFrnds.con.nextPixmap - 1 DO
          TYPECASE PlttFrnds.con.pixmaps[i] OF
            NULL =>
          | Closure (cl) => IF cl.bits = bits THEN RETURN T{i} END
          ELSE
          END
        END
      END
    END;
    RETURN Palette.FromPixmapClosure(NEW(Closure, bits := bits))
  END FromBitmap;
TYPE Closure = Palette.PixmapClosure OBJECT
    bits: Raw;
  OVERRIDES
    apply := Apply
  END;
PROCEDURE Apply(cl: Closure; st: ScreenType.T): ScrnPixmap.T =
  BEGIN
    TRY
      RETURN st.pixmap.load(cl.bits)
    EXCEPT
      TrestleComm.Failure => RETURN Palette.ResolvePixmap(st, Solid)
    END
  END Apply;
EXCEPTION FatalError;
PROCEDURE Crash() =
  <*FATAL FatalError*>
  BEGIN
    RAISE FatalError
  END Crash;
BEGIN END Pixmap.