Data.GraphViz.Attributes.Complete

graphviz-2999.18.1.0: Bindings to Graphviz for graph visualisation.

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

Data.GraphViz.Attributes.Complete

Contents

- The actual Dot attributes.
  - Validity functions on `Attribute` values.
  - Custom attributes.
- Value types for `Attribute`s.
  - Generic types
  - Labels
    - Types representing the Dot grammar for records.
  - Nodes
  - Edges
    - Modifying where edges point
    - Arrows
      - `ArrowModifier` values
  - Positioning
  - Layout
  - Modes
  - Layers
  - Stylistic

Description

If you are just using graphviz to create basic Dot graphs, then you probably want to use Data.GraphViz.Attributes rather than this module.

This module defines the various attributes that different parts of a Graphviz graph can have. These attributes are based on the documentation found at: http://graphviz.org/doc/info/attrs.html

For more information on usage, etc. please see that document.

A summary of known current constraints/limitations/differences:

- Note that for an edge, in Dot parlance if the edge goes from A to B, then A is the tail node and B is the head node (since A is at the tail end of the arrow).
- `ColorList`, `DoubleList` and `PointfList` are defined as actual lists (``LayerList`` needs a newtype for other reasons). All of these are assumed to be non-empty lists.
- For the various `*Color` attributes that take in a list of `Color` values, usually only one color is used. The `Color` attribute for edges allows multiple values; for other attributes, two values are supported for gradient fills in Graphviz >= 2.29.0.
- Style is implemented as a list of `StyleItem` values; note that empty lists are not allowed.
- A lot of values have a possible value of `none`. These now have custom constructors. In fact, most constructors have been expanded upon to give an idea of what they represent rather than using generic terms.
- `Rect` uses two `Point` values to denote the lower-left and top-right corners.
- The two `LabelLoc` attributes have been combined.
- `SplineType` has been replaced with `[`Spline`]`.
- Only polygon-based `Shape`s are available.
- Not every `Attribute` is fully documented/described. However, all those which have specific allowed values should be covered.
- Deprecated `Overlap` algorithms are not defined. Furthermore, the ability to specify an integer prefix for use with the fdp layout is not supported.
- The global `Orientation` attribute is not defined, as it is difficult to distinguish from the node-based `Orientation` `Attribute`; also, its behaviour is duplicated by `Rotate`.
- The `charset` attribute is not available, as graphviz only supports UTF-8 encoding (as it is not currently feasible nor needed to also support Latin1 encoding).
- In Graphviz, when a node or edge has a list of attributes, the colorscheme which is used to identify a color can be set after that color (e.g. `[colorscheme=x11,color=grey,colorscheme=svg]` uses the svg colorscheme's definition of grey, which is different from the x11 one. Instead, graphviz parses them in order.

Synopsis

- data Attribute
  - = Damping Double
  - | K Double
  - | URL EscString
  - | Area Double
  - | ArrowHead ArrowType
  - | ArrowSize Double
  - | ArrowTail ArrowType
  - | Background Text
  - | BoundingBox Rect
  - | BgColor ColorList
  - | Center Bool
  - | ClusterRank ClusterMode
  - | Color ColorList
  - | ColorScheme ColorScheme
  - | Comment Text
  - | Compound Bool
  - | Concentrate Bool
  - | Constraint Bool
  - | Decorate Bool
  - | DefaultDist Double
  - | Dim Int
  - | Dimen Int
  - | Dir DirType
  - | DirEdgeConstraints DEConstraints
  - | Distortion Double
  - | DPI Double
  - | EdgeURL EscString
  - | EdgeTarget EscString
  - | EdgeTooltip EscString
  - | Epsilon Double
  - | ESep DPoint
  - | FillColor ColorList
  - | FixedSize NodeSize
  - | FontColor Color
  - | FontName Text
  - | FontNames SVGFontNames
  - | FontPath Paths
  - | FontSize Double
  - | ForceLabels Bool
  - | GradientAngle Int
  - | Group Text
  - | HeadURL EscString
  - | Head_LP Point
  - | HeadClip Bool
  - | HeadLabel Label
  - | HeadPort PortPos
  - | HeadTarget EscString
  - | HeadTooltip EscString
  - | Height Double
  - | ID EscString
  - | Image Text
  - | ImagePath Paths
  - | ImageScale ScaleType
  - | InputScale Double
  - | Label Label
  - | LabelURL EscString
  - | LabelScheme LabelScheme
  - | LabelAngle Double
  - | LabelDistance Double
  - | LabelFloat Bool
  - | LabelFontColor Color
  - | LabelFontName Text
  - | LabelFontSize Double
  - | LabelJust Justification
  - | LabelLoc VerticalPlacement
  - | LabelTarget EscString
  - | LabelTooltip EscString
  - | Landscape Bool
  - | Layer LayerRange
  - | LayerListSep LayerListSep
  - | Layers LayerList
  - | LayerSelect LayerRange
  - | LayerSep LayerSep
  - | Layout GraphvizCommand
  - | Len Double
  - | Levels Int
  - | LevelsGap Double
  - | LHead Text
  - | LHeight Double
  - | LPos Point
  - | LTail Text
  - | LWidth Double
  - | Margin DPoint
  - | MaxIter Int
  - | MCLimit Double
  - | MinDist Double
  - | MinLen Int
  - | Mode ModeType
  - | Model Model
  - | Mosek Bool
  - | NodeSep Double
  - | NoJustify Bool
  - | Normalize Normalized
  - | NoTranslate Bool
  - | Nslimit Double
  - | Nslimit1 Double
  - | Ordering Order
  - | Orientation Double
  - | OutputOrder OutputMode
  - | Overlap Overlap
  - | OverlapScaling Double
  - | OverlapShrink Bool
  - | Pack Pack
  - | PackMode PackMode
  - | Pad DPoint
  - | Page Point
  - | PageDir PageDir
  - | PenColor Color
  - | PenWidth Double
  - | Peripheries Int
  - | Pin Bool
  - | Pos Pos
  - | QuadTree QuadType
  - | Quantum Double
  - | Rank RankType
  - | RankDir RankDir
  - | RankSep [Double]
  - | Ratio Ratios
  - | Rects [Rect]
  - | Regular Bool
  - | ReMinCross Bool
  - | RepulsiveForce Double
  - | Root Root
  - | Rotate Int
  - | Rotation Double
  - | SameHead Text
  - | SameTail Text
  - | SamplePoints Int
  - | Scale DPoint
  - | SearchSize Int
  - | Sep DPoint
  - | Shape Shape
  - | ShowBoxes Int
  - | Sides Int
  - | Size GraphSize
  - | Skew Double
  - | Smoothing SmoothType
  - | SortV Word16
  - | Splines EdgeType
  - | Start StartType
  - | Style [StyleItem]
  - | StyleSheet Text
  - | TailURL EscString
  - | Tail_LP Point
  - | TailClip Bool
  - | TailLabel Label
  - | TailPort PortPos
  - | TailTarget EscString
  - | TailTooltip EscString
  - | Target EscString
  - | Tooltip EscString
  - | TrueColor Bool
  - | Vertices [Point]
  - | ViewPort ViewPort
  - | VoroMargin Double
  - | Weight Number
  - | Width Double
  - | XDotVersion Version
  - | XLabel Label
  - | XLP Point
  - | UnknownAttribute AttributeName Text
- type Attributes = [Attribute]
- sameAttribute :: Attribute -> Attribute -> Bool
- defaultAttributeValue :: Attribute -> Maybe Attribute
- rmUnwantedAttributes :: Attributes -> Attributes
- usedByGraphs :: Attribute -> Bool
- usedBySubGraphs :: Attribute -> Bool
- usedByClusters :: Attribute -> Bool
- usedByNodes :: Attribute -> Bool
- usedByEdges :: Attribute -> Bool
- validUnknown :: AttributeName -> Bool
- type AttributeName = Text
- type CustomAttribute = Attribute
- customAttribute :: AttributeName -> Text -> CustomAttribute
- isCustom :: Attribute -> Bool
- isSpecifiedCustom :: AttributeName -> Attribute -> Bool
- customValue :: CustomAttribute -> Text
- customName :: CustomAttribute -> AttributeName
- findCustoms :: Attributes -> ([CustomAttribute], Attributes)
- findSpecifiedCustom :: AttributeName -> Attributes -> Maybe (CustomAttribute, Attributes)
- deleteCustomAttributes :: Attributes -> Attributes
- deleteSpecifiedCustom :: AttributeName -> Attributes -> Attributes
- module Data.GraphViz.Attributes.Colors
- data Number
  - = Int Int
  - | Dbl Double
- type EscString = Text
- data Label
  - = StrLabel EscString
  - | HtmlLabel Label
  - | RecordLabel RecordFields
- data VerticalPlacement
  - = VTop
  - | VCenter
  - | VBottom
- data LabelScheme
  - = NotEdgeLabel
  - | CloseToCenter
  - | CloseToOldCenter
  - | RemoveAndStraighten
- data SVGFontNames
  - = SvgNames
  - | PostScriptNames
  - | FontConfigNames
- type RecordFields = [RecordField]
- data RecordField
  - = LabelledTarget PortName EscString
  - | PortName PortName
  - | FieldLabel EscString
  - | FlipFields RecordFields
- data Rect = Rect Point Point
- data Justification
  - = JLeft
  - | JRight
  - | JCenter
- data Shape
  - = BoxShape
  - | Polygon
  - | Ellipse
  - | Circle
  - | PointShape
  - | Egg
  - | Triangle
  - | PlainText
  - | DiamondShape
  - | Trapezium
  - | Parallelogram
  - | House
  - | Pentagon
  - | Hexagon
  - | Septagon
  - | Octagon
  - | DoubleCircle
  - | DoubleOctagon
  - | TripleOctagon
  - | InvTriangle
  - | InvTrapezium
  - | InvHouse
  - | MDiamond
  - | MSquare
  - | MCircle
  - | Square
  - | Star
  - | Underline
  - | Note
  - | Tab
  - | Folder
  - | Box3D
  - | Component
  - | Promoter
  - | CDS
  - | Terminator
  - | UTR
  - | PrimerSite
  - | RestrictionSite
  - | FivePovOverhang
  - | ThreePovOverhang
  - | NoOverhang
  - | Assembly
  - | Signature
  - | Insulator
  - | Ribosite
  - | RNAStab
  - | ProteaseSite
  - | ProteinStab
  - | RPromoter
  - | RArrow
  - | LArrow
  - | LPromoter
  - | Record
  - | MRecord
- newtype Paths = Paths {
  - paths :: [FilePath]
  }
- data ScaleType
  - = UniformScale
  - | NoScale
  - | FillWidth
  - | FillHeight
  - | FillBoth
- data NodeSize
  - = GrowAsNeeded
  - | SetNodeSize
  - | SetShapeSize
- data DirType
  - = Forward
  - | Back
  - | Both
  - | NoDir
- data EdgeType
  - = SplineEdges
  - | LineEdges
  - | NoEdges
  - | PolyLine
  - | Ortho
  - | Curved
  - | CompoundEdge
- newtype PortName = PN {
  - portName :: Text
  }
- data PortPos
  - = LabelledPort PortName (Maybe CompassPoint)
  - | CompassPoint CompassPoint
- data CompassPoint
  - = North
  - | NorthEast
  - | East
  - | SouthEast
  - | South
  - | SouthWest
  - | West
  - | NorthWest
  - | CenterPoint
  - | NoCP
- newtype ArrowType = AType [(ArrowModifier, ArrowShape)]
- data ArrowShape
  - = Box
  - | Crow
  - | Diamond
  - | DotArrow
  - | Inv
  - | NoArrow
  - | Normal
  - | Tee
  - | Vee
- data ArrowModifier = ArrMod {
  - arrowFill :: ArrowFill
  - arrowSide :: ArrowSide
  }
- data ArrowFill
  - = OpenArrow
  - | FilledArrow
- data ArrowSide
  - = LeftSide
  - | RightSide
  - | BothSides
- noMods :: ArrowModifier
- openMod :: ArrowModifier
- data Point = Point {
  - xCoord :: Double
  - yCoord :: Double
  - zCoord :: Maybe Double
  - forcePos :: Bool
  }
- createPoint :: Double -> Double -> Point
- data Pos
  - = PointPos Point
  - | SplinePos [Spline]
- data Spline = Spline {
  - endPoint :: Maybe Point
  - startPoint :: Maybe Point
  - splinePoints :: [Point]
  }
- data DPoint
  - = DVal Double
  - | PVal Point
- data Normalized
  - = IsNormalized
  - | NotNormalized
  - | NormalizedAngle Double
- data GraphvizCommand
  - = Dot
  - | Neato
  - | TwoPi
  - | Circo
  - | Fdp
  - | Sfdp
  - | Osage
  - | Patchwork
- data GraphSize = GSize {
  - width :: Double
  - height :: Maybe Double
  - desiredSize :: Bool
  }
- data ClusterMode
  - = Local
  - | Global
  - | NoCluster
- data Model
  - = ShortPath
  - | SubSet
  - | Circuit
  - | MDS
- data Overlap
  - = KeepOverlaps
  - | ScaleOverlaps
  - | ScaleXYOverlaps
  - | PrismOverlap (Maybe Word16)
  - | VoronoiOverlap
  - | CompressOverlap
  - | VpscOverlap
  - | IpsepOverlap
- data Root
  - = IsCentral
  - | NotCentral
  - | NodeName Text
- data Order
  - = OutEdges
  - | InEdges
- data OutputMode
  - = BreadthFirst
  - | NodesFirst
  - | EdgesFirst
- data Pack
  - = DoPack
  - | DontPack
  - | PackMargin Int
- data PackMode
  - = PackNode
  - | PackClust
  - | PackGraph
  - | PackArray Bool Bool (Maybe Int)
- data PageDir
  - = Bl
  - | Br
  - | Tl
  - | Tr
  - | Rb
  - | Rt
  - | Lb
  - | Lt
- data QuadType
  - = NormalQT
  - | FastQT
  - | NoQT
- data RankType
  - = SameRank
  - | MinRank
  - | SourceRank
  - | MaxRank
  - | SinkRank
- data RankDir
  - = FromTop
  - | FromLeft
  - | FromBottom
  - | FromRight
- data StartType
  - = StartStyle STStyle
  - | StartSeed Int
  - | StartStyleSeed STStyle Int
- data ViewPort = VP {
  - wVal :: Double
  - hVal :: Double
  - zVal :: Double
  - focus :: Maybe FocusType
  }
- data FocusType
  - = XY Point
  - | NodeFocus Text
- data Ratios
  - = AspectRatio Double
  - | FillRatio
  - | CompressRatio
  - | ExpandRatio
  - | AutoRatio
- data ModeType
  - = Major
  - | KK
  - | Hier
  - | IpSep
  - | SpringMode
  - | MaxEnt
- data DEConstraints
  - = EdgeConstraints
  - | NoConstraints
  - | HierConstraints
- newtype LayerSep = LSep Text
- newtype LayerListSep = LLSep Text
- type LayerRange = [LayerRangeElem]
- data LayerRangeElem
  - = LRID LayerID
  - | LRS LayerID LayerID
- data LayerID
  - = AllLayers
  - | LRInt Int
  - | LRName Text
- newtype LayerList = LL [LayerID]
- data SmoothType
  - = NoSmooth
  - | AvgDist
  - | GraphDist
  - | PowerDist
  - | RNG
  - | Spring
  - | TriangleSmooth
- data STStyle
  - = RegularStyle
  - | SelfStyle
  - | RandomStyle
- data StyleItem = SItem StyleName [Text]
- data StyleName
  - = Dashed
  - | Dotted
  - | Solid
  - | Bold
  - | Invisible
  - | Filled
  - | Striped
  - | Wedged
  - | Diagonals
  - | Rounded
  - | Tapered
  - | Radial
  - | DD Text

# The actual Dot attributes.

These attributes have been implemented in a permissive manner: that is, rather than split them up based on which type of value they are allowed, they have all been included in the one data type, with functions to determine if they are indeed valid for what they're being applied to.

To interpret the Valid for listings:

`G`
  Valid for Graphs.
`C`
  Valid for Clusters.
`S`
  Valid for Sub-Graphs (and also Clusters).
`N`
  Valid for Nodes.
`E`
  Valid for Edges.

The Default listings are those that the various Graphviz commands use if that `Attribute` isn't specified (in cases where this is none, this is equivalent to a `Nothing` value; that is, no value is used). The Parsing Default listings represent what value is used (i.e. corresponds to `True`) when the `Attribute` name is listed on its own in Dot source code.

Please note that the `UnknownAttribute` `Attribute` is defined primarily for backwards-compatibility purposes. It is possible to use it directly for custom purposes; for more information, please see `CustomAttribute`. The `deleteCustomAttributes` can be used to delete these values.

data Attribute

Attributes are used to customise the layout and design of Dot graphs. Care must be taken to ensure that the attribute you use is valid, as not all attributes can be used everywhere.

Constructors

Damping Double | Valid for: G; Default: `0.99`; Minimum: `0.0`; Notes: `Neato` only
K Double | Valid for: GC; Default: `0.3`; Minimum: `0`; Notes: `Sfdp`, `Fdp` only
URL EscString | Valid for: ENGC; Default: none; Notes: svg, postscript, map only
Area Double | Valid for: NC; Default: `1.0`; Minimum: `>0`; Notes: `Patchwork` only, requires Graphviz >= 2.30.0
ArrowHead ArrowType | Valid for: E; Default: ``normal``
ArrowSize Double | Valid for: E; Default: `1.0`; Minimum: `0.0`
ArrowTail ArrowType | Valid for: E; Default: ``normal``
Background Text | Valid for: G; Default: none; Notes: xdot only
BoundingBox Rect | Valid for: G; Notes: write only
BgColor ColorList | Valid for: GC; Default: `[]`
Center Bool | Valid for: G; Default: ``False``; Parsing Default: `True`
ClusterRank ClusterMode | Valid for: G; Default: ``Local``; Notes: `Dot` only
Color ColorList | Valid for: ENC; Default: `[`WC` (`X11Color` `Black`) Nothing]`
ColorScheme ColorScheme | Valid for: ENCG; Default: ``X11``
Comment Text | Valid for: ENG; Default: `""`
Compound Bool | Valid for: G; Default: ``False``; Parsing Default: `True`; Notes: `Dot` only
Concentrate Bool | Valid for: G; Default: ``False``; Parsing Default: `True`
Constraint Bool | Valid for: E; Default: ``True``; Parsing Default: `True`; Notes: `Dot` only
Decorate Bool | Valid for: E; Default: ``False``; Parsing Default: `True`
DefaultDist Double | Valid for: G; Default: `1+(avg. len)*sqrt(abs(V))` (unable to statically define); Minimum: The value of `Epsilon`.; Notes: `Neato` only, only if ``Pack` `DontPack``
Dim Int | Valid for: G; Default: `2`; Minimum: `2`; Notes: maximum of `10`; `Sfdp`, `Fdp`, `Neato` only
Dimen Int | Valid for: G; Default: `2`; Minimum: `2`; Notes: maximum of `10`; `Sfdp`, `Fdp`, `Neato` only
Dir DirType | Valid for: E; Default: ``Forward`` (directed), ``NoDir`` (undirected)
DirEdgeConstraints DEConstraints | Valid for: G; Default: ``NoConstraints``; Parsing Default: `EdgeConstraints`; Notes: `Neato` only
Distortion Double | Valid for: N; Default: `0.0`; Minimum: `-100.0`
DPI Double | Valid for: G; Default: `96.0`, `0.0`; Notes: svg, bitmap output only; "resolution" is a synonym
EdgeURL EscString | Valid for: E; Default: `""`; Notes: svg, map only
EdgeTarget EscString | Valid for: E; Default: none; Notes: svg, map only
EdgeTooltip EscString | Valid for: E; Default: `""`; Notes: svg, cmap only
Epsilon Double | Valid for: G; Default: `.0001 * # nodes` (`mode == `KK``), `.0001` (`mode == `Major``); Notes: `Neato` only
ESep DPoint | Valid for: G; Default: ``DVal` 3`; Notes: not `Dot`
FillColor ColorList | Valid for: NEC; Default: `[`WC` (`X11Color` `LightGray`) Nothing]` (nodes), `[`WC` (`X11Color` `Black`) Nothing]` (clusters)
FixedSize NodeSize | Valid for: N; Default: ``GrowAsNeeded``; Parsing Default: `SetNodeSize`
FontColor Color | Valid for: ENGC; Default: ``X11Color` `Black``
FontName Text | Valid for: ENGC; Default: `"Times-Roman"`
FontNames SVGFontNames | Valid for: G; Default: ``SvgNames``; Notes: svg only
FontPath Paths | Valid for: G; Default: system dependent
FontSize Double | Valid for: ENGC; Default: `14.0`; Minimum: `1.0`
ForceLabels Bool | Valid for: G; Default: ``True``; Parsing Default: `True`; Notes: only for `XLabel` attributes, requires Graphviz >= 2.29.0
GradientAngle Int | Valid for: NCG; Default: 0; Notes: requires Graphviz >= 2.29.0
Group Text | Valid for: N; Default: `""`; Notes: `Dot` only
HeadURL EscString | Valid for: E; Default: `""`; Notes: svg, map only
Head_LP Point | Valid for: E; Notes: write only, requires Graphviz >= 2.30.0
HeadClip Bool | Valid for: E; Default: ``True``; Parsing Default: `True`
HeadLabel Label | Valid for: E; Default: ``StrLabel` ""`
HeadPort PortPos | Valid for: E; Default: ``CompassPoint` `CenterPoint``
HeadTarget EscString | Valid for: E; Default: none; Notes: svg, map only
HeadTooltip EscString | Valid for: E; Default: `""`; Notes: svg, cmap only
Height Double | Valid for: N; Default: `0.5`; Minimum: `0.02`
ID EscString | Valid for: GNE; Default: `""`; Notes: svg, postscript, map only
Image Text | Valid for: N; Default: `""`
ImagePath Paths | Valid for: G; Default: ``Paths` []`; Notes: Printing and parsing is OS-specific, requires Graphviz >= 2.29.0
ImageScale ScaleType | Valid for: N; Default: ``NoScale``; Parsing Default: `UniformScale`
InputScale Double | Valid for: N; Default: none; Notes: `Fdp`, `Neato` only, a value of `0` is equivalent to being `72`, requires Graphviz >= 2.36.0
Label Label | Valid for: ENGC; Default: ``StrLabel` "\N"` (nodes), ``StrLabel` ""` (otherwise)
LabelURL EscString | Valid for: E; Default: `""`; Notes: svg, map only
LabelScheme LabelScheme | Valid for: G; Default: ``NotEdgeLabel``; Notes: `Sfdp` only, requires Graphviz >= 2.28.0
LabelAngle Double | Valid for: E; Default: `-25.0`; Minimum: `-180.0`
LabelDistance Double | Valid for: E; Default: `1.0`; Minimum: `0.0`
LabelFloat Bool | Valid for: E; Default: ``False``; Parsing Default: `True`
LabelFontColor Color | Valid for: E; Default: ``X11Color` `Black``
LabelFontName Text | Valid for: E; Default: `"Times-Roman"`
LabelFontSize Double | Valid for: E; Default: `14.0`; Minimum: `1.0`
LabelJust Justification | Valid for: GC; Default: ``JCenter``
LabelLoc VerticalPlacement | Valid for: GCN; Default: ``VTop`` (clusters), ``VBottom`` (root graphs), ``VCenter`` (nodes)
LabelTarget EscString | Valid for: E; Default: none; Notes: svg, map only
LabelTooltip EscString | Valid for: E; Default: `""`; Notes: svg, cmap only
Landscape Bool | Valid for: G; Default: ``False``; Parsing Default: `True`
Layer LayerRange | Valid for: ENC; Default: `[]`
LayerListSep LayerListSep | Valid for: G; Default: ``LLSep` ","`; Notes: requires Graphviz >= 2.30.0
Layers LayerList | Valid for: G; Default: ``LL` []`
LayerSelect LayerRange | Valid for: G; Default: `[]`
LayerSep LayerSep | Valid for: G; Default: ``LSep` " :t"`
Layout GraphvizCommand | Valid for: G
Len Double | Valid for: E; Default: `1.0` (`Neato`), `0.3` (`Fdp`); Notes: `Fdp`, `Neato` only
Levels Int | Valid for: G; Default: ``maxBound``; Minimum: `0`; Notes: `Sfdp` only
LevelsGap Double | Valid for: G; Default: `0.0`; Notes: `Neato` only
LHead Text | Valid for: E; Default: `""`; Notes: `Dot` only
LHeight Double | Valid for: GC; Notes: write only, requires Graphviz >= 2.28.0
LPos Point | Valid for: EGC; Notes: write only
LTail Text | Valid for: E; Default: `""`; Notes: `Dot` only
LWidth Double | Valid for: GC; Notes: write only, requires Graphviz >= 2.28.0
Margin DPoint | Valid for: NGC; Default: device dependent
MaxIter Int | Valid for: G; Default: `100 * # nodes` (`mode == `KK``), `200` (`mode == `Major``), `600` (`Fdp`); Notes: `Fdp`, `Neato` only
MCLimit Double | Valid for: G; Default: `1.0`; Notes: `Dot` only
MinDist Double | Valid for: G; Default: `1.0`; Minimum: `0.0`; Notes: `Circo` only
MinLen Int | Valid for: E; Default: `1`; Minimum: `0`; Notes: `Dot` only
Mode ModeType | Valid for: G; Default: ``Major`` (actually ``Spring`` for `Sfdp`, but this isn't used as a default in this library); Notes: `Neato`, `Sfdp` only
Model Model | Valid for: G; Default: ``ShortPath``; Notes: `Neato` only
Mosek Bool | Valid for: G; Default: ``False``; Parsing Default: `True`; Notes: `Neato` only; requires the Mosek software
NodeSep Double | Valid for: G; Default: `0.25`; Minimum: `0.02`
NoJustify Bool | Valid for: GCNE; Default: ``False``; Parsing Default: `True`
Normalize Normalized | Valid for: G; Default: ``NotNormalized``; Parsing Default: `IsNormalized`; Notes: not `Dot`
NoTranslate Bool | Valid for: G; Default: ``False``; Parsing Default: `True`; Notes: `Neato` only, requires Graphviz >= 2.38.0
Nslimit Double | Valid for: G; Notes: `Dot` only
Nslimit1 Double | Valid for: G; Notes: `Dot` only
Ordering Order | Valid for: GN; Default: none; Notes: `Dot` only
Orientation Double | Valid for: N; Default: `0.0`; Minimum: `360.0`
OutputOrder OutputMode | Valid for: G; Default: ``BreadthFirst``
Overlap Overlap | Valid for: G; Default: ``KeepOverlaps``; Parsing Default: `KeepOverlaps`; Notes: not `Dot`
OverlapScaling Double | Valid for: G; Default: `-4`; Minimum: `-1.0e10`; Notes: `PrismOverlap` only
OverlapShrink Bool | Valid for: G; Default: ``True``; Parsing Default: `True`; Notes: `PrismOverlap` only, requires Graphviz >= 2.36.0
Pack Pack | Valid for: G; Default: ``DontPack``; Parsing Default: `DoPack`
PackMode PackMode | Valid for: G; Default: ``PackNode``
Pad DPoint | Valid for: G; Default: ``DVal` 0.0555` (4 points)
Page Point | Valid for: G
PageDir PageDir | Valid for: G; Default: ``Bl``
PenColor Color | Valid for: C; Default: ``X11Color` `Black``
PenWidth Double | Valid for: CNE; Default: `1.0`; Minimum: `0.0`
Peripheries Int | Valid for: NC; Default: shape default (nodes), `1` (clusters); Minimum: 0
Pin Bool | Valid for: N; Default: ``False``; Parsing Default: `True`; Notes: `Fdp`, `Neato` only
Pos Pos | Valid for: EN
QuadTree QuadType | Valid for: G; Default: ``NormalQT``; Parsing Default: `NormalQT`; Notes: `Sfdp` only
Quantum Double | Valid for: G; Default: `0.0`; Minimum: `0.0`
Rank RankType | Valid for: S; Notes: `Dot` only
RankDir RankDir | Valid for: G; Default: ``FromTop``; Notes: `Dot` only
RankSep [Double] | Valid for: G; Default: `[0.5]` (`Dot`), `[1.0]` (`Twopi`); Minimum: `[0.02]`; Notes: `Twopi`, `Dot` only
Ratio Ratios | Valid for: G
Rects [Rect] | Valid for: N; Notes: write only
Regular Bool | Valid for: N; Default: ``False``; Parsing Default: `True`
ReMinCross Bool | Valid for: G; Default: ``False``; Parsing Default: `True`; Notes: `Dot` only
RepulsiveForce Double | Valid for: G; Default: `1.0`; Minimum: `0.0`; Notes: `Sfdp` only
Root Root | Valid for: GN; Default: ``NodeName` ""` (graphs), ``NotCentral`` (nodes); Parsing Default: `IsCentral`; Notes: `Circo`, `Twopi` only
Rotate Int | Valid for: G; Default: `0`
Rotation Double | Valid for: G; Default: `0`; Notes: `Sfdp` only, requires Graphviz >= 2.28.0
SameHead Text | Valid for: E; Default: `""`; Notes: `Dot` only
SameTail Text | Valid for: E; Default: `""`; Notes: `Dot` only
SamplePoints Int | Valid for: N; Default: `8` (output), `20` (overlap and image maps)
Scale DPoint | Valid for: G; Notes: Not `Dot`, requires Graphviz >= 2.28.0 (>= 2.38.0 for anything except `TwoPi`)
SearchSize Int | Valid for: G; Default: `30`; Notes: `Dot` only
Sep DPoint | Valid for: G; Default: ``DVal` 4`; Notes: not `Dot`
Shape Shape | Valid for: N; Default: ``Ellipse``
ShowBoxes Int | Valid for: ENG; Default: `0`; Minimum: `0`; Notes: `Dot` only; used for debugging by printing PostScript guide boxes
Sides Int | Valid for: N; Default: `4`; Minimum: `0`
Size GraphSize | Valid for: G
Skew Double | Valid for: N; Default: `0.0`; Minimum: `-100.0`
Smoothing SmoothType | Valid for: G; Default: ``NoSmooth``; Notes: `Sfdp` only
SortV Word16 | Valid for: GCN; Default: `0`; Minimum: `0`
Splines EdgeType | Valid for: G; Default: ``SplineEdges`` (`Dot`), ``LineEdges`` (other); Parsing Default: `SplineEdges`
Start StartType | Valid for: G; Default: ``StartStyleSeed` `RandomStyle` seed` for some unknown fixed seed.; Notes: `Fdp`, `Neato` only
Style [StyleItem] | Valid for: ENCG
StyleSheet Text | Valid for: G; Default: `""`; Notes: svg only
TailURL EscString | Valid for: E; Default: `""`; Notes: svg, map only
Tail_LP Point | Valid for: E; Notes: write only, requires Graphviz >= 2.30.0
TailClip Bool | Valid for: E; Default: ``True``; Parsing Default: `True`
TailLabel Label | Valid for: E; Default: ``StrLabel` ""`
TailPort PortPos | Valid for: E; Default: ``CompassPoint` `CenterPoint``
TailTarget EscString | Valid for: E; Default: none; Notes: svg, map only
TailTooltip EscString | Valid for: E; Default: `""`; Notes: svg, cmap only
Target EscString | Valid for: ENGC; Default: none; Notes: svg, map only
Tooltip EscString | Valid for: NEC; Default: `""`; Notes: svg, cmap only
TrueColor Bool | Valid for: G; Parsing Default: `True`; Notes: bitmap output only
Vertices [Point] | Valid for: N; Notes: write only
ViewPort ViewPort | Valid for: G; Default: none
VoroMargin Double | Valid for: G; Default: `0.05`; Minimum: `0.0`; Notes: not `Dot`
Weight Number | Valid for: E; Default: ``Int` 1`; Minimum: ``Int` 0` (`Dot`), ``Int` 1` (`Neato`,`Fdp`,`Sfdp`); Notes: as of Graphviz 2.30: weights for dot need to be `Int`s
Width Double | Valid for: N; Default: `0.75`; Minimum: `0.01`
XDotVersion Version | Valid for: G; Notes: xdot only, requires Graphviz >= 2.34.0, equivalent to specifying version of xdot to be used
XLabel Label | Valid for: EN; Default: ``StrLabel` ""`; Notes: requires Graphviz >= 2.29.0
XLP Point | Valid for: EN; Notes: write only, requires Graphviz >= 2.29.0
UnknownAttribute AttributeName Text | Valid for: Assumed valid for all; the fields are `Attribute` name and value respectively.

Instances

Eq Attribute |
Ord Attribute |
Read Attribute |
Show Attribute |
ParseDot Attribute |
PrintDot Attribute |

type Attributes = [Attribute]

sameAttribute :: Attribute -> Attribute -> Bool

Determine if two `Attributes` are the same type of `Attribute`.

defaultAttributeValue :: Attribute -> Maybe Attribute

Return the default value for a specific `Attribute` if possible; graphcluster values are preferred over nodeedge values.

rmUnwantedAttributes :: Attributes -> Attributes

Remove attributes that we don't want to consider:

- Those that are defaults
- colorscheme (as the colors embed it anyway)

## Validity functions on `Attribute` values.

usedByGraphs :: Attribute -> Bool

Determine if this `Attribute` is valid for use with Graphs.

usedBySubGraphs :: Attribute -> Bool

Determine if this `Attribute` is valid for use with SubGraphs.

usedByClusters :: Attribute -> Bool

Determine if this `Attribute` is valid for use with Clusters.

usedByNodes :: Attribute -> Bool

Determine if this `Attribute` is valid for use with Nodes.

usedByEdges :: Attribute -> Bool

Determine if this `Attribute` is valid for use with Edges.

validUnknown :: AttributeName -> Bool

Determine if the provided `Text` value is a valid name for an `UnknownAttribute`.

## Custom attributes.

type AttributeName = Text

The name for an UnknownAttribute; must satisfy `validUnknown`.

type CustomAttribute = Attribute

If performing any custom pre-/post-processing on Dot code, you may wish to utilise some custom `Attributes`. These are wrappers around the `UnknownAttribute` constructor (and thus `CustomAttribute` is just an alias for `Attribute`).

You should ensure that `validUnknown` is `True` for any potential custom attribute name.

customAttribute :: AttributeName -> Text -> CustomAttribute

Create a custom attribute.

isCustom :: Attribute -> Bool

Determines whether or not this is a custom attribute.

isSpecifiedCustom :: AttributeName -> Attribute -> Bool

customValue :: CustomAttribute -> Text

The value of a custom attribute. Will throw a `GraphvizException` if the provided `Attribute` isn't a custom one.

customName :: CustomAttribute -> AttributeName

The name of a custom attribute. Will throw a `GraphvizException` if the provided `Attribute` isn't a custom one.

findCustoms :: Attributes -> ([CustomAttribute], Attributes)

Returns all custom attributes and the list of non-custom Attributes.

findSpecifiedCustom :: AttributeName -> Attributes -> Maybe (CustomAttribute, Attributes)

Find the (first instance of the) specified custom attribute and returns it along with all other Attributes.

deleteCustomAttributes :: Attributes -> Attributes

Delete all custom attributes (actually, this will delete all `UnknownAttribute` values; as such it can also be used to remove legacy attributes).

deleteSpecifiedCustom :: AttributeName -> Attributes -> Attributes

Removes all instances of the specified custom attribute.

# Value types for `Attribute`s.

module Data.GraphViz.Attributes.Colors

## Generic types

data Number

A numeric type with an explicit separation between integers and floating-point values.

Constructors

Int Int |
Dbl Double |

Instances

Eq Number |
Ord Number |
Read Number |
Show Number |
ParseDot Number |
PrintDot Number |

## Labels

type EscString = Text

Some `Attribute`s (mainly label-like ones) take a `String` argument that allows for extra escape codes. This library doesn't do any extra checks or special parsing for these escape codes, but usage of `EscString` rather than `Text` indicates that the Graphviz tools will recognise these extra escape codes for these `Attribute`s.

The extra escape codes include (note that these are all Strings):

`\N`
  Replace with the name of the node (for Node `Attribute`s).
`\G`
  Replace with the name of the graph (for Node `Attribute`s) or the name of the graph or cluster, whichever is applicable (for Graph, Cluster and Edge `Attribute`s).
`\E`
  Replace with the name of the edge, formed by the two adjoining nodes and the edge type (for Edge `Attribute`s).
`\T`
  Replace with the name of the tail node (for Edge `Attribute`s).
`\H`
  Replace with the name of the head node (for Edge `Attribute`s).
`\L`
  Replace with the object's label (for all `Attribute`s).

Also, if the `Attribute` in question is `Label`, `HeadLabel` or `TailLabel`, then `\n`, `\l` and `\r` split the label into lines centered, left-justified and right-justified respectively.

data Label

Constructors

StrLabel EscString |
HtmlLabel Label | If `PlainText` is used, the `Label` value is the entire "shape"; if anything else except `PointShape` is used then the `Label` is embedded within the shape.
RecordLabel RecordFields | For nodes only; requires either `Record` or `MRecord` as the shape.

Instances

Eq Label |
Ord Label |
Read Label |
Show Label |
ParseDot Label |
PrintDot Label |

data VerticalPlacement

Constructors

VTop |
VCenter | Only valid for Nodes.
VBottom |

Instances

Bounded VerticalPlacement |
Enum VerticalPlacement |
Eq VerticalPlacement |
Ord VerticalPlacement |
Read VerticalPlacement |
Show VerticalPlacement |
ParseDot VerticalPlacement |
PrintDot VerticalPlacement |

data LabelScheme

How to treat a node whose name is of the form "`|edgelabel|*`" as a special node representing an edge label.

Constructors

NotEdgeLabel | No effect
CloseToCenter | Make node close to center of neighbor
CloseToOldCenter | Make node close to old center of neighbor
RemoveAndStraighten | Use a two-step process.

Instances

Bounded LabelScheme |
Enum LabelScheme |
Eq LabelScheme |
Ord LabelScheme |
Read LabelScheme |
Show LabelScheme |
ParseDot LabelScheme |
PrintDot LabelScheme |

data SVGFontNames

The mapping used for `FontName` values in SVG output.

More information can be found at http://www.graphviz.org/doc/fontfaq.txt.

Constructors

SvgNames | Use the legal generic SVG font names.
PostScriptNames | Use PostScript font names.
FontConfigNames | Use fontconfig font conventions.

Instances

Bounded SVGFontNames |
Enum SVGFontNames |
Eq SVGFontNames |
Ord SVGFontNames |
Read SVGFontNames |
Show SVGFontNames |
ParseDot SVGFontNames |
PrintDot SVGFontNames |

### Types representing the Dot grammar for records.

type RecordFields = [RecordField]

A RecordFields value should never be empty.

data RecordField

Specifies the sub-values of a record-based label. By default, the cells are laid out horizontally; use `FlipFields` to change the orientation of the fields (can be applied recursively). To change the default orientation, use `RankDir`.

Constructors

LabelledTarget PortName EscString |
PortName PortName | Will result in no label for that cell.
FieldLabel EscString |
FlipFields RecordFields |

Instances

Eq RecordField |
Ord RecordField |
Read RecordField |
Show RecordField |
ParseDot RecordField |
PrintDot RecordField |
Labellable RecordField |
Labellable RecordFields |

data Rect

Should only have 2D points (i.e. created with `createPoint`).

Constructors

Rect Point Point |

Instances

Eq Rect |
Ord Rect |
Read Rect |
Show Rect |
ParseDot Rect |
PrintDot Rect |

data Justification

Constructors

JLeft |
JRight |
JCenter |

Instances

Bounded Justification |
Enum Justification |
Eq Justification |
Ord Justification |
Read Justification |
Show Justification |
ParseDot Justification |
PrintDot Justification |

## Nodes

data Shape

Geometries of shapes are affected by the attributes `Regular`, `Peripheries` and `Orientation`.

Constructors

BoxShape | Has synonyms of rect and rectangle.
Polygon | Also affected by `Sides`, `Skew` and `Distortion`.
Ellipse | Has synonym of oval.
Circle |
PointShape | Only affected by `Peripheries`, `Width` and `Height`.
Egg |
Triangle |
PlainText | Has synonym of none. Recommended for `HtmlLabel`s.
DiamondShape |
Trapezium |
Parallelogram |
House |
Pentagon |
Hexagon |
Septagon |
Octagon |
DoubleCircle |
DoubleOctagon |
TripleOctagon |
InvTriangle |
InvTrapezium |
InvHouse |
MDiamond |
MSquare |
MCircle |
Square |
Star | Requires Graphviz >= 2.32.0.
Underline | Requires Graphviz >= 2.36.0.
Note |
Tab |
Folder |
Box3D |
Component |
Promoter | Requires Graphviz >= 2.30.0.
CDS | Requires Graphviz >= 2.30.0.
Terminator | Requires Graphviz >= 2.30.0.
UTR | Requires Graphviz >= 2.30.0.
PrimerSite | Requires Graphviz >= 2.30.0.
RestrictionSite | Requires Graphviz >= 2.30.0.
FivePovOverhang | Requires Graphviz >= 2.30.0.
ThreePovOverhang | Requires Graphviz >= 2.30.0.
NoOverhang | Requires Graphviz >= 2.30.0.
Assembly | Requires Graphviz >= 2.30.0.
Signature | Requires Graphviz >= 2.30.0.
Insulator | Requires Graphviz >= 2.30.0.
Ribosite | Requires Graphviz >= 2.30.0.
RNAStab | Requires Graphviz >= 2.30.0.
ProteaseSite | Requires Graphviz >= 2.30.0.
ProteinStab | Requires Graphviz >= 2.30.0.
RPromoter | Requires Graphviz >= 2.30.0.
RArrow | Requires Graphviz >= 2.30.0.
LArrow | Requires Graphviz >= 2.30.0.
LPromoter | Requires Graphviz >= 2.30.0.
Record | Must specify the record shape with a `Label`.
MRecord | Must specify the record shape with a `Label`.

Instances

Bounded Shape |
Enum Shape |
Eq Shape |
Ord Shape |
Read Shape |
Show Shape |
ParseDot Shape |
PrintDot Shape |

newtype Paths

A list of search paths.

Constructors

Paths |
Fields paths :: [FilePath]

Instances

Eq Paths |
Ord Paths |
Read Paths |
Show Paths |
ParseDot Paths |
PrintDot Paths |

data ScaleType

Constructors

UniformScale |
NoScale |
FillWidth |
FillHeight |
FillBoth |

Instances

Bounded ScaleType |
Enum ScaleType |
Eq ScaleType |
Ord ScaleType |
Read ScaleType |
Show ScaleType |
ParseDot ScaleType |
PrintDot ScaleType |

data NodeSize

Determine how the `Width` and `Height` attributes specify the size of nodes.

Constructors

GrowAsNeeded | Nodes will be the smallest width and height needed to contain the label and any possible image. `Width` and `Height` are the minimum allowed sizes.
SetNodeSize | `Width` and `Height` dictate the size of the node with a warning if the label cannot fit in this.
SetShapeSize | `Width` and `Height` dictate the size of the shape only and the label can expand out of the shape (with a warning). Requires Graphviz >= 2.38.0.

Instances

Bounded NodeSize |
Enum NodeSize |
Eq NodeSize |
Ord NodeSize |
Read NodeSize |
Show NodeSize |
ParseDot NodeSize |
PrintDot NodeSize |

## Edges

data DirType

Specify where to place arrow heads on an edge.

Constructors

Forward | Draw a directed edge with an arrow to the node it's pointing go.
Back | Draw a reverse directed edge with an arrow to the node it's coming from.
Both | Draw arrows on both ends of the edge.
NoDir | Draw an undirected edge.

Instances

Bounded DirType |
Enum DirType |
Eq DirType |
Ord DirType |
Read DirType |
Show DirType |
ParseDot DirType |
PrintDot DirType |

data EdgeType

Controls how (and if) edges are represented.

For `Dot`, the default is `SplineEdges`; for all other layouts the default is `LineEdges`.

Constructors

SplineEdges | Except for `Dot`, requires non-overlapping nodes (see `Overlap`).
LineEdges |
NoEdges |
PolyLine |
Ortho | Does not handle ports or edge labels in `Dot`.
Curved | Requires Graphviz >= 2.30.0.
CompoundEdge | `Fdp` only

Instances

Bounded EdgeType |
Enum EdgeType |
Eq EdgeType |
Ord EdgeType |
Read EdgeType |
Show EdgeType |
ParseDot EdgeType |
PrintDot EdgeType |

### Modifying where edges point

newtype PortName

Specifies a name for ports (used also in record-based and HTML-like labels). Note that it is not valid for a `PortName` value to contain a colon (`:`) character; it is assumed that it doesn't.

Constructors

PN |
Fields portName :: Text

Instances

Eq PortName |
Ord PortName |
Read PortName |
Show PortName |
ParseDot PortName |
PrintDot PortName |
Labellable PortName | A shorter variant than using `PortName` from `RecordField`.
Labellable (PortName, EscString) | A shorter variant than using `LabelledTarget`.

data PortPos

Constructors

LabelledPort PortName (Maybe CompassPoint) |
CompassPoint CompassPoint |

Instances

Eq PortPos |
Ord PortPos |
Read PortPos |
Show PortPos |
ParseDot PortPos |
PrintDot PortPos |

data CompassPoint

Constructors

North |
NorthEast |
East |
SouthEast |
South |
SouthWest |
West |
NorthWest |
CenterPoint |
NoCP |

Instances

Bounded CompassPoint |
Enum CompassPoint |
Eq CompassPoint |
Ord CompassPoint |
Read CompassPoint |
Show CompassPoint |
ParseDot CompassPoint |
PrintDot CompassPoint |

### Arrows

newtype ArrowType

Dot has a basic grammar of arrow shapes which allows usage of up to 1,544,761 different shapes from 9 different basic `ArrowShape`s. Note that whilst an explicit list is used in the definition of `ArrowType`, there must be at least one tuple and a maximum of 4 (since that is what is required by Dot). For more information, see: http://graphviz.org/doc/info/arrows.html

The 19 basic arrows shown on the overall attributes page have been defined below as a convenience. Parsing of the 5 backward-compatible special cases is also supported.

Constructors

AType [(ArrowModifier, ArrowShape)] |

Instances

Eq ArrowType |
Ord ArrowType |
Read ArrowType |
Show ArrowType |
ParseDot ArrowType |
PrintDot ArrowType |

data ArrowShape

Constructors

Box |
Crow |
Diamond |
DotArrow |
Inv |
NoArrow |
Normal |
Tee |
Vee |

Instances

Bounded ArrowShape |
Enum ArrowShape |
Eq ArrowShape |
Ord ArrowShape |
Read ArrowShape |
Show ArrowShape |
ParseDot ArrowShape |
PrintDot ArrowShape |

data ArrowModifier

What modifications to apply to an `ArrowShape`.

Constructors

ArrMod |
Fields arrowFill :: ArrowFill arrowSide :: ArrowSide

Instances

Eq ArrowModifier |
Ord ArrowModifier |
Read ArrowModifier |
Show ArrowModifier |
ParseDot ArrowModifier |
PrintDot ArrowModifier |

data ArrowFill

Constructors

OpenArrow |
FilledArrow |

Instances

Bounded ArrowFill |
Enum ArrowFill |
Eq ArrowFill |
Ord ArrowFill |
Read ArrowFill |
Show ArrowFill |
ParseDot ArrowFill |
PrintDot ArrowFill |

data ArrowSide

Represents which side (when looking towards the node the arrow is pointing to) is drawn.

Constructors

LeftSide |
RightSide |
BothSides |

Instances

Bounded ArrowSide |
Enum ArrowSide |
Eq ArrowSide |
Ord ArrowSide |
Read ArrowSide |
Show ArrowSide |
ParseDot ArrowSide |
PrintDot ArrowSide |

#### `ArrowModifier` values

noMods :: ArrowModifier

Apply no modifications to an `ArrowShape`.

openMod :: ArrowModifier

`OpenArrow` and `BothSides`

## Positioning

data Point

Constructors

Point |
Fields xCoord :: Double yCoord :: Double zCoord :: Maybe Double Can only be `Just` for ``Dim` 3` or greater. forcePos :: Bool Input to Graphviz only: specify that the node position should not change.

Instances

Eq Point |
Ord Point |
Read Point |
Show Point |
ParseDot Point |
PrintDot Point |

createPoint :: Double -> Double -> Point

Create a point with only `x` and `y` values.

data Pos

Constructors

PointPos Point |
SplinePos [Spline] |

Instances

Eq Pos |
Ord Pos |
Read Pos |
Show Pos |
ParseDot Pos |
PrintDot Pos |

data Spline

The number of points in the list must be equivalent to 1 mod 3; note that this is not checked.

Constructors

Spline |
Fields endPoint :: Maybe Point startPoint :: Maybe Point splinePoints :: [Point]

Instances

Eq Spline |
Ord Spline |
Read Spline |
Show Spline |
ParseDot Spline |
PrintDot Spline |

data DPoint

Either a `Double` or a (2D) `Point` (i.e. created with `createPoint`).

Whilst it is possible to create a `Point` value with either a third co-ordinate or a forced position, these are ignored for printing/parsing.

An optional prefix of `'+'` is allowed when parsing.

Constructors

DVal Double |
PVal Point |

Instances

Eq DPoint |
Ord DPoint |
Read DPoint |
Show DPoint |
ParseDot DPoint |
PrintDot DPoint |

data Normalized

If set, normalizes coordinates such that the first point is at the origin and the first edge is at the angle if specified.

Constructors

IsNormalized | Equivalent to ``NormalizedAngle` 0`.
NotNormalized |
NormalizedAngle Double | Angle of first edge when normalized. Requires Graphviz >= 2.32.0.

Instances

Eq Normalized |
Ord Normalized |
Read Normalized |
Show Normalized |
ParseDot Normalized |
PrintDot Normalized |

## Layout

data GraphvizCommand

The available Graphviz commands. The following directions are based upon those in the Graphviz man page (available online at http://graphviz.org/pdf/dot.1.pdf, or if installed on your system `man graphviz`). Note that any command can be used on both directed and undirected graphs.

When used with the `Layout` attribute, it overrides any actual command called on the dot graph.

Constructors

Dot | For hierachical graphs (ideal for directed graphs).
Neato | For symmetric layouts of graphs (ideal for undirected graphs).
TwoPi | For radial layout of graphs.
Circo | For circular layout of graphs.
Fdp | Spring-model approach for undirected graphs.
Sfdp | As with Fdp, but ideal for large graphs.
Osage | Filter for drawing clustered graphs, requires Graphviz >= 2.28.0.
Patchwork | Draw clustered graphs as treemaps, requires Graphviz >= 2.28.0.

Instances

Bounded GraphvizCommand |
Enum GraphvizCommand |
Eq GraphvizCommand |
Ord GraphvizCommand |
Read GraphvizCommand |
Show GraphvizCommand |
ParseDot GraphvizCommand |
PrintDot GraphvizCommand |

data GraphSize

Maximum width and height of drawing in inches.

Constructors

GSize |
Fields width :: Double height :: Maybe Double If `Nothing`, then the height is the same as the width. desiredSize :: Bool If drawing is smaller than specified size, this value determines whether it is scaled up.

Instances

Eq GraphSize |
Ord GraphSize |
Read GraphSize |
Show GraphSize |
ParseDot GraphSize |
PrintDot GraphSize |

data ClusterMode

If `Local`, then sub-graphs that are clusters are given special treatment. `Global` and `NoCluster` currently appear to be identical and turn off the special cluster processing.

Constructors

Local |
Global |
NoCluster |

Instances

Bounded ClusterMode |
Enum ClusterMode |
Eq ClusterMode |
Ord ClusterMode |
Read ClusterMode |
Show ClusterMode |
ParseDot ClusterMode |
PrintDot ClusterMode |

data Model

Constructors

ShortPath |
SubSet |
Circuit |
MDS |

Instances

Bounded Model |
Enum Model |
Eq Model |
Ord Model |
Read Model |
Show Model |
ParseDot Model |
PrintDot Model |

data Overlap

How to deal with node overlaps.

Defaults to `KeepOverlaps` except for `Fdp` and `Sfdp`.

The ability to specify the number of tries for `Fdp'`s initial force-directed technique is not supported (by default, `Fdp` uses `9` passes of its in-built technique, and then ``PrismOverlap` Nothing`).

For `Sfdp`, the default is ``PrismOverlap` (Just 0)`.

Constructors

KeepOverlaps |
ScaleOverlaps | Remove overlaps by uniformly scaling in x and y.
ScaleXYOverlaps | Remove overlaps by separately scaling x and y.
PrismOverlap (Maybe Word16) | Requires the Prism library to be available (if not, this is equivalent to `VoronoiOverlap`). ``Nothing`` is equivalent to ``Just` 1000`. Influenced by `OverlapScaling`.
VoronoiOverlap | Requires Graphviz >= 2.30.0.
CompressOverlap | Scale layout down as much as possible without introducing overlaps, assuming none to begin with.
VpscOverlap | Uses quadratic optimization to minimize node displacement.
IpsepOverlap | Only when `mode == `IpSep``

Instances

Eq Overlap |
Ord Overlap |
Read Overlap |
Show Overlap |
ParseDot Overlap | Note that `overlap=false` defaults to ``PrismOverlap` Nothing`, but if the Prism library isn't available then it is equivalent to `VoronoiOverlap`.
PrintDot Overlap |

data Root

Specify the root node either as a Node attribute or a Graph attribute.

Constructors

IsCentral | For Nodes only
NotCentral | For Nodes only
NodeName Text | For Graphs only

Instances

Eq Root |
Ord Root |
Read Root |
Show Root |
ParseDot Root |
PrintDot Root |

data Order

Constructors

OutEdges | Draw outgoing edges in order specified.
InEdges | Draw incoming edges in order specified.

Instances

Bounded Order |
Enum Order |
Eq Order |
Ord Order |
Read Order |
Show Order |
ParseDot Order |
PrintDot Order |

data OutputMode

Constructors

BreadthFirst |
NodesFirst |
EdgesFirst |

Instances

Bounded OutputMode |
Enum OutputMode |
Eq OutputMode |
Ord OutputMode |
Read OutputMode |
Show OutputMode |
ParseDot OutputMode |
PrintDot OutputMode |

data Pack

Constructors

DoPack |
DontPack |
PackMargin Int | If non-negative, then packs; otherwise doesn't.

Instances

Eq Pack |
Ord Pack |
Read Pack |
Show Pack |
ParseDot Pack |
PrintDot Pack |

data PackMode

Constructors

PackNode |
PackClust |
PackGraph |
PackArray Bool Bool (Maybe Int) | Sort by cols, sort by user, number of rows/cols

Instances

Eq PackMode |
Ord PackMode |
Read PackMode |
Show PackMode |
ParseDot PackMode |
PrintDot PackMode |

data PageDir

Upper-case first character is major order; lower-case second character is minor order.

Constructors

Bl |
Br |
Tl |
Tr |
Rb |
Rt |
Lb |
Lt |

Instances

Bounded PageDir |
Enum PageDir |
Eq PageDir |
Ord PageDir |
Read PageDir |
Show PageDir |
ParseDot PageDir |
PrintDot PageDir |

data QuadType

Constructors

NormalQT |
FastQT |
NoQT |

Instances

Bounded QuadType |
Enum QuadType |
Eq QuadType |
Ord QuadType |
Read QuadType |
Show QuadType |
ParseDot QuadType |
PrintDot QuadType |

data RankType

Constructors

SameRank |
MinRank |
SourceRank |
MaxRank |
SinkRank |

Instances

Bounded RankType |
Enum RankType |
Eq RankType |
Ord RankType |
Read RankType |
Show RankType |
ParseDot RankType |
PrintDot RankType |

data RankDir

Constructors

FromTop |
FromLeft |
FromBottom |
FromRight |

Instances

Bounded RankDir |
Enum RankDir |
Eq RankDir |
Ord RankDir |
Read RankDir |
Show RankDir |
ParseDot RankDir |
PrintDot RankDir |

data StartType

Constructors

StartStyle STStyle |
StartSeed Int |
StartStyleSeed STStyle Int |

Instances

Eq StartType |
Ord StartType |
Read StartType |
Show StartType |
ParseDot StartType |
PrintDot StartType |

data ViewPort

Constructors

VP |
Fields wVal :: Double hVal :: Double zVal :: Double focus :: Maybe FocusType

Instances

Eq ViewPort |
Ord ViewPort |
Read ViewPort |
Show ViewPort |
ParseDot ViewPort |
PrintDot ViewPort |

data FocusType

For use with `ViewPort`.

Constructors

XY Point |
NodeFocus Text |

Instances

Eq FocusType |
Ord FocusType |
Read FocusType |
Show FocusType |
ParseDot FocusType |
PrintDot FocusType |

data Ratios

Constructors

AspectRatio Double |
FillRatio |
CompressRatio |
ExpandRatio |
AutoRatio |

Instances

Eq Ratios |
Ord Ratios |
Read Ratios |
Show Ratios |
ParseDot Ratios |
PrintDot Ratios |

## Modes

data ModeType

For `Neato` unless indicated otherwise.

Constructors

Major |
KK |
Hier |
IpSep |
SpringMode | For `Sfdp`, requires Graphviz >= 2.32.0.
MaxEnt | For `Sfdp`, requires Graphviz >= 2.32.0.

Instances

Bounded ModeType |
Enum ModeType |
Eq ModeType |
Ord ModeType |
Read ModeType |
Show ModeType |
ParseDot ModeType |
PrintDot ModeType |

data DEConstraints

Only when `mode == `IpSep``.

Constructors

EdgeConstraints |
NoConstraints |
HierConstraints |

Instances

Bounded DEConstraints |
Enum DEConstraints |
Eq DEConstraints |
Ord DEConstraints |
Read DEConstraints |
Show DEConstraints |
ParseDot DEConstraints |
PrintDot DEConstraints |

## Layers

newtype LayerSep

Constructors

LSep Text |

Instances

Eq LayerSep |
Ord LayerSep |
Read LayerSep |
Show LayerSep |
ParseDot LayerSep |
PrintDot LayerSep |

newtype LayerListSep

Constructors

LLSep Text |

Instances

Eq LayerListSep |
Ord LayerListSep |
Read LayerListSep |
Show LayerListSep |
ParseDot LayerListSep |
PrintDot LayerListSep |

type LayerRange = [LayerRangeElem]

data LayerRangeElem

Constructors

LRID LayerID |
LRS LayerID LayerID |

Instances

Eq LayerRangeElem |
Ord LayerRangeElem |
Read LayerRangeElem |
Show LayerRangeElem |
ParseDot LayerRangeElem |
PrintDot LayerRangeElem |

data LayerID

You should not have any layer separator characters for the `LRName` option, as they won't be parseable.

Constructors

AllLayers |
LRInt Int |
LRName Text | Should not be a number or `"all"`.

Instances

Eq LayerID |
Ord LayerID |
Read LayerID |
Show LayerID |
ParseDot LayerID |
PrintDot LayerID |

newtype LayerList

A list of layer names. The names should all be unique `LRName` values, and when printed will use an arbitrary character from `defLayerSep`. The values in the list are implicitly numbered `1, 2, ...`.

Constructors

LL [LayerID] |

Instances

Eq LayerList |
Ord LayerList |
Read LayerList |
Show LayerList |
ParseDot LayerList |
PrintDot LayerList |

## Stylistic

data SmoothType

Constructors

NoSmooth |
AvgDist |
GraphDist |
PowerDist |
RNG |
Spring |
TriangleSmooth |

Instances

Bounded SmoothType |
Enum SmoothType |
Eq SmoothType |
Ord SmoothType |
Read SmoothType |
Show SmoothType |
ParseDot SmoothType |
PrintDot SmoothType |

data STStyle

Constructors

RegularStyle |
SelfStyle |
RandomStyle |

Instances

Bounded STStyle |
Enum STStyle |
Eq STStyle |
Ord STStyle |
Read STStyle |
Show STStyle |
ParseDot STStyle |
PrintDot STStyle |

data StyleItem

An individual style item. Except for `DD`, the `[`String`]` should be empty.

Constructors

SItem StyleName [Text] |

Instances

Eq StyleItem |
Ord StyleItem |
Read StyleItem |
Show StyleItem |
ParseDot StyleItem |
PrintDot StyleItem |

data StyleName

Constructors

Dashed | Nodes and Edges
Dotted | Nodes and Edges
Solid | Nodes and Edges
Bold | Nodes and Edges
Invisible | Nodes and Edges
Filled | Nodes and Clusters
Striped | Rectangularly-shaped Nodes and Clusters; requires Graphviz >= 2.30.0
Wedged | Elliptically-shaped Nodes only; requires Graphviz >= 2.30.0
Diagonals | Nodes only
Rounded | Nodes and Clusters
Tapered | Edges only; requires Graphviz >= 2.29.0
Radial | Nodes, Clusters and Graphs, for use with `GradientAngle`; requires Graphviz >= 2.29.0
DD Text | Device Dependent

Instances

Eq StyleName |
Ord StyleName |
Read StyleName |
Show StyleName |
ParseDot StyleName |
PrintDot StyleName |