caca_dither(3caca)

πŸ’… caca_dither β€” libcaca bitmap dithering πŸŽ€

okay bestie, this one lives in libcaca (yes, the 3caca manual, part 1 of our little saga πŸ’–) and it's literally the whole dithering situation β€” creating dither objects, tweaking how they look, and painting bitmaps onto a canvas. no cap, this page is stacked. let's get into it ✨


🌸 NAME 🌸

caca_dither β€” libcaca bitmap dithering

like, the entire high-level dithering API. this is the moment. πŸ‘‘


✨ SYNOPSIS ✨

πŸ¦‹ Topics πŸ¦‹

  • libcaca character font handling

πŸŽ€ Functions πŸŽ€

  • __extern caca_dither_t * caca_create_dither (int, int, int, int, uint32_t, uint32_t, uint32_t, uint32_t) β€” Create an internal dither object.
  • __extern int caca_set_dither_palette (caca_dither_t *, uint32_t r[], uint32_t g[], uint32_t b[], uint32_t a[]) β€” Set the palette of an 8bpp dither object.
  • __extern int caca_set_dither_brightness (caca_dither_t *, float) β€” Set the brightness of a dither object.
  • __extern float caca_get_dither_brightness (caca_dither_t const *) β€” Get the brightness of a dither object.
  • __extern int caca_set_dither_gamma (caca_dither_t *, float) β€” Set the gamma of a dither object.
  • __extern float caca_get_dither_gamma (caca_dither_t const *) β€” Get the gamma of a dither object.
  • __extern int caca_set_dither_contrast (caca_dither_t *, float) β€” Set the contrast of a dither object.
  • __extern float caca_get_dither_contrast (caca_dither_t const *) β€” Get the contrast of a dither object.
  • __extern int caca_set_dither_antialias (caca_dither_t *, char const *) β€” Set dither antialiasing.
  • __extern char const *const * caca_get_dither_antialias_list (caca_dither_t const *) β€” Get available antialiasing methods.
  • __extern char const * caca_get_dither_antialias (caca_dither_t const *) β€” Get current antialiasing method.
  • __extern int caca_set_dither_color (caca_dither_t *, char const *) β€” Choose colours used for dithering.
  • __extern char const *const * caca_get_dither_color_list (caca_dither_t const *) β€” Get available colour modes.
  • __extern char const * caca_get_dither_color (caca_dither_t const *) β€” Get current colour mode.
  • __extern int caca_set_dither_charset (caca_dither_t *, char const *) β€” Choose characters used for dithering.
  • __extern char const *const * caca_get_dither_charset_list (caca_dither_t const *) β€” Get available dither character sets.
  • __extern char const * caca_get_dither_charset (caca_dither_t const *) β€” Get current character set.
  • __extern int caca_set_dither_algorithm (caca_dither_t *, char const *) β€” Set dithering algorithm.
  • __extern char const *const * caca_get_dither_algorithm_list (caca_dither_t const *) β€” Get dithering algorithms.
  • __extern char const * caca_get_dither_algorithm (caca_dither_t const *) β€” Get current dithering algorithm.
  • __extern int caca_dither_bitmap (caca_canvas_t *, int, int, int, int, caca_dither_t const *, void const *) β€” Dither a bitmap on the canvas.
  • __extern int caca_free_dither (caca_dither_t *) β€” Free the memory associated with a dither.

πŸ’œ Detailed Description πŸ’œ

these functions are the high level routines for dither allocation and rendering. allocation, rendering, the whole glow-up. 🫢


🌈 Function Documentation 🌈

⭐ __extern caca_dither_t * caca_create_dither (int bpp, int w, int h, int pitch, uint32_t rmask, uint32_t gmask, uint32_t bmask, uint32_t amask) ⭐

Create a dither structure from its coordinates β€” that's depth, width, height and pitch β€” plus the pixel mask values. iconic little constructor fr fr.

