Files
klammertext/sks/image/image.k
T

109 lines
4.3 KiB
Plaintext

#[
@@@state image_search_path.list :create Series of directories for image search
:value . imgsrc ../imgsrc ../dbg
@@@
]#
@@@state Image_search_path :desc Directories searched for an image's file, relative to the document
:value . imgsrc ../imgsrc
@@@
@@@state Image_output_dir :desc Output directory for images :value img @@@
@@@state Image_txt_style
:desc How an image is drawn in characters under txt and ansi:
halfblock (two pixels per cell in full colour under ansi -- the
nearest to the raster, and the default; under txt a solid
block, since its picture is only its colours), shade (block
shades, coloured tiles under ansi), ascii (a density ramp of
typewriter characters), quadrant (four sub-pixels per cell, two
colours per cell under ansi), braille (eight dots per cell).
:value halfblock
@@@
@@@state Image_ansi_colors
:desc Under ansi, the colours an image is drawn with. true (the
default) emits each cell's exact 24-bit colour, and how
faithfully the picture appears then depends on the terminal
supporting true colour: most do (GNOME Terminal, iTerm2,
Ghostty, kitty, WezTerm); one that does not (Apple's
Terminal) rounds every colour to its nearest of 256 fixed
ones, and runs of similar cells become one blotch. 256 is
for such a terminal: the picture is first dithered to that
256-colour palette, so the rounding error is spread over
neighbouring cells instead. A true-colour terminal shows the
exact picture and needs no setting.
:value true @@@
@@@state Image_txt_dark_background
:desc Under txt and ansi, the density ramp assumes a dark terminal
background (true): bright pixels are the dense characters.
false reverses it for a light background.
:value true
@@@
@@@state Image_default_width :desc Default width for images :value .667w @@@
@@@state Image_quality
:desc JPEG quality, 1 to 100, at which a photograph -- a raster with
no transparency, whether it arrives as JPEG, PNG or TIFF -- is
written to the image cache for the html and pdf targets. The
default keeps print quality at a fraction of the size; 100 copies
or converts the source unchanged, as before 2026-09-09.
:value 85
@@@
#
# @@@argtype pixels | a pixel count :pattern \d+px @@@
# @@image.k basename : Image read from a file @@
# @@image.html basename | width | height : @eval import image ; result = image.image(K) eval@ @@
# An image once had its own position type, for the sake of the "none" value
# (no positioning container). That value is meaningful for any block
# element, so the shared hpos type carries it and an image is placed by the
# hpos_args option set like every other block element.
@@image.k
basename
:id
:width.width .5w
@caption_args@
:vmargin.bool true
@hpos_args@
:rel
:abswidth.number 0.0
:border.bool false
:
An image read from a file. The basename names the file, which is looked
for in the image search path and converted to a format the target can use.
^:width is the image's width in the text column, ^:hpos and ^:offset place
it there, and the caption arguments caption it. Under txt and ansi the
image is drawn in characters (the Image_txt_style state variable:
halfblock, the default, or shade, ascii, quadrant, braille), and ansi
colours them; the
measure is the terminal's width
less a small margin when ktext runs in one, else the text width, and
^:width applies to that (a fraction, a number of columns, or f for all of
it). The Image_txt_dark_background state variable (true) reverses the
ramp for a light terminal.
@@
@@image.html,tex,txt :: @eval image.Image(K) eval@ @@
@@image_grid.k
image_specs.rest(2)
:cell_number.bool false
:landscape.bool false
:scale.number 0.98
@caption_args@
@hpos_args@
:thumbnail.bool false
:allow_break.bool true
:id
:rel
:hsep.number 0.02
: A grid of images
@@
@@image_grid.html,tex :: @eval image_grid.Image_grid(K) eval@ @@
@@fig.k spec.figure_id : The caption title for a figure @@
@@fig.html,tex :: @reference *spec* | Figure @ @@