Copyright | (c) 2011-2013 diagrams-lib team (see LICENSE) |
---|---|

License | BSD-style (see LICENSE) |

Maintainer | diagrams-discuss@googlegroups.com |

Safe Haskell | None |

Language | Haskell2010 |

- class Alignable a where
- alignBy' :: (InSpace v n a, Fractional n, HasOrigin a) => (v n -> a -> Point v n) -> v n -> n -> a -> a
- defaultBoundary :: (V a ~ v, N a ~ n) => v n -> a -> Point v n
- alignBy :: (InSpace v n a, Fractional n, HasOrigin a) => v n -> n -> a -> a

- alignBy'Default :: (InSpace v n a, Fractional n, HasOrigin a) => (v n -> a -> Point v n) -> v n -> n -> a -> a
- envelopeBoundary :: (V a ~ v, N a ~ n, Enveloped a) => v n -> a -> Point v n
- traceBoundary :: (V a ~ v, N a ~ n, Num n, Traced a) => v n -> a -> Point v n
- align :: (InSpace v n a, Fractional n, Alignable a, HasOrigin a) => v n -> a -> a
- snug :: (InSpace v n a, Fractional n, Alignable a, Traced a, HasOrigin a) => v n -> a -> a
- centerV :: (InSpace v n a, Fractional n, Alignable a, HasOrigin a) => v n -> a -> a
- center :: (InSpace v n a, Fractional n, Traversable v, Alignable a, HasOrigin a) => a -> a
- snugBy :: (InSpace v n a, Fractional n, Alignable a, Traced a, HasOrigin a) => v n -> n -> a -> a
- snugCenterV :: (InSpace v n a, Fractional n, Alignable a, Traced a, HasOrigin a) => v n -> a -> a
- snugCenter :: (InSpace v n a, Traversable v, Fractional n, Alignable a, HasOrigin a, Traced a) => a -> a

# Alignable class

class Alignable a where Source

Class of things which can be aligned.

alignBy' :: (InSpace v n a, Fractional n, HasOrigin a) => (v n -> a -> Point v n) -> v n -> n -> a -> a Source

`alignBy v d a`

moves the origin of `a`

along the vector
`v`

. If `d = 1`

, the origin is moved to the edge of the
boundary in the direction of `v`

; if `d = -1`

, it moves to the
edge of the boundary in the direction of the negation of `v`

.
Other values of `d`

interpolate linearly (so for example, ```
d =
0
```

centers the origin along the direction of `v`

).

defaultBoundary :: (V a ~ v, N a ~ n) => v n -> a -> Point v n Source

alignBy :: (InSpace v n a, Fractional n, HasOrigin a) => v n -> n -> a -> a Source

((~) (* -> *) (V b) v, (~) * (N b) n, Metric v, OrderedField n, Alignable b) => Alignable [b] | |

((~) (* -> *) (V b) v, (~) * (N b) n, Metric v, OrderedField n, Alignable b) => Alignable (Set b) | |

(InSpace v n a, HasOrigin a, Alignable a) => Alignable (b -> a) | Although the |

((~) (* -> *) (V b) v, (~) * (N b) n, Metric v, OrderedField n, Alignable b) => Alignable (Map k b) | |

(Metric v, OrderedField n) => Alignable (Envelope v n) | |

(Metric v, OrderedField n) => Alignable (Trace v n) | |

(Metric v, OrderedField n) => Alignable (Path v n) | |

(Metric v, Traversable v, OrderedField n) => Alignable (BoundingBox v n) | |

(Metric v, OrderedField n, Monoid' m) => Alignable (QDiagram b v n m) |

alignBy'Default :: (InSpace v n a, Fractional n, HasOrigin a) => (v n -> a -> Point v n) -> v n -> n -> a -> a Source

envelopeBoundary :: (V a ~ v, N a ~ n, Enveloped a) => v n -> a -> Point v n Source

Some standard functions which can be used as the `boundary`

argument to
`alignBy'`

.

# General alignment functions

align :: (InSpace v n a, Fractional n, Alignable a, HasOrigin a) => v n -> a -> a Source

`align v`

aligns an enveloped object along the edge in the
direction of `v`

. That is, it moves the local origin in the
direction of `v`

until it is on the edge of the envelope. (Note
that if the local origin is outside the envelope to begin with,
it may have to move "backwards".)

snug :: (InSpace v n a, Fractional n, Alignable a, Traced a, HasOrigin a) => v n -> a -> a Source

Like align but uses trace.

centerV :: (InSpace v n a, Fractional n, Alignable a, HasOrigin a) => v n -> a -> a Source

`centerV v`

centers an enveloped object along the direction of
`v`

.

center :: (InSpace v n a, Fractional n, Traversable v, Alignable a, HasOrigin a) => a -> a Source

`center`

centers an enveloped object along all of its basis vectors.

snugBy :: (InSpace v n a, Fractional n, Alignable a, Traced a, HasOrigin a) => v n -> n -> a -> a Source

Version of `alignBy`

specialized to use `traceBoundary`

snugCenterV :: (InSpace v n a, Fractional n, Alignable a, Traced a, HasOrigin a) => v n -> a -> a Source

Like `centerV`

using trace.

snugCenter :: (InSpace v n a, Traversable v, Fractional n, Alignable a, HasOrigin a, Traced a) => a -> a Source

Like `center`

using trace.