ChafaCanvas

ChafaCanvas — A canvas that renders to text

Functions

Types and Values

typedef ChafaCanvas

Description

A ChafaCanvas is a canvas that can render its contents as text strings.

To create a new ChafaCanvas, use chafa_canvas_new(). If you want to specify any parameters, like the geometry, color space and so on, you must create a ChafaCanvasConfig first.

You can draw an image to the canvas using chafa_canvas_draw_all_pixels() and create an ANSI text (or sixel) representation of the canvas' current contents using chafa_canvas_build_ansi().

Functions

chafa_canvas_new ()

ChafaCanvas *
chafa_canvas_new (const ChafaCanvasConfig *config);

Creates a new canvas with the specified configuration. The canvas makes a private copy of the configuration, so it will not be affected by subsequent changes.

Parameters

config

Configuration to use or NULL for hardcoded defaults

 

Returns

The new canvas


chafa_canvas_new_similar ()

ChafaCanvas *
chafa_canvas_new_similar (ChafaCanvas *orig);

Creates a new canvas configured similarly to orig .

Parameters

orig

Canvas to copy configuration from

 

Returns

The new canvas


chafa_canvas_ref ()

void
chafa_canvas_ref (ChafaCanvas *canvas);

Adds a reference to canvas .

Parameters

canvas

Canvas to add a reference to

 

chafa_canvas_unref ()

void
chafa_canvas_unref (ChafaCanvas *canvas);

Removes a reference from canvas . When remaining references drops to zero, the canvas is freed and can no longer be used.

Parameters

canvas

Canvas to remove a reference from

 

chafa_canvas_peek_config ()

const ChafaCanvasConfig *
chafa_canvas_peek_config (ChafaCanvas *canvas);

Returns a pointer to the configuration belonging to canvas . This can be inspected using the ChafaCanvasConfig getter functions, but not changed.

Parameters

canvas

Canvas whose configuration to inspect

 

Returns

A pointer to the canvas' immutable configuration


chafa_canvas_set_placement ()

void
chafa_canvas_set_placement (ChafaCanvas *canvas,
                            ChafaPlacement *placement);

Places placement on canvas , replacing the latter's content. The placement will cover the entire canvas.

The canvas will keep a reference to the placement until it is replaced or the canvas itself is freed.

Parameters

canvas

Canvas to place the placement on

 

placement

Placement to place

 

Since: 1.14


chafa_canvas_draw_all_pixels ()

void
chafa_canvas_draw_all_pixels (ChafaCanvas *canvas,
                              ChafaPixelType src_pixel_type,
                              const guint8 *src_pixels,
                              gint src_width,
                              gint src_height,
                              gint src_rowstride);

Replaces pixel data of canvas with a copy of that found at src_pixels , which must be in one of the formats supported by ChafaPixelType.

Parameters

canvas

Canvas whose pixel data to replace

 

src_pixel_type

Pixel format of src_pixels

 

src_pixels

Pointer to the start of source pixel memory

 

src_width

Width in pixels of source pixel data

 

src_height

Height in pixels of source pixel data

 

src_rowstride

Number of bytes between the start of each pixel row

 

Since: 1.2


chafa_canvas_print ()

GString *
chafa_canvas_print (ChafaCanvas *canvas,
                    ChafaTermInfo *term_info);

Builds a UTF-8 string of terminal control sequences and symbols representing the canvas' current contents. This can be printed to a terminal. The exact choice of escape sequences and symbols, dimensions, etc. is determined by the configuration assigned to canvas on its creation.

All output lines except for the last one will end in a newline.

Parameters

canvas

The canvas to generate a printable representation of

 

term_info

Terminal to format for, or NULL for fallback

 

Returns

A UTF-8 string of terminal control sequences and symbols

Since: 1.6


chafa_canvas_print_rows ()

void
chafa_canvas_print_rows (ChafaCanvas *canvas,
                         ChafaTermInfo *term_info,
                         GString ***array_out,
                         gint *array_len_out);

