|Copyright||(c) 2011 diagrams-lib team (see LICENSE)|
|License||BSD-style (see LICENSE)|
Diagrams may have attributes which affect the way they are rendered. This module defines some common attributes; particular backends may also define more backend-specific attributes.
Every attribute type must have a semigroup structure, that is, an
associative binary operation for combining two attributes into one.
Unless otherwise noted, all the attributes defined here use the
Last structure, that is, combining two attributes simply keeps
the second one and throws away the first. This means that child
attributes always override parent attributes.
- class Color c where
- data SomeColor = forall c . Color c => SomeColor c
- someToAlpha :: SomeColor -> AlphaColour Double
- data Opacity
- getOpacity :: Opacity -> Double
- opacity :: HasStyle a => Double -> a -> a
- colorToSRGBA :: Color c => c -> (Double, Double, Double, Double)
- colorToRGBA :: Color c => c -> (Double, Double, Double, Double)
- data LineCap
- data LineCapA
- getLineCap :: LineCapA -> LineCap
- lineCap :: HasStyle a => LineCap -> a -> a
- data LineJoin
- data LineJoinA
- getLineJoin :: LineJoinA -> LineJoin
- lineJoin :: HasStyle a => LineJoin -> a -> a
- newtype LineMiterLimit = LineMiterLimit (Last Double)
- getLineMiterLimit :: LineMiterLimit -> Double
- lineMiterLimit :: HasStyle a => Double -> a -> a
- lineMiterLimitA :: HasStyle a => LineMiterLimit -> a -> a
Diagrams outsources all things color-related to Russell O'Connor's very nice colour package (http://hackage.haskell.org/package/colour). For starters, it provides a large collection of standard color names. However, it also provides a rich set of combinators for combining and manipulating colors; see its documentation for more information.
Convert a color to its standard representation, AlphaColour.
Convert from an AlphaColour Double. Note that this direction
may lose some information. For example, the instance for
Colour drops the alpha channel.
An existential wrapper for instances of the
Although the individual colors in a diagram can have
transparency, the opacity/transparency of a diagram as a whole
can be specified with the
Opacity attribute. The opacity is a
value between 1 (completely opaque, the default) and 0
(completely transparent). Opacity is multiplicative, that is,
. In other
words, for example,
opacity o1 .
opacity o2 ===
opacity (o1 * o2)
opacity 0.8 means "decrease this diagram's
opacity to 80% of its previous opacity".
Multiply the opacity (see
Opacity) by the given value. For
opacity 0.8 means "decrease this diagram's opacity to
80% of its previous opacity".
Deprecated: Renamed to colorToSRGBA.
Convert to sRGBA.
What sort of shape should be placed at the endpoints of lines?
Lines end precisely at their endpoints.
Lines are capped with semicircles centered on endpoints.
Lines are capped with a squares centered on endpoints.
How should the join points between line segments be drawn?
Use a "miter" shape (whatever that is).
Use rounded join points.
Use a "bevel" shape (whatever that is). Are these... carpentry terms?
Miter limit attribute affecting the
For some backends this value may have additional effects.
Set the miter limit for joins with