Page
Library
Module
Module type
Parameter
Class
Class type
Source
Notty.ISourceI is for image.
Construction and composition of images.
Consult the basics for an overview.
equal t1 t2 is true iff t1 and t2 are constructed by the same term.
Note This is a weak form of equality. Images that are not equal could still render the same.
string attr s is an image containing text s, styled with attr.
uchars attr us is an image containing text us, styled with attr.
void w h is a w * h rectangle of transparent cells.
void is magical: it has geometry, but no displayable content. This is different, for example, from the space character U+0020, which renders as a cell filled with the background color. This means that void interacts specially with overlays.
void 0 0 = empty. void with only one dimension 0 acts as a spacing element in the other dimension. Negative size is treated as 0.
Three basic composition modes allow construction of more complex images from simpler ones.
Composition operators are left-associative and form a monoid with void.
i1 <-> i2 is the vertical combination of i1 and i2.
width (i1 <-> i2) = max (width i1) (width i2) height (i1 <-> i2) = height i1 + height i2
Images are left-aligned. The missing region is implicitly filled with void.
[xx] <-> [y] = [xx]
[y.]i1 </> i2 is i1 overlaid over i2.
width (i1 </> i2) = max (width i1) (width i2) height (i1 </> i2) = max (height i1) (height i2)
Images are top-left-aligned. In the region of their overlap, only the void cells of i1 show fragments of i2.
[x.x] </> [yyyy] = [xyxy]
hcrop left right i is i with left leftmost, and right rightmost columns missing. If left + right >= width i the result is empty.
If either left or right is negative, instead of being cropped, the image is padded on that side.
For example:
hcrop 0 1 [abc] = [ab]hcrop 1 1 [abc] = [b]hcrop (-1) 1 [abc] = void 1 1 <|> hcrop 0 1 [abc] = [.ab]hcrop 2 2 [abc] = emptycrop ~l:left ~r:right ~t:top ~b:bottom i is vcrop left right (hcrop top bottom) i.
Missing arguments default to 0.
tabulate m n f is the grid of values f x y with x = 0..m-1 and y = 0..n-1, where x grows to the right, and y growns down.
f a y is to the left of f b y if a < b, and f x a is above f x b if a < b, but the exact alignment is unspecified if the various f x y have different dimensions.
hsnap ~align w i is an image of width strictly w obtained by either horizontally padding or cropping i and positioning it according to ~align.
~align defaults to `Middle.
vsnap ~align h i is an image of height strictly h obtained by either vertically padding or cropping i and positioning it according to ~align.
~align defaults to `Middle.
Format interoperabilitystrf ?attr ?w:width format ... pretty-prints like Format.asprintf format ..., but returns an image.
attr is the (outermost) attribute. Defaults to A.empty.
width is used to set the margin on the formatter. This is only a hint, and does not guarantee the width of the result. Consult Format.set_margin for details. Defaults to an unspecified, large number.
val kstrf :
?attr:attr ->
?w:int ->
(image -> 'a) ->
('b, Format.formatter, unit, 'a) format4 ->
'bkstrf ?attr ?w k format ... is continuation-based strf ?attr ?w format ....
pp_attr a f is a pretty-printer like f, except its output is styled with a. This applies only outside of any styling f itself might embed.