Chart-1.9.4: A library for generating 2D Charts and Plots
Copyright(c) Tim Docker 2006 2014
LicenseBSD-style (see chart/COPYRIGHT)
Safe HaskellSafe-Inferred
LanguageHaskell98

Graphics.Rendering.Chart.Geometry

Description

 
Synopsis

Points and Vectors

data Rect Source #

A rectangle is defined by two points.

Constructors

Rect Point Point 

Instances

Instances details
Show Rect Source # 
Instance details

Defined in Graphics.Rendering.Chart.Geometry

Methods

showsPrec :: Int -> Rect -> ShowS #

show :: Rect -> String #

showList :: [Rect] -> ShowS #

data Point Source #

A point in two dimensions.

Constructors

Point 

Fields

Instances

Instances details
Show Point Source # 
Instance details

Defined in Graphics.Rendering.Chart.Geometry

Methods

showsPrec :: Int -> Point -> ShowS #

show :: Point -> String #

showList :: [Point] -> ShowS #

data Vector Source #

A vector in two dimensions.

Constructors

Vector 

Fields

Instances

Instances details
Show Vector Source # 
Instance details

Defined in Graphics.Rendering.Chart.Geometry

pointToVec :: Point -> Vector Source #

Convert a Point to a Vector.

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

Create a rectangle based upon the coordinates of 4 points.

rectPath :: Rect -> Path Source #

Make a path from a rectangle.

pvadd :: Point -> Vector -> Point Source #

Add a point and a vector.

pvsub :: Point -> Vector -> Point Source #

Subtract a vector from a point.

psub :: Point -> Point -> Vector Source #

Subtract two points.

vangle :: Vector -> Double Source #

Angle of a vector (counterclockwise from positive x-axis)

vlen :: Vector -> Double Source #

Length/magnitude of a vector

vscale :: Double -> Vector -> Vector Source #

Scale a vector by a constant.

within :: Point -> Rect -> Bool Source #

Test if a point is within a rectangle.

intersectRect :: Limit Rect -> Limit Rect -> Limit Rect Source #

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

Instances details
Show a => Show (Limit a) Source # 
Instance details

Defined in Graphics.Rendering.Chart.Geometry

Methods

showsPrec :: Int -> Limit a -> ShowS #

show :: Limit a -> String #

showList :: [Limit a] -> ShowS #

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

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

Instances details
Semigroup Path Source #

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.

Instance details

Defined in Graphics.Rendering.Chart.Geometry

Methods

(<>) :: Path -> Path -> Path #

sconcat :: NonEmpty Path -> Path #

stimes :: Integral b => b -> Path -> Path #

Monoid Path Source # 
Instance details

Defined in Graphics.Rendering.Chart.Geometry

Methods

mempty :: Path #

mappend :: Path -> Path -> Path #

mconcat :: [Path] -> Path #

lineTo :: Point -> Path Source #

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

moveTo :: Point -> Path Source #

Move the paths pointer to the given location.

lineTo' :: Double -> Double -> Path Source #

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

moveTo' :: Double -> Double -> Path Source #

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

arc Source #

Arguments

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

arc' :: Double -> Double -> Double -> Double -> Double -> Path Source #

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

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

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

arcNeg' :: Double -> Double -> Double -> Double -> Double -> Path Source #

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

close :: Path Source #

A closed empty path. Closes a path when appended.

foldPath Source #

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

scaleP :: Vector -> Point -> Point Source #

Scale a point.

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.

data Matrix Source #

Copied from Graphics.Rendering.Cairo.Matrix

Constructors

Matrix 

Fields

Instances

Instances details
Num Matrix Source #

Copied from Graphics.Rendering.Cairo.Matrix

Instance details

Defined in Graphics.Rendering.Chart.Geometry

Show Matrix Source # 
Instance details

Defined in Graphics.Rendering.Chart.Geometry

identity :: Matrix Source #

Copied from Graphics.Rendering.Cairo.Matrix

rotate :: Double -> Matrix -> Matrix Source #

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

scale :: Vector -> Matrix -> Matrix Source #

Copied and adopted from Graphics.Rendering.Cairo.Matrix

translate :: Vector -> Matrix -> Matrix Source #

Copied and adopted from Graphics.Rendering.Cairo.Matrix

scalarMultiply :: Double -> Matrix -> Matrix Source #

Copied from Graphics.Rendering.Cairo.Matrix

adjoint :: Matrix -> Matrix Source #

Copied from Graphics.Rendering.Cairo.Matrix

invert :: Matrix -> Matrix Source #

Copied from Graphics.Rendering.Cairo.Matrix