gloss-1.7.8.1: Painless 2D vector graphics, animations and simulations.

Graphics.Gloss.Data.Extent

Description

Represents an integral rectangular area of the 2D plane. Using `Int`s (instead of `Float`s) for the bounds means we can safely compare extents for equality.

Synopsis

# Documentation

data Extent Source

A rectangular area of the 2D plane. We keep the type abstract to ensure that invalid extents cannot be constructed.

Instances

 Eq Extent Show Extent

type Coord = (Int, Int)Source

An integral coordinate.

Arguments

 :: Int y max (north) -> Int y min (south) -> Int x max (east) -> Int x min (west) -> Extent

Construct an extent. The north value must be > south, and east > west, else `error`.

takeExtent :: Extent -> (Int, Int, Int, Int)Source

Take the NSEW components of an extent.

A square extent of a given size.

sizeOfExtent :: Extent -> (Int, Int)Source

Get the width and height of an extent.

Check if an extent is a square with a width and height of 1.

Check whether a coordinate lies inside an extent.

Check whether a point lies inside an extent.

Get the coordinate that lies at the center of an extent.

Cut one quadrant out of an extent.

Get the quadrant that this coordinate lies in, if any.

Constuct a path to a particular coordinate in an extent.

If a line segment (P1-P2) intersects the outer edge of an extent then return the intersection point, that is closest to P1, if any. If P1 is inside the extent then `Nothing`.

```                   P2
/
----/-
| /  |
+    |
/------
/
P1
```

Check whether a line segment's endpoints are inside an extent, or if it intersects with the boundary.