wumpus-basic-0.15.0: Basic objects and system code built on Wumpus-Core.

PortabilityGHC
Stabilityhighly unstable
MaintainerStephen Tetley <stephen.tetley@gmail.com>

Wumpus.Basic.Kernel.Base.Anchors

Contents

Description

Anchor points on shapes, bounding boxes, etc.

Anchors are addressable positions, an examplary use is taking anchors on node shapes to get the start and end points for connectors in a network (graph) diagram.

Synopsis

Anchors

class CenterAnchor t whereSource

Center of an object.

Methods

center :: DUnit t ~ u => t -> Point2 uSource

Instances

class CardinalAnchor t whereSource

Cardinal (compass) positions on an object.

Note - in TikZ cardinal anchors are not necessarily at the equivalent radial position, for instance reactangle north-east is the top-right corner whether or not this is incident at 45deg.

Wumpus generally follows the TikZ convention.

Methods

north :: DUnit t ~ u => t -> Point2 uSource

south :: DUnit t ~ u => t -> Point2 uSource

east :: DUnit t ~ u => t -> Point2 uSource

west :: DUnit t ~ u => t -> Point2 uSource

class CardinalAnchor2 t whereSource

Secondary group of cardinal (compass) positions on an object.

It seems possible that for some objects defining the primary compass points (north, south,...) will be straight-forward whereas defining the secondary compass points may be problemmatic, hence the compass points are split into two classes.

Methods

northeast :: DUnit t ~ u => t -> Point2 uSource

southeast :: DUnit t ~ u => t -> Point2 uSource

southwest :: DUnit t ~ u => t -> Point2 uSource

northwest :: DUnit t ~ u => t -> Point2 uSource

class RadialAnchor t whereSource

Anchor on a border that can be addressed by an angle.

The angle is counter-clockwise from the right-horizontal, i.e. 0 is east.

Methods

radialAnchor :: DUnit t ~ u => Radian -> t -> Point2 uSource

Extended anchor points

northwards :: (Real u, Floating u, CenterAnchor t, CardinalAnchor t, u ~ DUnit t) => u -> t -> Point2 uSource

northwards : dist * object -> Point

Project the anchor along a line from the center that goes through the north anchor.

If the distance is zero the answer with be the north anchor.

If the distance is negative the answer within the object before the north anchor.

If the distance is positive the anchor outside the object.

southwards :: (Real u, Floating u, CenterAnchor t, CardinalAnchor t, u ~ DUnit t) => u -> t -> Point2 uSource

southwards : dist * object -> Point

Variant of the function northwards, but projecting the line southwards from the center of the object.

eastwards :: (Real u, Floating u, CenterAnchor t, CardinalAnchor t, u ~ DUnit t) => u -> t -> Point2 uSource

eastwards : dist * object -> Point

Variant of the function northwards, but projecting the line eastwards from the center of the object.

westwards :: (Real u, Floating u, CenterAnchor t, CardinalAnchor t, u ~ DUnit t) => u -> t -> Point2 uSource

westwards : dist * object -> Point

Variant of the function northwards, but projecting the line westwards from the center of the object.

northeastwards :: (Real u, Floating u, CenterAnchor t, CardinalAnchor2 t, u ~ DUnit t) => u -> t -> Point2 uSource

northeastwards : dist * object -> Point

Variant of the function northwards, but projecting the line northeastwards from the center of the object.

southeastwards :: (Real u, Floating u, CenterAnchor t, CardinalAnchor2 t, u ~ DUnit t) => u -> t -> Point2 uSource

southeastwards : dist * object -> Point

Variant of the function northwards, but projecting the line southeastwards from the center of the object.

southwestwards :: (Real u, Floating u, CenterAnchor t, CardinalAnchor2 t, u ~ DUnit t) => u -> t -> Point2 uSource

southwestwards : dist * object -> Point

Variant of the function northwards, but projecting the line southwestwards from the center of the object.

northwestwards :: (Real u, Floating u, CenterAnchor t, CardinalAnchor2 t, u ~ DUnit t) => u -> t -> Point2 uSource

northwestwards : dist * object -> Point

Variant of the function northwards, but projecting the line northwestwards from the center of the object.

radialConnectorPoints :: (Real u, Floating u, CenterAnchor t1, RadialAnchor t1, CenterAnchor t2, RadialAnchor t2, u ~ DUnit t1, DUnit t1 ~ DUnit t2) => t1 -> t2 -> (Point2 u, Point2 u)Source

radialConnectorPoints : object_a * object_b -> (Point_a, Point_b)

Find the radial connectors points for objects a and b along the line joining their centers.