Chart-1.1: A library for generating 2D Charts and Plots

Safe HaskellSafe-Inferred

Graphics.Rendering.Chart.Geometry

Contents

Synopsis

Points and Vectors

data Rect Source

A rectangle is defined by two points.

Constructors

Rect Point Point 

Instances

data Point Source

A point in two dimensions.

Constructors

Point 

Fields

p_x :: Double
 
p_y :: Double
 

Instances

data Vector Source

A vector in two dimensions.

Constructors

Vector 

Fields

v_x :: Double
 
v_y :: Double
 

Instances

pointToVec :: Point -> VectorSource

Convert a Point to a Vector.

mkrect :: Point -> Point -> Point -> Point -> RectSource

Create a rectangle based upon the coordinates of 4 points.

rectPath :: Rect -> PathSource

Make a path from a rectangle.

pvadd :: Point -> Vector -> PointSource

Add a point and a vector.

pvsub :: Point -> Vector -> PointSource

Subtract a vector from a point.

psub :: Point -> Point -> VectorSource

Subtract two points.

vscale :: Double -> Vector -> VectorSource

Scale a vector by a constant.

within :: Point -> Rect -> BoolSource

Test if a point is within a rectangle.

intersectRect :: Limit Rect -> Limit Rect -> Limit RectSource

Intersects the rectangles. If they intersect the intersection rectangle is returned. LMin is the empty rectangle / intersection and LMax is the infinite plane.

data RectEdge Source

Edge of a rectangle.

Constructors

E_Top 
E_Bottom 
E_Left 
E_Right 

data Limit a Source

Constructors

LMin 
LValue a 
LMax 

Instances

Show a => Show (Limit a) 

type PointMapFn x y = (Limit x, Limit y) -> PointSource

A function mapping between points.

Paths

data Path Source

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.

Instances

Monoid Path

Paths are monoids. After a path is closed you can not append anything to it anymore. The empty path is open. Use close to close a path.

lineTo :: Point -> PathSource

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

moveTo :: Point -> PathSource

Move the paths pointer to the given location.

lineTo' :: Double -> Double -> PathSource

Short-cut for lineTo, if you don't want to create a Point.

moveTo' :: Double -> Double -> PathSource

Short-cut for moveTo, if you don't want to create a Point.

arcSource

Arguments

:: Point

Center point of the circle arc.

-> Double

Redius 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.

arc' :: Double -> Double -> Double -> Double -> Double -> PathSource

Short-cut for arc, if you don't want to create a Point.

arcNeg :: Point -> Double -> Double -> Double -> PathSource

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

arcNeg' :: Double -> Double -> Double -> Double -> Double -> PathSource

Short-cut for arcNeg, if you don't want to create a Point.

close :: PathSource

A closed empty path. Closes a path when appended.

foldPathSource

Arguments

:: 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 -> PathSource

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 -> PointSource

Transform a point using the given matrix.

scaleP :: Vector -> Point -> PointSource

Scale a point.

rotateP :: Double -> Point -> PointSource

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

translateP :: Vector -> Point -> PointSource

Translate a point.

data Matrix Source

Copied from Graphics.Rendering.Cairo.Matrix

Constructors

Matrix 

Fields

xx :: !Double
 
yx :: !Double
 
xy :: !Double
 
yy :: !Double
 
x0 :: !Double
 
y0 :: !Double
 

Instances

Num Matrix

Copied from Graphics.Rendering.Cairo.Matrix

Show Matrix 

identity :: MatrixSource

Copied from Graphics.Rendering.Cairo.Matrix

rotate :: Double -> Matrix -> MatrixSource

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

scale :: Vector -> Matrix -> MatrixSource

Copied and adopted from Graphics.Rendering.Cairo.Matrix

translate :: Vector -> Matrix -> MatrixSource

Copied and adopted from Graphics.Rendering.Cairo.Matrix

scalarMultiply :: Double -> Matrix -> MatrixSource

Copied from Graphics.Rendering.Cairo.Matrix

adjoint :: Matrix -> MatrixSource

Copied from Graphics.Rendering.Cairo.Matrix

invert :: Matrix -> MatrixSource

Copied from Graphics.Rendering.Cairo.Matrix