Builds an array of UTF-8 strings made up of terminal control sequences and symbols representing the canvas' current contents. These can be printed to a terminal. The exact choice of escape sequences and symbols, dimensions, etc. is determined by the configuration assigned to canvas on its creation.

The array will be NULL-terminated. The element count does not include the terminator.

When the canvas' pixel mode is CHAFA_PIXEL_MODE_SYMBOLS, each element will hold the contents of exactly one symbol row. There will be no row separators, newlines or control sequences to reposition the cursor between rows. Row positioning is left to the caller.

In other pixel modes, there may be one or more strings, but the splitting criteria should not be relied on. They must be printed in sequence, exactly as they appear.

Parameters

canvas

The canvas to generate a printable representation of

 

term_info

Terminal to format for, or NULL for fallback

 

array_out

Pointer to storage for resulting array pointer

 

array_len_out

Pointer to storage for array's element count, or NULL

 

Since: 1.14


chafa_canvas_print_rows_strv ()

gchar **
chafa_canvas_print_rows_strv (ChafaCanvas *canvas,
                              ChafaTermInfo *term_info);

Builds an array of UTF-8 strings made up of terminal control sequences and symbols representing the canvas' current contents. These can be printed to a terminal. The exact choice of escape sequences and symbols, dimensions, etc. is determined by the configuration assigned to canvas on its creation.

The array will be NULL-terminated and can be freed with g_strfreev().

When the canvas' pixel mode is CHAFA_PIXEL_MODE_SYMBOLS, each element will hold the contents of exactly one symbol row. There will be no row separators, newlines or control sequences to reposition the cursor between rows. Row positioning is left to the caller.

In other pixel modes, there may be one or more strings, but the splitting criteria should not be relied on. They must be printed in sequence, exactly as they appear.

Parameters

canvas

The canvas to generate a printable representation of

 

term_info

Terminal to format for, or NULL for fallback

 

Returns

A NULL-terminated array of string pointers

Since: 1.14


chafa_canvas_get_char_at ()

gunichar
chafa_canvas_get_char_at (ChafaCanvas *canvas,
                          gint x,
                          gint y);

Returns the character at cell (x, y). The coordinates are zero-indexed. For double-width characters, the leftmost cell will contain the character and the rightmost cell will contain 0.

Parameters

canvas

The canvas to inspect

 

x

Column of character cell to inspect

 

y

Row of character cell to inspect

 

Returns

The character at (x, y)

Since: 1.8


chafa_canvas_set_char_at ()

gint
chafa_canvas_set_char_at (ChafaCanvas *canvas,
                          gint x,
                          gint y,
                          gunichar c);

Sets the character at cell (x, y). The coordinates are zero-indexed. For double-width characters, the leftmost cell must contain the character and the cell to the right of it will automatically be set to 0.

If the character is a nonprintable or zero-width, no change will be made.

Parameters

canvas

The canvas to manipulate

 

x

Column of character cell to manipulate

 

y

Row of character cell to manipulate

 

c

The character value to store

 

Returns

The number of cells output (0, 1 or 2)

Since: 1.8


chafa_canvas_get_colors_at ()

void
chafa_canvas_get_colors_at (ChafaCanvas *canvas,
                            gint x,
                            gint y,
                            gint *fg_out,
                            gint *bg_out);

Gets the colors at cell (x, y). The coordinates are zero-indexed. For double-width characters, both cells will contain the same colors.

The colors will be -1 for transparency, packed 8bpc RGB otherwise, i.e. 0x00RRGGBB hex.

If the canvas is in an indexed mode, palette lookups will be made for you.

Parameters

canvas

The canvas to inspect

 

x

Column of character cell to inspect

 

y

Row of character cell to inspect

 

fg_out

Storage for foreground color

 

bg_out

Storage for background color

 

Since: 1.8


chafa_canvas_set_colors_at ()

