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 : bytes; }
    end
  module type Bitdepth = sig val bytes_per_pixel : int end
  module Make :
    functor (B : Bitdepth->
      sig
        type t
        val create : int -> int -> bytes option -> Bitmap.Make.t
        val create_with : int -> int -> bytes -> Bitmap.Make.t
        val create_with_scanlines :
          int -> int -> bytes array -> Bitmap.Make.t
        val destroy : Bitmap.Make.t -> unit
        val access : Bitmap.Make.t -> int -> int -> bytes * int
        val get_strip : Bitmap.Make.t -> int -> int -> int -> bytes
        val set_strip : Bitmap.Make.t -> int -> int -> int -> bytes -> unit
        val get_scanline : Bitmap.Make.t -> int -> bytes
        val set_scanline : Bitmap.Make.t -> int -> bytes -> unit
        val get_scanline_ptr :
          Bitmap.Make.t -> (int -> (bytes * int) * int) option
        val dump : Bitmap.Make.t -> bytes
        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