sig
  exception Too_many_colors
  type 'a map = { mutable max : int; mutable map : 'a array; }
  val size : 'Color.map -> int
  val find_exact : 'Color.map -> '-> int
  val add_color : 'Color.map -> '-> int
  val add_colors : 'Color.map -> 'a list -> int list
  val copy : 'Color.map -> 'Color.map
  module Rgb :
    sig
      type t = { mutable r : int; mutable g : int; mutable b : int; }
      val square_distance : Color.Rgb.t -> Color.Rgb.t -> int
      val plus : Color.Rgb.t -> Color.Rgb.t -> Color.Rgb.t
      val minus : Color.Rgb.t -> Color.Rgb.t -> Color.Rgb.t
      val size : Color.Rgb.t Color.map -> int
      val find_exact : Color.Rgb.t Color.map -> Color.Rgb.t -> int
      val add_color : Color.Rgb.t Color.map -> Color.Rgb.t -> int
      val add_colors : Color.Rgb.t Color.map -> Color.Rgb.t list -> int list
      val find_nearest : Color.Rgb.t Color.map -> Color.Rgb.t -> int
    end
  type rgb =
    Color.Rgb.t = {
    mutable r : int;
    mutable g : int;
    mutable b : int;
  }
  module Rgba :
    sig
      type t = { color : Color.rgb; mutable alpha : int; }
      val square_distance : Color.Rgba.t -> Color.Rgba.t -> int
      val plus : Color.Rgba.t -> Color.Rgba.t -> Color.Rgba.t
      val minus : Color.Rgba.t -> Color.Rgba.t -> Color.Rgba.t
      val merge : Color.Rgba.t -> Color.Rgba.t -> Color.Rgba.t
      val size : Color.Rgba.t Color.map -> int
      val find_exact : Color.Rgba.t Color.map -> Color.Rgba.t -> int
      val add_color : Color.Rgba.t Color.map -> Color.Rgba.t -> int
      val add_colors :
        Color.Rgba.t Color.map -> Color.Rgba.t list -> int list
      val find_nearest : Color.Rgba.t Color.map -> Color.Rgba.t -> int
    end
  type rgba = Color.Rgba.t = { color : Color.rgb; mutable alpha : int; }
  module Cmyk :
    sig
      type t = {
        mutable c : int;
        mutable m : int;
        mutable y : int;
        mutable k : int;
      }
      val square_distance : Color.Cmyk.t -> Color.Cmyk.t -> int
      val plus : Color.Cmyk.t -> Color.Cmyk.t -> Color.Cmyk.t
      val minus : Color.Cmyk.t -> Color.Cmyk.t -> Color.Cmyk.t
      val size : Color.Cmyk.t Color.map -> int
      val find_exact : Color.Cmyk.t Color.map -> Color.Cmyk.t -> int
      val add_color : Color.Cmyk.t Color.map -> Color.Cmyk.t -> int
      val add_colors :
        Color.Cmyk.t Color.map -> Color.Cmyk.t list -> int list
      val find_nearest : Color.Cmyk.t Color.map -> Color.Cmyk.t -> int
    end
  type cmyk =
    Color.Cmyk.t = {
    mutable c : int;
    mutable m : int;
    mutable y : int;
    mutable k : int;
  }
  val rgb_square_distance : Color.rgb -> Color.rgb -> int
  val plus : Color.rgb -> Color.rgb -> Color.rgb
  val minus : Color.rgb -> Color.rgb -> Color.rgb
  val brightness : Color.rgb -> int
  val color_parse : string -> Color.rgb
  val colormap_parse : string array -> Color.rgb array * int
end