# The Pixmap interface

A `Pixmap.T` is a screen-independent specification of a pixmap. Many procedures interpret `Pixmap.Ts` as textures, by tiling the plane with translated copies of the pixmap. There are three predefined pixmaps:

The locking level is `LL.sup <= VBT.mu` for all of the procedures in this interface.

    INTERFACE Pixmap;

    TYPE T = RECORD pm: INTEGER END; Predefined = [0..2];

    CONST
      Solid = T{0};
      Empty = T{1};
      Gray = T{2};

`Solid` represents a pixmap of all ones. `Empty` represents a pixmap of all zeros. `Gray` represents a checkerboard of ones and zeros.

The domains of these pixmaps may vary from screentype to screentype, but they will always be non-empty.

When used on a screentype `st`, they will have type `st.bits` (see the `PaintOp` interface).

    TYPE Raw <: ROOT;

A `Pixmap.Raw` represents a pixmap as a packed array of pixels. The `ScrnPixmap` interface reveals the representation.

    PROCEDURE FromBitmap(bits: Raw): T;

Return a pixmap that looks like `bits` on all screens.

`FromBitmap` causes a checked runtime error if the depth of `bits` is not one. On a screentype `st`, it will have type `st.bits`.

    END Pixmap.