sig
  val debug : bool Pervasives.ref
  val maximum_live : int Pervasives.ref
  val maximum_block_size : int Pervasives.ref
  module Block :
    sig
      type t = {
        width : int;
        height : int;
        x : int;
        y : int;
        dump : string;
      }
    end
  module type Bitdepth = sig val bytes_per_pixel : int end
  module Make :
    functor (B : Bitdepth->
      sig
        type t
        val create : int -> int -> string option -> Bitmap.Make.t
        val create_with : int -> int -> string -> Bitmap.Make.t
        val create_with_scanlines :
          int -> int -> string array -> Bitmap.Make.t
        val destroy : Bitmap.Make.t -> unit
        val access : Bitmap.Make.t -> int -> int -> string * int
        val get_strip : Bitmap.Make.t -> int -> int -> int -> string
        val set_strip : Bitmap.Make.t -> int -> int -> int -> string -> unit
        val get_scanline : Bitmap.Make.t -> int -> string
        val set_scanline : Bitmap.Make.t -> int -> string -> unit
        val get_scanline_ptr :
          Bitmap.Make.t -> (int -> (string * int) * int) option
        val dump : Bitmap.Make.t -> string
        val copy : Bitmap.Make.t -> Bitmap.Make.t
        val sub : Bitmap.Make.t -> int -> int -> int -> int -> Bitmap.Make.t
        val blit :
          Bitmap.Make.t ->
          int -> int -> Bitmap.Make.t -> int -> int -> int -> int -> unit
        val blocks : Bitmap.Make.t -> int * int
        val dump_block : Bitmap.Make.t -> int -> int -> Bitmap.Block.t
      end
end