Safe Haskell | None |
---|---|
Language | Haskell2010 |
A picture is translated into a sequences of state changes and character spans. The attribute is applied to all following spans, including spans of the next row. The nth element of the sequence represents the nth row (from top to bottom) of the picture to render.
A span op sequence will be defined for all rows and columns (and no
more) of the region provided with the picture to spansForPic
.
Synopsis
- data SpanOp
- type SpanOps = Vector SpanOp
- dropOps :: Int -> SpanOps -> SpanOps
- splitOpsAt :: Int -> SpanOps -> (SpanOps, SpanOps)
- type DisplayOps = Vector SpanOps
- displayOpsColumns :: DisplayOps -> Int
- displayOpsRows :: DisplayOps -> Int
- affectedRegion :: DisplayOps -> DisplayRegion
- spanOpsAffectedColumns :: SpanOps -> Int
- spanOpHasWidth :: SpanOp -> Maybe (Int, Int)
- columnsToCharOffset :: Int -> SpanOp -> Int
Documentation
This represents an operation on the terminal: either an attribute change or the output of a text string.
TextSpan | A span of UTF-8 text occupies a specific number of screen space columns. A single UTF character does not necessarily represent 1 colunm. See Codec.Binary.UTF8.Width TextSpan [Attr] [output width in columns] [number of characters] [data] |
| |
Skip !Int | Skips the given number of columns. |
RowEnd !Int | Marks the end of a row. Specifies how many columns are remaining. These columns will not be explicitly overwritten with the span ops. The terminal is require to assure the remaining columns are clear. |
type SpanOps = Vector SpanOp Source #
A vector of span operations executed in succession. This represents the operations required to render a row of the terminal. The operations in one row may affect subsequent rows. For example, setting the foreground color in one row will affect all subsequent rows until the foreground color is changed.
type DisplayOps = Vector SpanOps Source #
A vector of span operation vectors for display, one per row of the output region.
displayOpsColumns :: DisplayOps -> Int Source #
The number of columns the DisplayOps are defined for.
All spans are verified to define same number of columns.
displayOpsRows :: DisplayOps -> Int Source #
The number of rows the DisplayOps are defined for.
spanOpsAffectedColumns :: SpanOps -> Int Source #
The number of columns a SpanOps affects.