# Region

The Region structure contains functions to operate on regions.

    structure Region:
    sig
        type HDC and HBRUSH and HRGN and HPEN
    	type POINT = { x: int, y: int }
    	type RECT = { top: int, left: int, bottom: int, right: int }

        type RegionOperation
        val RGN_AND : RegionOperation
        val RGN_COPY : RegionOperation
        val RGN_DIFF : RegionOperation
        val RGN_ERROR : RegionOperation
        val RGN_OR : RegionOperation
        val RGN_XOR : RegionOperation

        type ResultRegion
        val COMPLEXREGION : ResultRegion
        val NULLREGION : ResultRegion
        val ERROR : ResultRegion
        val SIMPLEREGION : ResultRegion

        type PolyFillMode
        val ALTERNATE : PolyFillMode
        val WINDING : PolyFillMode

        val CombineRgn : HRGN * HRGN * HRGN * RegionOperation -> ResultRegion
        val CreateEllipticRgn : RECT -> HRGN
        val CreatePolygonRgn : POINT list * PolyFillMode -> HPEN
        val CreateRectRgn : RECT -> HRGN
        val CreateRoundRectRgn : RECT * int * int -> HRGN
        val EqualRgn : HRGN * HRGN -> bool
        val FillRgn : HDC * HRGN * HBRUSH -> unit
        val FrameRgn : HDC * HRGN * HBRUSH * int * int -> unit
        val GetPolyFillMode : HDC -> PolyFillMode
        val GetRgnBox : HRGN -> RECT
        val InvertRgn : HDC * HRGN -> unit
        val OffsetRgn : HRGN * int * int -> ResultRegion
        val PaintRgn : HDC * HRGN -> unit
        val PtInRegion : HRGN * int * int -> bool
        val RectInRegion : HRGN * RECT -> bool
        val SetPolyFillMode : HDC * PolyFillMode -> PolyFillMode
        val SetRectRgn : HRGN * RECT -> bool
      end