vty-5.4.0: A simple terminal UI library

Safe Haskell | None
Language | Haskell2010

Graphics.Vty.DisplayAttributes

Synopsis

- fixDisplayAttr :: FixedAttr -> Attr -> FixedAttr
- data DisplayAttrDiff = DisplayAttrDiff {
  - styleDiffs :: [StyleStateChange]
  - foreColorDiff :: DisplayColorDiff
  - backColorDiff :: DisplayColorDiff
  }
- simplifyStyleDiffs :: [StyleStateChange] -> [StyleStateChange] -> [StyleStateChange]
- simplifyColorDiffs :: DisplayColorDiff -> DisplayColorDiff -> DisplayColorDiff
- data DisplayColorDiff
  - = ColorToDefault
  - | NoColorChange
  - | SetColor !Color
- data StyleStateChange
  - = ApplyStandout
  - | RemoveStandout
  - | ApplyUnderline
  - | RemoveUnderline
  - | ApplyReverseVideo
  - | RemoveReverseVideo
  - | ApplyBlink
  - | RemoveBlink
  - | ApplyDim
  - | RemoveDim
  - | ApplyBold
  - | RemoveBold
- displayAttrDiffs :: FixedAttr -> FixedAttr -> DisplayAttrDiff
- diffColor :: Maybe Color -> Maybe Color -> DisplayColorDiff
- diffStyles :: Style -> Style -> [StyleStateChange]

# Documentation

fixDisplayAttr :: FixedAttr -> Attr -> FixedAttr Source

Given the previously applied display attributes as a FixedAttr and the current display attributes as an Attr produces a FixedAttr that represents the current display attributes. This is done by using the previously applied display attributes to remove the KeepCurrent abstraction.

data DisplayAttrDiff Source

difference between two display attributes. Used in the calculation of the operations required to go from one display attribute to the next.

Previously, vty would reset display attributes to default then apply the new display attributes. This turned out to be very expensive: A *lot* more data would be sent to the terminal than required.

Constructors

DisplayAttrDiff |

Fields

styleDiffs :: [StyleStateChange]
foreColorDiff :: DisplayColorDiff
backColorDiff :: DisplayColorDiff

Instances

Show DisplayAttrDiff Source |
Monoid DisplayAttrDiff Source |

simplifyStyleDiffs :: [StyleStateChange] -> [StyleStateChange] -> [StyleStateChange] Source

Used in the computation of a final style attribute change.

TODO(corey): not really a simplify but a monoid instance.

simplifyColorDiffs :: DisplayColorDiff -> DisplayColorDiff -> DisplayColorDiff Source

Consider two display color attributes diffs. What display color attribute diff are these equivalent to?

TODO(corey): not really a simplify but a monoid instance.

data DisplayColorDiff Source

Difference between two display color attribute changes.

Constructors

ColorToDefault |
NoColorChange |
SetColor !Color |

Instances

Eq DisplayColorDiff Source |
Show DisplayColorDiff Source |

data StyleStateChange Source

Style attribute changes are transformed into a sequence of apply/removes of the individual attributes.

Constructors

ApplyStandout |
RemoveStandout |
ApplyUnderline |
RemoveUnderline |
ApplyReverseVideo |
RemoveReverseVideo |
ApplyBlink |
RemoveBlink |
ApplyDim |
RemoveDim |
ApplyBold |
RemoveBold |

Instances

Eq StyleStateChange Source |
Show StyleStateChange Source |

displayAttrDiffs :: FixedAttr -> FixedAttr -> DisplayAttrDiff Source

Determines the diff between two display&color attributes. This diff determines the operations that actually get output to the terminal.

diffColor :: Maybe Color -> Maybe Color -> DisplayColorDiff Source

diffStyles :: Style -> Style -> [StyleStateChange] Source