Copyright | (c) Tim Docker 2006, 2014 |
---|---|

License | BSD-style (see chart/COPYRIGHT) |

Safe Haskell | Safe |

Language | Haskell98 |

- data Rect = Rect Point Point
- data Point = Point {}
- data Vector = Vector {}
- type RectSize = (Double, Double)
- type Range = (Double, Double)
- pointToVec :: Point -> Vector
- mkrect :: Point -> Point -> Point -> Point -> Rect
- rectPath :: Rect -> Path
- pvadd :: Point -> Vector -> Point
- pvsub :: Point -> Vector -> Point
- psub :: Point -> Point -> Vector
- vangle :: Vector -> Double
- vlen :: Vector -> Double
- vscale :: Double -> Vector -> Vector
- within :: Point -> Rect -> Bool
- intersectRect :: Limit Rect -> Limit Rect -> Limit Rect
- data RectEdge
- data Limit a
- type PointMapFn x y = (Limit x, Limit y) -> Point
- data Path
- lineTo :: Point -> Path
- moveTo :: Point -> Path
- lineTo' :: Double -> Double -> Path
- moveTo' :: Double -> Double -> Path
- arc :: Point -> Double -> Double -> Double -> Path
- arc' :: Double -> Double -> Double -> Double -> Double -> Path
- arcNeg :: Point -> Double -> Double -> Double -> Path
- arcNeg' :: Double -> Double -> Double -> Double -> Double -> Path
- close :: Path
- foldPath :: Monoid m => (Point -> m) -> (Point -> m) -> (Point -> Double -> Double -> Double -> m) -> (Point -> Double -> Double -> Double -> m) -> m -> Path -> m
- makeLinesExplicit :: Path -> Path
- transformP :: Matrix -> Point -> Point
- scaleP :: Vector -> Point -> Point
- rotateP :: Double -> Point -> Point
- translateP :: Vector -> Point -> Point
- data Matrix = Matrix {}
- identity :: Matrix
- rotate :: Double -> Matrix -> Matrix
- scale :: Vector -> Matrix -> Matrix
- translate :: Vector -> Matrix -> Matrix
- scalarMultiply :: Double -> Matrix -> Matrix
- adjoint :: Matrix -> Matrix
- invert :: Matrix -> Matrix

# Points and Vectors

mkrect :: Point -> Point -> Point -> Point -> Rect Source

Create a rectangle based upon the coordinates of 4 points.

type PointMapFn x y = (Limit x, Limit y) -> Point Source

A function mapping between points.

# Paths

The path type used by Charts.

A path can consist of several subpaths. Each
is started by a `MoveTo`

operation. All subpaths
are open, except the last one, which may be closed
using the `Close`

operation. When filling a path
all subpaths are closed implicitly.

Closing a subpath means that a line is drawn from the end point to the start point of the subpath.

If a `Arc`

(or `ArcNeg`

) is drawn a implicit line
from the last end point of the subpath is drawn
to the beginning of the arc. Another implicit line
is drawn from the end of an arc to the beginning of
the next path segment.

The beginning of a subpath is either (0,0) or set
by a `MoveTo`

instruction. If the first subpath is started
with an arc the beginning of that subpath is the beginning
of the arc.

lineTo :: Point -> Path Source

Move the paths pointer to the given location and draw a straight line while doing so.

:: Point | Center point of the circle arc. |

-> Double | Radius of the circle. |

-> Double | Angle to start drawing at, in radians. |

-> Double | Angle to stop drawing at, in radians. |

-> Path |

Draw the arc of a circle. A straight line connects
the end of the previous path with the beginning of the arc.
The zero angle points in direction of the positive x-axis.
Angles increase in clock-wise direction. If the stop angle
is smaller then the start angle it is increased by multiples of
`2 * pi`

until is is greater or equal.

arcNeg :: Point -> Double -> Double -> Double -> Path Source

Like `arc`

, but draws from the stop angle to the start angle
instead of between them.

:: Monoid m | |

=> (Point -> m) | MoveTo |

-> (Point -> m) | LineTo |

-> (Point -> Double -> Double -> Double -> m) | Arc |

-> (Point -> Double -> Double -> Double -> m) | ArcNeg |

-> m | Close |

-> Path | Path to fold |

-> m |

Fold the given path to a monoid structure.

makeLinesExplicit :: Path -> Path Source

Enriches the path with explicit instructions to draw lines,
that otherwise would be implicit. See `Path`

for details
about what lines in paths are implicit.

# Matrices

transformP :: Matrix -> Point -> Point Source

Transform a point using the given matrix.

rotateP :: Double -> Point -> Point Source

Rotate a point around the origin. The angle is given in radians.

translateP :: Vector -> Point -> Point Source

Translate a point.

Copied from Graphics.Rendering.Cairo.Matrix

rotate :: Double -> Matrix -> Matrix Source

Copied from Graphics.Rendering.Cairo.Matrix Rotations angle is given in radians.

translate :: Vector -> Matrix -> Matrix Source

Copied and adopted from Graphics.Rendering.Cairo.Matrix

scalarMultiply :: Double -> Matrix -> Matrix Source

Copied from Graphics.Rendering.Cairo.Matrix