sig
  type gdkFillRule = [ `EVEN_ODD_RULE | `WINDING_RULE ]
  type gdkOverlapType = [ `IN | `OUT | `PART ]
  val create : unit -> Gdk.region
  val destroy : Gdk.region -> unit
  val polygon : (int * int) list -> Gdk.Region.gdkFillRule -> Gdk.region
  val intersect : Gdk.region -> Gdk.region -> Gdk.region
  val union : Gdk.region -> Gdk.region -> Gdk.region
  val subtract : Gdk.region -> Gdk.region -> Gdk.region
  val xor : Gdk.region -> Gdk.region -> Gdk.region
  val union_with_rect : Gdk.region -> Gdk.Rectangle.t -> Gdk.region
  val offset : Gdk.region -> x:int -> y:int -> unit
  val shrink : Gdk.region -> x:int -> y:int -> unit
  val empty : Gdk.region -> bool
  val equal : Gdk.region -> Gdk.region -> bool
  val point_in : Gdk.region -> x:int -> y:int -> bool
  val rect_in : Gdk.region -> Gdk.Rectangle.t -> Gdk.Region.gdkOverlapType
  val get_clipbox : Gdk.region -> Gdk.Rectangle.t -> unit
end