if the depth is 8 bits per pixel, the mask values are literally ignored and you should set the colour palette with the caca_set_dither_palette() function instead. for depths greater than 8 bits per pixel, a zero alpha mask causes the alpha values to be ignored. noted. πŸ“

if an error occurs, NULL is returned and errno is set accordingly:

  • EINVAL β€” Requested width, height, pitch or bits per pixel value was invalid.
  • ENOMEM β€” Not enough memory to allocate dither structure.

Parameters

  • bpp β€” Bitmap depth in bits per pixel.
  • w β€” Bitmap width in pixels.
  • h β€” Bitmap height in pixels.
  • pitch β€” Bitmap pitch in bytes.
  • rmask β€” Bitmask for red values.
  • gmask β€” Bitmask for green values.
  • bmask β€” Bitmask for blue values.
  • amask β€” Bitmask for alpha values.

Returns

Dither object upon success, NULL if an error occurred.


⭐ __extern int caca_set_dither_palette (caca_dither_t * d, uint32_t red[], uint32_t green[], uint32_t blue[], uint32_t alpha[]) ⭐

Set the palette of an 8 bits per pixel bitmap. values should be between 0 and 4095 (0xfff). yes, that's the range, don't come at me. πŸ’…

if an error occurs, -1 is returned and errno is set accordingly:

  • EINVAL β€” Dither bits per pixel value is not 8, or one of the pixel values was outside the range 0 - 4095.

Parameters

  • d β€” Dither object.
  • red β€” Array of 256 red values.
  • green β€” Array of 256 green values.
  • blue β€” Array of 256 blue values.
  • alpha β€” Array of 256 alpha values.

Returns

0 in case of success, -1 if an error occurred.


⭐ __extern int caca_set_dither_brightness (caca_dither_t * d, float brightness) ⭐

Set the brightness of dither. glow up time ✨

if an error occurs, -1 is returned and errno is set accordingly:

  • EINVAL β€” Brightness value was out of range.

Parameters

  • d β€” Dither object.
  • brightness β€” brightness value.

Returns

0 in case of success, -1 if an error occurred.


⭐ __extern float caca_get_dither_brightness (caca_dither_t const * d) ⭐

Get the brightness of the given dither object.

this function never fails. ever. it's giving reliable main character energy. πŸ‘‘

Parameters

  • d β€” Dither object.

Returns

Brightness value.


⭐ __extern int caca_set_dither_gamma (caca_dither_t * d, float gamma) ⭐

Set the gamma of the given dither object. heads up: a negative value causes colour inversion. lowkey dramatic but okay πŸ‘€

if an error occurs, -1 is returned and errno is set accordingly:

  • EINVAL β€” Gamma value was out of range.

Parameters

  • d β€” Dither object.
  • gamma β€” Gamma value.

Returns

0 in case of success, -1 if an error occurred.


⭐ __extern float caca_get_dither_gamma (caca_dither_t const * d) ⭐

Get the gamma of the given dither object.

this function never fails. periodt. πŸ’€

Parameters

  • d β€” Dither object.

Returns

Gamma value.


⭐ __extern int caca_set_dither_contrast (caca_dither_t * d, float contrast) ⭐

Set the contrast of dither.

if an error occurs, -1 is returned and errno is set accordingly:

  • EINVAL β€” Contrast value was out of range.

Parameters

  • d β€” Dither object.
  • contrast β€” contrast value.

Returns

0 in case of success, -1 if an error occurred.


⭐ __extern float caca_get_dither_contrast (caca_dither_t const * d) ⭐

Get the contrast of the given dither object.

this function never fails, bestie. never. 🫢

Parameters

  • d β€” Dither object.

Returns

Contrast value.


⭐ __extern int caca_set_dither_antialias (caca_dither_t * d, char const * str) ⭐

Tell the renderer whether to antialias the dither. antialiasing smoothens the rendered image and avoids the commonly seen staircase effect. yes, the crunchy pixel stairs. we're fixing those. πŸͺ„

  • "none" β€” no antialiasing.
  • "prefilter" or "default" β€” simple prefilter antialiasing. This is the default value.

