Maintainer | diagrams-discuss@googlegroups.com |
---|
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.
- class Color c where
- colorToRGBA :: c -> (Double, Double, Double, Double)
- data SomeColor = forall c . Color c => SomeColor c
- newtype LineColor = LineColor SomeColor
- lineColor :: (Color c, HasStyle a) => c -> a -> a
- lc :: HasStyle a => Colour Double -> a -> a
- lcA :: HasStyle a => AlphaColour Double -> a -> a
- newtype FillColor = FillColor SomeColor
- fillColor :: (Color c, HasStyle a) => c -> a -> a
- fc :: HasStyle a => Colour Double -> a -> a
- fcA :: HasStyle a => AlphaColour Double -> a -> a
- newtype LineWidth = LineWidth Double
- lineWidth :: HasStyle a => Double -> a -> a
- lw :: HasStyle a => Double -> a -> a
- data LineCap
- lineCap :: HasStyle a => LineCap -> a -> a
- data LineJoin
- lineJoin :: HasStyle a => LineJoin -> a -> a
- data Dashing = Dashing [Double] Double
- dashing :: HasStyle a => [Double] -> Double -> a -> a
Color
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.
The Color
type class encompasses color representations which
can be used by the Diagrams library. Instances are provided for
both the Colour
and AlphaColour
types
from the Data.Colour library.
An existential wrapper for instances of the Color
class.
Line color
The color with which lines (strokes) are drawn.
lineColor :: (Color c, HasStyle a) => c -> a -> aSource
Set the line (stroke) color. This function is polymorphic in the
color type (so it can be used with either Colour
or
AlphaColour
), but this can sometimes create problems for type
inference, so the lc
and lcA
variants are provided with more
concrete types.
lcA :: HasStyle a => AlphaColour Double -> a -> aSource
A synonym for lineColor
, specialized to
(i.e. colors with transparency).
AlphaColour
Double
Fill color
The color with which shapes are filled.
fillColor :: (Color c, HasStyle a) => c -> a -> aSource
Set the fill color. This function is polymorphic in the color
type (so it can be used with either Colour
or AlphaColour
),
but this can sometimes create problems for type inference, so the
fc
and fcA
variants are provided with more concrete types.
fcA :: HasStyle a => AlphaColour Double -> a -> aSource
A synonym for fillColor
, specialized to
(i.e. colors with transparency).
AlphaColour
Double
Lines
The width of lines. By default, the line width is measured with
respect to the final coordinate system of a rendered diagram,
as opposed to the local coordinate systems in effect at the time
the line width was set for various subdiagrams. This is so that
it is easy to combine a variety of shapes (some created by
scaling) and have them all drawn using a consistent line width.
However, sometimes it is desirable for scaling to affect line
width; the freeze
operation is provided for this purpose. The
line width of frozen diagrams is affected by transformations.
What sort of shape should be placed at the endpoints of lines?
LineCapButt | Lines end precisely at their endpoints. |
LineCapRound | Lines are capped with semicircles centered on endpoints. |
LineCapSquare | Lines are capped with a squares centered on endpoints. |
How should the join points between line segments be drawn?
LineJoinMiter | Use a "miter" shape (whatever that is). |
LineJoinRound | Use rounded join points. |
LineJoinBevel | Use a "bevel" shape (whatever that is). Are these... carpentry terms? |
Create lines that are dashing... er, dashed.