void
chafa_canvas_set_colors_at (ChafaCanvas *canvas,
                            gint x,
                            gint y,
                            gint fg,
                            gint bg);

Sets the colors at cell (x, y). The coordinates are zero-indexed. For double-width characters, both cells will be set to the same color.

The colors must be -1 for transparency, packed 8bpc RGB otherwise, i.e. 0x00RRGGBB hex.

If the canvas is in an indexed mode, palette lookups will be made for you.

Parameters

canvas

The canvas to manipulate

 

x

Column of character cell to manipulate

 

y

Row of character cell to manipulate

 

fg

Foreground color

 

bg

Background color

 

Since: 1.8


chafa_canvas_get_raw_colors_at ()

void
chafa_canvas_get_raw_colors_at (ChafaCanvas *canvas,
                                gint x,
                                gint y,
                                gint *fg_out,
                                gint *bg_out);

Gets the colors at cell (x, y). The coordinates are zero-indexed. For double-width characters, both cells will contain the same colors.

The colors will be -1 for transparency, packed 8bpc RGB, i.e. 0x00RRGGBB hex in truecolor mode, or the raw pen value (0-255) in indexed modes.

It's the caller's responsibility to handle the color values correctly according to the canvas mode (truecolor or indexed).

Parameters

canvas

The canvas to inspect

 

x

Column of character cell to inspect

 

y

Row of character cell to inspect

 

fg_out

Storage for foreground color

 

bg_out

Storage for background color

 

Since: 1.8


chafa_canvas_set_raw_colors_at ()

void
chafa_canvas_set_raw_colors_at (ChafaCanvas *canvas,
                                gint x,
                                gint y,
                                gint fg,
                                gint bg);

Sets the colors at cell (x, y). The coordinates are zero-indexed. For double-width characters, both cells will be set to the same color.

The colors must be -1 for transparency, packed 8bpc RGB, i.e. 0x00RRGGBB hex in truecolor mode, or the raw pen value (0-255) in indexed modes.

It's the caller's responsibility to handle the color values correctly according to the canvas mode (truecolor or indexed).

Parameters

canvas

The canvas to manipulate

 

x

Column of character cell to manipulate

 

y

Row of character cell to manipulate

 

fg

Foreground color

 

bg

Background color

 

Since: 1.8


chafa_canvas_build_ansi ()

GString *
chafa_canvas_build_ansi (ChafaCanvas *canvas);

chafa_canvas_build_ansi has been deprecated since version 1.6 and should not be used in newly-written code.

Use chafa_canvas_print() instead.

Builds a UTF-8 string of ANSI sequences and symbols representing the canvas' current contents. This can e.g. be printed to a terminal. The exact choice of escape sequences and symbols, dimensions, etc. is determined by the configuration assigned to canvas on its creation.

All output lines except for the last one will end in a newline.

Parameters

canvas

The canvas to generate an ANSI character representation of

 

Returns

A UTF-8 string of ANSI sequences and symbols


chafa_canvas_set_contents_rgba8 ()

void
chafa_canvas_set_contents_rgba8 (ChafaCanvas *canvas,
                                 const guint8 *src_pixels,
                                 gint src_width,
                                 gint src_height,
                                 gint src_rowstride);

chafa_canvas_set_contents_rgba8 has been deprecated since version 1.2 and should not be used in newly-written code.

Use chafa_canvas_draw_all_pixels() instead.

Replaces pixel data of canvas with a copy of that found at src_pixels . The source data must be in packed 8-bits-per-channel RGBA format. The alpha value is expressed as opacity (0xff is opaque) and is not premultiplied.

Parameters

canvas

Canvas whose pixel data to replace

 

src_pixels

Pointer to the start of source pixel memory

 

src_width

Width in pixels of source pixel data

 

src_height

Height in pixels of source pixel data

 

src_rowstride

Number of bytes between the start of each pixel row

 

Types and Values

ChafaCanvas

typedef struct ChafaCanvas ChafaCanvas;