functor (E : ENCODE->
  sig
    module Encode : ENCODE
    type elt = E.t
    and bitmap
    and t = { width : int; height : int; bitmap : bitmap; }
    val width : t -> int
    val height : t -> int
    val dump : t -> string
    val create_with : int -> int -> string -> t
    val create : int -> int -> t
    val make : int -> int -> elt -> t
    val unsafe_access : t -> int -> int -> string * int
    val get_strip : t -> int -> int -> int -> string
    val set_strip : t -> int -> int -> int -> string -> unit
    val get_scanline : t -> int -> string
    val set_scanline : t -> int -> string -> unit
    val unsafe_get : t -> int -> int -> elt
    val unsafe_set : t -> int -> int -> elt -> unit
    val get : t -> int -> int -> elt
    val set : t -> int -> int -> elt -> unit
    val destroy : t -> unit
    val copy : t -> t
    val sub : t -> int -> int -> int -> int -> t
    val blit : t -> int -> int -> t -> int -> int -> int -> int -> unit
    val map :
      (elt -> elt -> elt) ->
      t -> int -> int -> t -> int -> int -> int -> int -> unit
  end