gtk- Binding to the Gtk+ graphical user interface library.
Portabilityportable (depends on GHC)
Safe HaskellNone



A set of rectangles describing areas to be redrawn.

  • Regions consist of a set of non-overlapping rectangles. They are used to specify the area of a window which needs updating.

This module is empty when built with Gtk3 because Pixmap has been removed.



newtype Region Source


Region (ForeignPtr Region) 


regionNew :: IO Region Source

Create an empty region.

data FillRule Source

Specify how to interpret a polygon.

  • The flag determines what happens if a polygon has overlapping areas.




regionPolygon :: [Point] -> FillRule -> IO Region Source

Convert a polygon into a Region.

regionRectangle :: Rectangle -> IO Region Source

Convert a rectangle to a Region.

regionGetClipbox :: Region -> IO Rectangle Source

Smallest rectangle including the Region.

regionGetRectangles :: Region -> IO [Rectangle] Source

Turn the Region into its rectangles.

A Region is a set of horizontal bands. Each band consists of one or more rectangles of the same height. No rectangles in a band touch.

regionEmpty :: Region -> IO Bool Source

Test if a Region is empty.

regionEqual :: Region -> Region -> IO Bool Source

Compares two Regions for equality.

regionPointIn :: Region -> Point -> IO Bool Source

Checks if a point it is within a region.

data OverlapType Source

How a rectangle is contained in a Region.


regionRectIn :: Region -> Rectangle -> IO OverlapType Source

Check if a rectangle is within a region.

regionOffset :: Region -> Int -> Int -> IO () Source

Move a region.

regionShrink :: Region -> Int -> Int -> IO () Source

Move a region.

  • Positive values shrink the region, negative values expand it.

regionUnionWithRect :: Region -> Rectangle -> IO () Source

Updates the region to include the rectangle.

regionIntersect :: Region -> Region -> IO () Source

Intersects one region with another.

  • Changes reg1 to include the common areas of reg1 and reg2.

regionUnion :: Region -> Region -> IO () Source

Unions one region with another.

  • Changes reg1 to include reg1 and reg2.

regionSubtract :: Region -> Region -> IO () Source

Removes pars of a Region.

  • Reduces the region reg1 so that is does not include any areas of reg2.

regionXor :: Region -> Region -> IO () Source

XORs two Regions.

  • The exclusive or of two regions contains all areas which were not overlapping. In other words, it is the union of the regions minus their intersections.