Data.GraphViz.Attributes.Colors

graphviz-2999.18.1.0: Bindings to Graphviz for graph visualisation.

Copyright | (c) Ivan Lazar Miljenovic
License | 3-Clause BSD-style
Maintainer | Ivan.Miljenovic@gmail.com
Safe Haskell | Safe
Language | Haskell2010

Data.GraphViz.Attributes.Colors

Contents

- Color schemes.
- Colors
- Conversion to/from `Colour`.

Description

This module defines the various colors, etc. for Graphviz. For information on colors in general, see: http://graphviz.org/doc/info/attrs.html#k:color For named colors, see: http://graphviz.org/doc/info/colors.html

Note that the ColorBrewer Color Schemes (shortened to just "Brewer" for the rest of this module) are covered by the following license (also available in the LICENSE file of this library): http://graphviz.org/doc/info/colors.html#brewer_license

Synopsis

- data ColorScheme
  - = X11
  - | SVG
  - | Brewer BrewerScheme
- data Color
  - = RGB {
    - red :: Word8
    - green :: Word8
    - blue :: Word8
    }
  - | RGBA {
    - red :: Word8
    - green :: Word8
    - blue :: Word8
    - alpha :: Word8
    }
  - | HSV {
    - hue :: Double
    - saturation :: Double
    - value :: Double
    }
  - | X11Color X11Color
  - | SVGColor SVGColor
  - | BrewerColor BrewerColor
- type ColorList = [WeightedColor]
- data WeightedColor = WC {
  - wColor :: Color
  - weighting :: Maybe Double
  }
- toWC :: Color -> WeightedColor
- toColorList :: [Color] -> ColorList
- class NamedColor nc where
  - toColor :: nc -> Color
- toWColor :: NamedColor nc => nc -> WeightedColor
- toColour :: Color -> Maybe (AlphaColour Double)
- fromColour :: Colour Double -> Color
- fromAColour :: AlphaColour Double -> Color

# Color schemes.

data ColorScheme

This represents the color schemes that Graphviz accepts.

Constructors

X11 |
SVG |
Brewer BrewerScheme |

Instances

Eq ColorScheme |
Ord ColorScheme |
Read ColorScheme |
Show ColorScheme |
ParseDot ColorScheme |
PrintDot ColorScheme |

# Colors

data Color

Defining a color for use with Graphviz. Note that named colors have been split up into `X11Color`s and those based upon the Brewer color schemes.

Constructors

RGB |
Fields red :: Word8 green :: Word8 blue :: Word8
RGBA |
Fields red :: Word8 green :: Word8 blue :: Word8 alpha :: Word8
HSV | The `hue`, `saturation` and `value` values must all be `0 <= x <=1`.
Fields hue :: Double saturation :: Double value :: Double
X11Color X11Color |
SVGColor SVGColor |
BrewerColor BrewerColor |

Instances

Eq Color |
Ord Color |
Read Color |
Show Color |
ParseDot Color |
PrintDot Color |

type ColorList = [WeightedColor]

The sum of the optional weightings must sum to at most `1`.

data WeightedColor

A `Color` tagged with an optional weighting.

Constructors

WC |
Fields wColor :: Color weighting :: Maybe Double Must be in range `0 <= W <= 1`.

Instances

Eq WeightedColor |
Ord WeightedColor |
Read WeightedColor |
Show WeightedColor |
ParseDot WeightedColor |
PrintDot WeightedColor |

toWC :: Color -> WeightedColor

For colors without weightings.

toColorList :: [Color] -> ColorList

For a list of colors without weightings.

class NamedColor nc where

More easily convert named colors to an overall `Color` value.

Minimal complete definition

colorScheme, toColor, printNC, parseNC'

Methods

toColor :: nc -> Color

Instances

NamedColor X11Color |
NamedColor BrewerColor |
NamedColor SVGColor |

toWColor :: NamedColor nc => nc -> WeightedColor

# Conversion to/from `Colour`.

toColour :: Color -> Maybe (AlphaColour Double)

Attempt to convert a `Color` into a `Colour` value with an alpha channel. The use of `Maybe` is because the RGB values of the `BrewerColor`s haven't been stored here (primarily for licensing reasons).

fromColour :: Colour Double -> Color

Convert a `Colour` value to an `RGB` `Color`.

fromAColour :: AlphaColour Double -> Color

Convert an `AlphaColour` to an `RGBA` `Color`. The exception to this is for any `AlphaColour` which has `alphaChannel ac == 0`; these are converted to `X11Color `Transparent`` (note that the `Show` instance for such an `AlphaColour` is `"transparent"`).