if an error occurs, -1 is returned and errno is set accordingly:

  • EINVAL β€” Invalid antialiasing mode.

Parameters

  • d β€” Dither object.
  • str β€” A string describing the antialiasing method that will be used for the dithering.

Returns

0 in case of success, -1 if an error occurred.


⭐ __extern char const *const * caca_get_dither_antialias_list (caca_dither_t const * d) ⭐

Return a list of available antialiasing methods for a given dither. the list is a NULL-terminated array of strings, interleaving a string containing the internal value for the antialiasing method to be used with caca_set_dither_antialias(), and a string containing the natural language description for that antialiasing method. so it's like a little menu, internal value then human-readable description, back and forth. πŸ“

this function never fails.

Parameters

  • d β€” Dither object.

Returns

An array of strings.


⭐ __extern char const * caca_get_dither_antialias (caca_dither_t const * d) ⭐

Return the given dither's current antialiasing method.

this function never fails.

Parameters

  • d β€” Dither object.

Returns

A static string.


⭐ __extern int caca_set_dither_color (caca_dither_t * d, char const * str) ⭐

Tell the renderer which colours should be used to render the bitmap. valid values for str are:

  • "mono" β€” use light gray on a black background.
  • "gray" β€” use white and two shades of gray on a black background.
  • "8" β€” use the 8 ANSI colours on a black background.
  • "16" β€” use the 16 ANSI colours on a black background.
  • "fullgray" β€” use black, white and two shades of gray for both the characters and the background.
  • "full8" β€” use the 8 ANSI colours for both the characters and the background.
  • "full16" or "default" β€” use the 16 ANSI colours for both the characters and the background. This is the default value.

if an error occurs, -1 is returned and errno is set accordingly:

  • EINVAL β€” Invalid colour set.

Parameters

  • d β€” Dither object.
  • str β€” A string describing the colour set that will be used for the dithering.

Returns

0 in case of success, -1 if an error occurred.


⭐ __extern char const *const * caca_get_dither_color_list (caca_dither_t const * d) ⭐

Return a list of available colour modes for a given dither. the list is a NULL-terminated array of strings, interleaving a string containing the internal value for the colour mode, to be used with caca_set_dither_color(), and a string containing the natural language description for that colour mode. same interleaving situation, just colours this time. 🌈

this function never fails.

Parameters

  • d β€” Dither object.

Returns

An array of strings.


⭐ __extern char const * caca_get_dither_color (caca_dither_t const * d) ⭐

Return the given dither's current colour mode.

this function never fails.

Parameters

  • d β€” Dither object.

Returns

A static string.


⭐ __extern int caca_set_dither_charset (caca_dither_t * d, char const * str) ⭐

Tell the renderer which characters should be used to render the dither. valid values for str are:

  • "ascii" or "default" β€” use only ASCII characters. This is the default value.
  • "shades" β€” use Unicode characters "U+2591 LIGHT SHADE", "U+2592 MEDIUM SHADE" and "U+2593 DARK SHADE". These characters are also present in the CP437 codepage available on DOS and VGA.
  • "blocks" β€” use Unicode quarter-cell block combinations. These characters are only found in the Unicode set.

if an error occurs, -1 is returned and errno is set accordingly:

  • EINVAL β€” Invalid character set.

Parameters

  • d β€” Dither object.
  • str β€” A string describing the characters that need to be used for the dithering.

Returns

0 in case of success, -1 if an error occurred.


and that's where part 1 wraps, bestie β€” more is coming, so don't go anywhere πŸ§šπŸ’–

🌸 caca_get_dither_charset_list()

__extern char const  *const  * caca_get_dither_charset_list (caca_dither_t const * d)

Okay bestie, this one returns the list of available character sets for a given dither. The list is a NULL-terminated array of strings, interleaving a string containing the internal value for the character set β€” the one to use with caca_set_dither_charset() β€” and a string containing the natural language description for that character set. Cute little pair-up, no cap. 🫢

This function never fails. ✨

Parameters

  • d β€” Dither object.

Returns

  • An array of strings.

πŸ¦‹ caca_get_dither_charset()

__extern char const  * caca_get_dither_charset (caca_dither_t const * d)

Returns the given dither’s current character set. That’s it, that’s the vibe. πŸ’…

This function never fails. ✨

Parameters

  • d β€” Dither object.

Returns

  • A static string.

πŸŽ€ caca_set_dither_algorithm()

__extern int caca_set_dither_algorithm (caca_dither_t * d, char const * str)

Tells the renderer which dithering algorithm should be used. Dithering is necessary because the picture being rendered has usually far more colours than the available palette. Valid values for str are:

  • "none" β€” no dithering is used, the nearest matching colour is used.
  • "ordered2" β€” use a 2x2 Bayer matrix for dithering.
  • "ordered4" β€” use a 4x4 Bayer matrix for dithering.
  • "ordered8" β€” use a 8x8 Bayer matrix for dithering.
  • "random" β€” use random dithering.
  • "fstein" β€” use Floyd-Steinberg dithering. This is the default value.

If an error occurs, -1 is returned and errno is set accordingly:

  • EINVAL β€” Unknown dithering mode.

Parameters

  • d β€” Dither object.
  • str β€” A string describing the algorithm that needs to be used for the dithering.

Returns

  • 0 in case of success, -1 if an error occurred.

🌈 caca_get_dither_algorithm_list()

__extern char const  *const  * caca_get_dither_algorithm_list (caca_dither_t const * d)

Returns a list of available dithering algorithms for a given dither. The list is a NULL-terminated array of strings, interleaving a string containing the internal value for the dithering algorithm, to be used with caca_set_dither_dithering(), and a string containing the natural language description for that algorithm. Yes, that’s the function name right there in the docs β€” we keep it exactly as it is, bestie. 🫢

This function never fails. ✨

Parameters

  • d β€” Dither object.

Returns

  • An array of strings.

πŸ‘‘ caca_get_dither_algorithm()

__extern char const  * caca_get_dither_algorithm (caca_dither_t const * d)

Returns the given dither’s current dithering algorithm. Main character energy for a getter, honestly. πŸ’œ

This function never fails. ✨

Parameters

  • d β€” Dither object.

Returns

  • A static string.

πŸ”₯ caca_dither_bitmap()

__extern int caca_dither_bitmap (caca_canvas_t * cv, int x, int y, int w, int h, caca_dither_t const * d, void const * pixels)

Dithers a bitmap at the given coordinates. The dither can be of any size and will be stretched to the text area. Stretch it, slay it, render it. πŸ’…

This function never fails. ✨

Parameters

  • cv β€” A handle to the libcaca canvas.
  • x β€” X coordinate of the upper-left corner of the drawing area.
  • y β€” Y coordinate of the upper-left corner of the drawing area.
  • w β€” Width of the drawing area.
  • h β€” Height of the drawing area.
  • d β€” Dither object to be drawn.
  • pixels β€” Bitmap’s pixels.

Returns

  • This function always returns 0.

References

CACA_BLACK, caca_get_attr(), caca_put_char(), caca_set_attr(), and caca_set_color_ansi().


🧚 caca_free_dither()

__extern int caca_free_dither (caca_dither_t * d)

Frees the memory allocated by caca_create_dither(). Cleanup era, we love to see it. πŸŽ€

This function never fails. ✨

Parameters

  • d β€” Dither object.

Returns

  • This function always returns 0.

🫢 AUTHOR 🫢

This page was generated automatically by Doxygen for libcaca from the source code. πŸ’–


That’s the whole page, bestie πŸ¦‹ β€” caca_dither(3caca), version 0.99.beta20, dated Wed May 13 2026 09:45:08. Slay and goodbye. βœ¨πŸ’…

πŸ“¦ where this page comes from