---
name: "caca.h"
section: "3caca"
platform: "linux"
package: "libcaca"
version: "0.99.beta20-7"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/caca.h"
---

# caca.h(3caca)

The libcaca public header.

## NAME

caca.h - The *libcaca* public header.

## SYNOPSIS

### Data Structures

struct **caca\_event**\
 Handling of user events.  struct **caca\_option**\
 Option parsing.  struct **caca\_conio\_text\_info**\
 DOS text area information.

### Macros

\#define **CACA\_API\_VERSION\_1**\
 \#define **CACA\_MAGIC\_FULLWIDTH**   0x000ffffe\

### Typedefs

typedef struct caca\_canvas **caca\_canvas\_t**\
 typedef struct caca\_dither **caca\_dither\_t**\
 typedef struct caca\_charfont **caca\_charfont\_t**\
 typedef struct caca\_font **caca\_font\_t**\
 typedef struct caca\_file **caca\_file\_t**\
 typedef struct caca\_display **caca\_display\_t**\
 typedef struct **caca\_event** **caca\_event\_t**\

### Enumerations

enum **caca\_color** { **CACA\_BLACK** = 0x00, **CACA\_BLUE** = 0x01, **CACA\_GREEN** = 0x02, **CACA\_CYAN** = 0x03, **CACA\_RED** = 0x04, **CACA\_MAGENTA** = 0x05, **CACA\_BROWN** = 0x06, **CACA\_LIGHTGRAY** = 0x07, **CACA\_DARKGRAY** = 0x08, **CACA\_LIGHTBLUE** = 0x09, **CACA\_LIGHTGREEN** = 0x0a, **CACA\_LIGHTCYAN** = 0x0b, **CACA\_LIGHTRED** = 0x0c, **CACA\_LIGHTMAGENTA** = 0x0d, **CACA\_YELLOW** = 0x0e, **CACA\_WHITE** = 0x0f, **CACA\_DEFAULT** = 0x10, **CACA\_TRANSPARENT** = 0x20 }\
 enum **caca\_style** { **CACA\_BOLD** = 0x01, **CACA\_ITALICS** = 0x02, **CACA\_UNDERLINE** = 0x04, **CACA\_BLINK** = 0x08 }\
 enum **caca\_event\_type** { **CACA\_EVENT\_NONE** = 0x0000, **CACA\_EVENT\_KEY\_PRESS** = 0x0001, **CACA\_EVENT\_KEY\_RELEASE** = 0x0002, **CACA\_EVENT\_MOUSE\_PRESS** = 0x0004, **CACA\_EVENT\_MOUSE\_RELEASE** = 0x0008, **CACA\_EVENT\_MOUSE\_MOTION** = 0x0010, **CACA\_EVENT\_RESIZE** = 0x0020, **CACA\_EVENT\_QUIT** = 0x0040, **CACA\_EVENT\_ANY** = 0xffff }\
 User event type enumeration.  enum **caca\_key** { **CACA\_KEY\_UNKNOWN** = 0x00, **CACA\_KEY\_CTRL\_A** = 0x01, **CACA\_KEY\_CTRL\_B** = 0x02, **CACA\_KEY\_CTRL\_C** = 0x03, **CACA\_KEY\_CTRL\_D** = 0x04, **CACA\_KEY\_CTRL\_E** = 0x05, **CACA\_KEY\_CTRL\_F** = 0x06, **CACA\_KEY\_CTRL\_G** = 0x07, **CACA\_KEY\_BACKSPACE** = 0x08, **CACA\_KEY\_TAB** = 0x09, **CACA\_KEY\_CTRL\_J** = 0x0a, **CACA\_KEY\_CTRL\_K** = 0x0b, **CACA\_KEY\_CTRL\_L** = 0x0c, **CACA\_KEY\_RETURN** = 0x0d, **CACA\_KEY\_CTRL\_N** = 0x0e, **CACA\_KEY\_CTRL\_O** = 0x0f, **CACA\_KEY\_CTRL\_P** = 0x10, **CACA\_KEY\_CTRL\_Q** = 0x11, **CACA\_KEY\_CTRL\_R** = 0x12, **CACA\_KEY\_PAUSE** = 0x13, **CACA\_KEY\_CTRL\_T** = 0x14, **CACA\_KEY\_CTRL\_U** = 0x15, **CACA\_KEY\_CTRL\_V** = 0x16, **CACA\_KEY\_CTRL\_W** = 0x17, **CACA\_KEY\_CTRL\_X** = 0x18, **CACA\_KEY\_CTRL\_Y** = 0x19, **CACA\_KEY\_CTRL\_Z** = 0x1a, **CACA\_KEY\_ESCAPE** = 0x1b, **CACA\_KEY\_DELETE** = 0x7f, **CACA\_KEY\_UP** = 0x111, **CACA\_KEY\_DOWN** = 0x112, **CACA\_KEY\_LEFT** = 0x113, **CACA\_KEY\_RIGHT** = 0x114, **CACA\_KEY\_INSERT** = 0x115, **CACA\_KEY\_HOME** = 0x116, **CACA\_KEY\_END** = 0x117, **CACA\_KEY\_PAGEUP** = 0x118, **CACA\_KEY\_PAGEDOWN** = 0x119, **CACA\_KEY\_F1** = 0x11a, **CACA\_KEY\_F2** = 0x11b, **CACA\_KEY\_F3** = 0x11c, **CACA\_KEY\_F4** = 0x11d, **CACA\_KEY\_F5** = 0x11e, **CACA\_KEY\_F6** = 0x11f, **CACA\_KEY\_F7** = 0x120, **CACA\_KEY\_F8** = 0x121, **CACA\_KEY\_F9** = 0x122, **CACA\_KEY\_F10** = 0x123, **CACA\_KEY\_F11** = 0x124, **CACA\_KEY\_F12** = 0x125, **CACA\_KEY\_F13** = 0x126, **CACA\_KEY\_F14** = 0x127, **CACA\_KEY\_F15** = 0x128 }\
 Special key values.  enum **CACA\_CONIO\_COLORS** { **CACA\_CONIO\_BLINK** = 128, **CACA\_CONIO\_BLACK** = 0, **CACA\_CONIO\_BLUE** = 1, **CACA\_CONIO\_GREEN** = 2, **CACA\_CONIO\_CYAN** = 3, **CACA\_CONIO\_RED** = 4, **CACA\_CONIO\_MAGENTA** = 5, **CACA\_CONIO\_BROWN** = 6, **CACA\_CONIO\_LIGHTGRAY** = 7, **CACA\_CONIO\_DARKGRAY** = 8, **CACA\_CONIO\_LIGHTBLUE** = 9, **CACA\_CONIO\_LIGHTGREEN** = 10, **CACA\_CONIO\_LIGHTCYAN** = 11, **CACA\_CONIO\_LIGHTRED** = 12, **CACA\_CONIO\_LIGHTMAGENTA** = 13, **CACA\_CONIO\_YELLOW** = 14, **CACA\_CONIO\_WHITE** = 15 }\
 DOS colours.  enum **CACA\_CONIO\_CURSOR** { **CACA\_CONIO\_\_NOCURSOR** = 0, **CACA\_CONIO\_\_SOLIDCURSOR** = 1, **CACA\_CONIO\_\_NORMALCURSOR** = 2 }\
 DOS cursor modes.  enum **CACA\_CONIO\_MODE** { **CACA\_CONIO\_LASTMODE** = -1, **CACA\_CONIO\_BW40** = 0, **CACA\_CONIO\_C40** = 1, **CACA\_CONIO\_BW80** = 2, **CACA\_CONIO\_C80** = 3, **CACA\_CONIO\_MONO** = 7, **CACA\_CONIO\_C4350** = 64 }\
 DOS video modes.

### Functions

\_\_extern **caca\_canvas\_t** \* **caca\_create\_canvas** (int, int)\
 Initialise a *libcaca* canvas.  \_\_extern int **caca\_manage\_canvas** (**caca\_canvas\_t** \*, int(\*)(void \*), void \*)\
 Manage a canvas.  \_\_extern int **caca\_unmanage\_canvas** (**caca\_canvas\_t** \*, int(\*)(void \*), void \*)\
 unmanage a canvas.  \_\_extern int **caca\_set\_canvas\_size** (**caca\_canvas\_t** \*, int, int)\
 Resize a canvas.  \_\_extern int **caca\_get\_canvas\_width** (**caca\_canvas\_t** const \*)\
 Get the canvas width.  \_\_extern int **caca\_get\_canvas\_height** (**caca\_canvas\_t** const \*)\
 Get the canvas height.  \_\_extern uint32\_t const \* **caca\_get\_canvas\_chars** (**caca\_canvas\_t** const \*)\
 Get the canvas character array.  \_\_extern uint32\_t const \* **caca\_get\_canvas\_attrs** (**caca\_canvas\_t** const \*)\
 Get the canvas attribute array.  \_\_extern int **caca\_free\_canvas** (**caca\_canvas\_t** \*)\
 Free a *libcaca* canvas.  \_\_extern int **caca\_rand** (int, int)\
 \_\_extern char const \* **caca\_get\_version** (void)\
 Return the *libcaca* version.  \_\_extern int **caca\_gotoxy** (**caca\_canvas\_t** \*, int, int)\
 Set cursor position.  \_\_extern int **caca\_wherex** (**caca\_canvas\_t** const \*)\
 Get X cursor position.  \_\_extern int **caca\_wherey** (**caca\_canvas\_t** const \*)\
 Get Y cursor position.  \_\_extern int **caca\_put\_char** (**caca\_canvas\_t** \*, int, int, uint32\_t)\
 Print an ASCII or Unicode character.  \_\_extern uint32\_t **caca\_get\_char** (**caca\_canvas\_t** const \*, int, int)\
 Get the Unicode character at the given coordinates.  \_\_extern int **caca\_put\_str** (**caca\_canvas\_t** \*, int, int, char const \*)\
 Print a string.  \_\_extern int **caca\_printf** (**caca\_canvas\_t** \*, int, int, char const \*,...)\
 Print a formated string.  \_\_extern int **caca\_vprintf** (**caca\_canvas\_t** \*, int, int, char const \*, va\_list)\
 Print a formated string (va\_list version).  \_\_extern int **caca\_clear\_canvas** (**caca\_canvas\_t** \*)\
 Clear the canvas.  \_\_extern int **caca\_set\_canvas\_handle** (**caca\_canvas\_t** \*, int, int)\
 Set cursor handle.  \_\_extern int **caca\_get\_canvas\_handle\_x** (**caca\_canvas\_t** const \*)\
 Get X handle position.  \_\_extern int **caca\_get\_canvas\_handle\_y** (**caca\_canvas\_t** const \*)\
 Get Y handle position.  \_\_extern int **caca\_blit** (**caca\_canvas\_t** \*, int, int, **caca\_canvas\_t** const \*, **caca\_canvas\_t** const \*)\
 Blit a canvas onto another one.  \_\_extern int **caca\_set\_canvas\_boundaries** (**caca\_canvas\_t** \*, int, int, int, int)\
 Set a canvas' new boundaries.  \_\_extern int **caca\_disable\_dirty\_rect** (**caca\_canvas\_t** \*)\
 Disable dirty rectangles.  \_\_extern int **caca\_enable\_dirty\_rect** (**caca\_canvas\_t** \*)\
 Enable dirty rectangles.  \_\_extern int **caca\_get\_dirty\_rect\_count** (**caca\_canvas\_t** \*)\
 Get the number of dirty rectangles in the canvas.  \_\_extern int **caca\_get\_dirty\_rect** (**caca\_canvas\_t** \*, int, int \*, int \*, int \*, int \*)\
 Get a canvas's dirty rectangle.  \_\_extern int **caca\_add\_dirty\_rect** (**caca\_canvas\_t** \*, int, int, int, int)\
 Add an area to the canvas's dirty rectangle list.  \_\_extern int **caca\_remove\_dirty\_rect** (**caca\_canvas\_t** \*, int, int, int, int)\
 Remove an area from the dirty rectangle list.  \_\_extern int **caca\_clear\_dirty\_rect\_list** (**caca\_canvas\_t** \*)\
 Clear a canvas's dirty rectangle list.  \_\_extern int **caca\_invert** (**caca\_canvas\_t** \*)\
 Invert a canvas' colours.  \_\_extern int **caca\_flip** (**caca\_canvas\_t** \*)\
 Flip a canvas horizontally.  \_\_extern int **caca\_flop** (**caca\_canvas\_t** \*)\
 Flip a canvas vertically.  \_\_extern int **caca\_rotate\_180** (**caca\_canvas\_t** \*)\
 Rotate a canvas.  \_\_extern int **caca\_rotate\_left** (**caca\_canvas\_t** \*)\
 Rotate a canvas, 90 degrees counterclockwise.  \_\_extern int **caca\_rotate\_right** (**caca\_canvas\_t** \*)\
 Rotate a canvas, 90 degrees counterclockwise.  \_\_extern int **caca\_stretch\_left** (**caca\_canvas\_t** \*)\
 Rotate and stretch a canvas, 90 degrees counterclockwise.  \_\_extern int **caca\_stretch\_right** (**caca\_canvas\_t** \*)\
 Rotate and stretch a canvas, 90 degrees clockwise.  \_\_extern uint32\_t **caca\_get\_attr** (**caca\_canvas\_t** const \*, int, int)\
 Get the text attribute at the given coordinates.  \_\_extern int **caca\_set\_attr** (**caca\_canvas\_t** \*, uint32\_t)\
 Set the default character attribute.  \_\_extern int **caca\_unset\_attr** (**caca\_canvas\_t** \*, uint32\_t)\
 Unset flags in the default character attribute.  \_\_extern int **caca\_toggle\_attr** (**caca\_canvas\_t** \*, uint32\_t)\
 Toggle flags in the default character attribute.  \_\_extern int **caca\_put\_attr** (**caca\_canvas\_t** \*, int, int, uint32\_t)\
 Set the character attribute at the given coordinates.  \_\_extern int **caca\_set\_color\_ansi** (**caca\_canvas\_t** \*, uint8\_t, uint8\_t)\
 Set the default colour pair for text (ANSI version).  \_\_extern int **caca\_set\_color\_argb** (**caca\_canvas\_t** \*, uint16\_t, uint16\_t)\
 Set the default colour pair for text (truecolor version).  \_\_extern uint8\_t **caca\_attr\_to\_ansi** (uint32\_t)\
 Get DOS ANSI information from attribute.  \_\_extern uint8\_t **caca\_attr\_to\_ansi\_fg** (uint32\_t)\
 Get ANSI foreground information from attribute.  \_\_extern uint8\_t **caca\_attr\_to\_ansi\_bg** (uint32\_t)\
 Get ANSI background information from attribute.  \_\_extern uint16\_t **caca\_attr\_to\_rgb12\_fg** (uint32\_t)\
 Get 12-bit RGB foreground information from attribute.  \_\_extern uint16\_t **caca\_attr\_to\_rgb12\_bg** (uint32\_t)\
 Get 12-bit RGB background information from attribute.  \_\_extern void **caca\_attr\_to\_argb64** (uint32\_t, uint8\_t\[8\])\
 Get 64-bit ARGB information from attribute.  \_\_extern uint32\_t **caca\_utf8\_to\_utf32** (char const \*, size\_t \*)\
 Convert a UTF-8 character to UTF-32.  \_\_extern size\_t **caca\_utf32\_to\_utf8** (char \*, uint32\_t)\
 Convert a UTF-32 character to UTF-8.  \_\_extern uint8\_t **caca\_utf32\_to\_cp437** (uint32\_t)\
 Convert a UTF-32 character to CP437.  \_\_extern uint32\_t **caca\_cp437\_to\_utf32** (uint8\_t)\
 Convert a CP437 character to UTF-32.  \_\_extern char **caca\_utf32\_to\_ascii** (uint32\_t)\
 Convert a UTF-32 character to ASCII.  \_\_extern int **caca\_utf32\_is\_fullwidth** (uint32\_t)\
 Tell whether a UTF-32 character is fullwidth.  \_\_extern int **caca\_draw\_line** (**caca\_canvas\_t** \*, int, int, int, int, uint32\_t)\
 Draw a line on the canvas using the given character.  \_\_extern int **caca\_draw\_polyline** (**caca\_canvas\_t** \*, int const x\[\], int const y\[\], int, uint32\_t)\
 Draw a polyline.  \_\_extern int **caca\_draw\_thin\_line** (**caca\_canvas\_t** \*, int, int, int, int)\
 Draw a thin line on the canvas, using ASCII art.  \_\_extern int **caca\_draw\_thin\_polyline** (**caca\_canvas\_t** \*, int const x\[\], int const y\[\], int)\
 Draw an ASCII art thin polyline.  \_\_extern int **caca\_draw\_circle** (**caca\_canvas\_t** \*, int, int, int, uint32\_t)\
 Draw a circle on the canvas using the given character.  \_\_extern int **caca\_draw\_ellipse** (**caca\_canvas\_t** \*, int, int, int, int, uint32\_t)\
 Draw an ellipse on the canvas using the given character.  \_\_extern int **caca\_draw\_thin\_ellipse** (**caca\_canvas\_t** \*, int, int, int, int)\
 Draw a thin ellipse on the canvas.  \_\_extern int **caca\_fill\_ellipse** (**caca\_canvas\_t** \*, int, int, int, int, uint32\_t)\
 Fill an ellipse on the canvas using the given character.  \_\_extern int **caca\_draw\_box** (**caca\_canvas\_t** \*, int, int, int, int, uint32\_t)\
 Draw a box on the canvas using the given character.  \_\_extern int **caca\_draw\_thin\_box** (**caca\_canvas\_t** \*, int, int, int, int)\
 Draw a thin box on the canvas.  \_\_extern int **caca\_draw\_cp437\_box** (**caca\_canvas\_t** \*, int, int, int, int)\
 Draw a box on the canvas using CP437 characters.  \_\_extern int **caca\_fill\_box** (**caca\_canvas\_t** \*, int, int, int, int, uint32\_t)\
 Fill a box on the canvas using the given character.  \_\_extern int **caca\_draw\_triangle** (**caca\_canvas\_t** \*, int, int, int, int, int, int, uint32\_t)\
 Draw a triangle on the canvas using the given character.  \_\_extern int **caca\_draw\_thin\_triangle** (**caca\_canvas\_t** \*, int, int, int, int, int, int)\
 Draw a thin triangle on the canvas.  \_\_extern int **caca\_fill\_triangle** (**caca\_canvas\_t** \*, int, int, int, int, int, int, uint32\_t)\
 Fill a triangle on the canvas using the given character.  \_\_extern int **caca\_fill\_triangle\_textured** (**caca\_canvas\_t** \*cv, int coords\[6\], **caca\_canvas\_t** \*tex, float uv\[6\])\
 Fill a triangle on the canvas using an arbitrary-sized texture.  \_\_extern int **caca\_get\_frame\_count** (**caca\_canvas\_t** const \*)\
 Get the number of frames in a canvas.  \_\_extern int **caca\_set\_frame** (**caca\_canvas\_t** \*, int)\
 Activate a given canvas frame.  \_\_extern char const \* **caca\_get\_frame\_name** (**caca\_canvas\_t** const \*)\
 Get the current frame's name.  \_\_extern int **caca\_set\_frame\_name** (**caca\_canvas\_t** \*, char const \*)\
 Set the current frame's name.  \_\_extern int **caca\_create\_frame** (**caca\_canvas\_t** \*, int)\
 Add a frame to a canvas.  \_\_extern int **caca\_free\_frame** (**caca\_canvas\_t** \*, int)\
 Remove a frame from a canvas.  \_\_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.  \_\_extern **caca\_charfont\_t** \* **caca\_load\_charfont** (void const \*, size\_t)\
 \_\_extern int **caca\_free\_charfont** (**caca\_charfont\_t** \*)\
 \_\_extern **caca\_font\_t** \* **caca\_load\_font** (void const \*, size\_t)\
 Load a font from memory for future use.  \_\_extern char const \*const \* **caca\_get\_font\_list** (void)\
 Get available builtin fonts.  \_\_extern int **caca\_get\_font\_width** (**caca\_font\_t** const \*)\
 Get a font's standard glyph width.  \_\_extern int **caca\_get\_font\_height** (**caca\_font\_t** const \*)\
 Get a font's standard glyph height.  \_\_extern uint32\_t const \* **caca\_get\_font\_blocks** (**caca\_font\_t** const \*)\
 Get a font's list of supported glyphs.  \_\_extern int **caca\_render\_canvas** (**caca\_canvas\_t** const \*, **caca\_font\_t** const \*, void \*, int, int, int)\
 Render the canvas onto an image buffer.  \_\_extern int **caca\_free\_font** (**caca\_font\_t** \*)\
 Free a font structure.  \_\_extern int **caca\_canvas\_set\_figfont** (**caca\_canvas\_t** \*, char const \*)\
 load a figfont and attach it to a canvas  \_\_extern int **caca\_set\_figfont\_smush** (**caca\_canvas\_t** \*, char const \*)\
 set the smushing mode of the figfont rendering  \_\_extern int **caca\_set\_figfont\_width** (**caca\_canvas\_t** \*, int)\
 set the width of the figfont rendering  \_\_extern int **caca\_put\_figchar** (**caca\_canvas\_t** \*, uint32\_t)\
 paste a character using the current figfont  \_\_extern int **caca\_flush\_figlet** (**caca\_canvas\_t** \*)\
 flush the figlet context  \_\_extern **caca\_file\_t** \* **caca\_file\_open** (char const \*, const char \*)\
 Open a file for reading or writing.  \_\_extern int **caca\_file\_close** (**caca\_file\_t** \*)\
 Close a file handle.  \_\_extern uint64\_t **caca\_file\_tell** (**caca\_file\_t** \*)\
 Return the position in a file handle.  \_\_extern size\_t **caca\_file\_read** (**caca\_file\_t** \*, void \*, size\_t)\
 Read data from a file handle.  \_\_extern size\_t **caca\_file\_write** (**caca\_file\_t** \*, const void \*, size\_t)\
 Write data to a file handle.  \_\_extern char \* **caca\_file\_gets** (**caca\_file\_t** \*, char \*, int)\
 Read a line from a file handle.  \_\_extern int **caca\_file\_eof** (**caca\_file\_t** \*)\
 Tell whether a file handle reached end of file.  \_\_extern ssize\_t **caca\_import\_canvas\_from\_memory** (**caca\_canvas\_t** \*, void const \*, size\_t, char const \*)\
 Import a memory buffer into a canvas.  \_\_extern ssize\_t **caca\_import\_canvas\_from\_file** (**caca\_canvas\_t** \*, char const \*, char const \*)\
 Import a file into a canvas.  \_\_extern ssize\_t **caca\_import\_area\_from\_memory** (**caca\_canvas\_t** \*, int, int, void const \*, size\_t, char const \*)\
 Import a memory buffer into a canvas area.  \_\_extern ssize\_t **caca\_import\_area\_from\_file** (**caca\_canvas\_t** \*, int, int, char const \*, char const \*)\
 Import a file into a canvas area.  \_\_extern char const \*const \* **caca\_get\_import\_list** (void)\
 Get available import formats.  \_\_extern void \* **caca\_export\_canvas\_to\_memory** (**caca\_canvas\_t** const \*, char const \*, size\_t \*)\
 Export a canvas into a foreign format.  \_\_extern void \* **caca\_export\_area\_to\_memory** (**caca\_canvas\_t** const \*, int, int, int, int, char const \*, size\_t \*)\
 Export a canvas portion into a foreign format.  \_\_extern char const \*const \* **caca\_get\_export\_list** (void)\
 Get available export formats.  \_\_extern **caca\_display\_t** \* **caca\_create\_display** (**caca\_canvas\_t** \*)\
 Attach a caca graphical context to a caca canvas.  \_\_extern **caca\_display\_t** \* **caca\_create\_display\_with\_driver** (**caca\_canvas\_t** \*, char const \*)\
 Attach a specific caca graphical context to a caca canvas.  \_\_extern char const \*const \* **caca\_get\_display\_driver\_list** (void)\
 Get available display drivers.  \_\_extern char const \* **caca\_get\_display\_driver** (**caca\_display\_t** \*)\
 Return a caca graphical context's current output driver.  \_\_extern int **caca\_set\_display\_driver** (**caca\_display\_t** \*, char const \*)\
 Set the output driver.  \_\_extern int **caca\_free\_display** (**caca\_display\_t** \*)\
 Detach a caca graphical context from a caca backend context.  \_\_extern **caca\_canvas\_t** \* **caca\_get\_canvas** (**caca\_display\_t** \*)\
 Get the canvas attached to a caca graphical context.  \_\_extern int **caca\_refresh\_display** (**caca\_display\_t** \*)\
 Flush pending changes and redraw the screen.  \_\_extern int **caca\_set\_display\_time** (**caca\_display\_t** \*, int)\
 Set the refresh delay.  \_\_extern int **caca\_get\_display\_time** (**caca\_display\_t** const \*)\
 Get the display's average rendering time.  \_\_extern int **caca\_get\_display\_width** (**caca\_display\_t** const \*)\
 Get the display width.  \_\_extern int **caca\_get\_display\_height** (**caca\_display\_t** const \*)\
 Get the display height.  \_\_extern int **caca\_set\_display\_title** (**caca\_display\_t** \*, char const \*)\
 Set the display title.  \_\_extern int **caca\_set\_mouse** (**caca\_display\_t** \*, int)\
 Show or hide the mouse pointer.  \_\_extern int **caca\_set\_cursor** (**caca\_display\_t** \*, int)\
 Show or hide the cursor.  \_\_extern int **caca\_get\_event** (**caca\_display\_t** \*, int, **caca\_event\_t** \*, int)\
 Get the next mouse or keyboard input event.  \_\_extern int **caca\_get\_mouse\_x** (**caca\_display\_t** const \*)\
 Return the X mouse coordinate.  \_\_extern int **caca\_get\_mouse\_y** (**caca\_display\_t** const \*)\
 Return the Y mouse coordinate.  \_\_extern enum **caca\_event\_type** **caca\_get\_event\_type** (**caca\_event\_t** const \*)\
 Return an event's type.  \_\_extern int **caca\_get\_event\_key\_ch** (**caca\_event\_t** const \*)\
 Return a key press or key release event's value.  \_\_extern uint32\_t **caca\_get\_event\_key\_utf32** (**caca\_event\_t** const \*)\
 Return a key press or key release event's Unicode value.  \_\_extern int **caca\_get\_event\_key\_utf8** (**caca\_event\_t** const \*, char \*)\
 Return a key press or key release event's UTF-8 value.  \_\_extern int **caca\_get\_event\_mouse\_button** (**caca\_event\_t** const \*)\
 Return a mouse press or mouse release event's button.  \_\_extern int **caca\_get\_event\_mouse\_x** (**caca\_event\_t** const \*)\
 Return a mouse motion event's X coordinate.  \_\_extern int **caca\_get\_event\_mouse\_y** (**caca\_event\_t** const \*)\
 Return a mouse motion event's Y coordinate.  \_\_extern int **caca\_get\_event\_resize\_width** (**caca\_event\_t** const \*)\
 Return a resize event's display width value.  \_\_extern int **caca\_get\_event\_resize\_height** (**caca\_event\_t** const \*)\
 Return a resize event's display height value.  \_\_extern int **caca\_getopt** (int, char \*const\[\], char const \*, struct **caca\_option** const \*, int \*)\
 \_\_extern char \* **caca\_conio\_cgets** (char \*str)\
 DOS conio.h cgets() equivalent.  \_\_extern void **caca\_conio\_clreol** (void)\
 DOS conio.h clreol() equivalent.  \_\_extern void **caca\_conio\_clrscr** (void)\
 DOS conio.h clrscr() equivalent.  \_\_extern int **caca\_conio\_cprintf** (const char \*format,...)\
 DOS conio.h cprintf() equivalent.  \_\_extern int **caca\_conio\_cputs** (const char \*str)\
 DOS conio.h cputs() equivalent.  \_\_extern int **caca\_conio\_cscanf** (char \*format,...)\
 DOS stdio.h cscanf() equivalent.  \_\_extern void **caca\_conio\_delay** (unsigned int)\
 DOS dos.h delay() equivalent.  \_\_extern void **caca\_conio\_delline** (void)\
 DOS conio.h delline() equivalent.  \_\_extern int **caca\_conio\_getch** (void)\
 DOS conio.h getch() equivalent.  \_\_extern int **caca\_conio\_getche** (void)\
 DOS conio.h getche() equivalent.  \_\_extern char \* **caca\_conio\_getpass** (const char \*prompt)\
 DOS conio.h getpass() equivalent.  \_\_extern int **caca\_conio\_gettext** (int left, int top, int right, int bottom, void \*destin)\
 DOS conio.h gettext() equivalent.  \_\_extern void **caca\_conio\_gettextinfo** (struct **caca\_conio\_text\_info** \*r)\
 DOS conio.h gettextinfo() equivalent.  \_\_extern void **caca\_conio\_gotoxy** (int x, int y)\
 DOS conio.h gotoxy() equivalent.  \_\_extern void **caca\_conio\_highvideo** (void)\
 DOS conio.h highvideo() equivalent.  \_\_extern void **caca\_conio\_insline** (void)\
 DOS conio.h insline() equivalent.  \_\_extern int **caca\_conio\_kbhit** (void)\
 DOS conio.h kbhit() equivalent.  \_\_extern void **caca\_conio\_lowvideo** (void)\
 DOS conio.h lowvideo() equivalent.  \_\_extern int **caca\_conio\_movetext** (int left, int top, int right, int bottom, int destleft, int desttop)\
 DOS conio.h movetext() equivalent.  \_\_extern void **caca\_conio\_normvideo** (void)\
 DOS conio.h normvideo() equivalent.  \_\_extern void **caca\_conio\_nosound** (void)\
 DOS dos.h nosound() equivalent.  \_\_extern int **caca\_conio\_printf** (const char \*format,...)\
 DOS stdio.h printf() equivalent.  \_\_extern int **caca\_conio\_putch** (int ch)\
 DOS conio.h putch() equivalent.  \_\_extern int **caca\_conio\_puttext** (int left, int top, int right, int bottom, void \*destin)\
 DOS conio.h puttext() equivalent.  \_\_extern void **caca\_conio\_\_setcursortype** (int cur\_t)\
 DOS conio.h \_setcursortype() equivalent.  \_\_extern void **caca\_conio\_sleep** (unsigned int)\
 DOS dos.h sleep() equivalent.  \_\_extern void **caca\_conio\_sound** (unsigned int)\
 DOS dos.h sound() equivalent.  \_\_extern void **caca\_conio\_textattr** (int newattr)\
 DOS conio.h textattr() equivalent.  \_\_extern void **caca\_conio\_textbackground** (int newcolor)\
 DOS conio.h textbackground() equivalent.  \_\_extern void **caca\_conio\_textcolor** (int newcolor)\
 DOS conio.h textcolor() equivalent.  \_\_extern void **caca\_conio\_textmode** (int newmode)\
 DOS conio.h textmode() equivalent.  \_\_extern int **caca\_conio\_ungetch** (int ch)\
 DOS conio.h ungetch() equivalent.  \_\_extern int **caca\_conio\_wherex** (void)\
 DOS conio.h wherex() equivalent.  \_\_extern int **caca\_conio\_wherey** (void)\
 DOS conio.h wherey() equivalent.  \_\_extern void **caca\_conio\_window** (int left, int top, int right, int bottom)\
 DOS conio.h window() equivalent.

### Variables

\_\_extern int **caca\_optind**\
 \_\_extern char \* **caca\_optarg**\
 \_\_extern int **caca\_conio\_directvideo**\
 DOS direct video control.  \_\_extern int **caca\_conio\_\_wscroll**\
 DOS scrolling control.

## Detailed Description

**Author**

Sam Hocevar sam@hocevar.net

This header contains the public types and functions that applications using *libcaca* may use.

## Macro Definition Documentation

### #define CACA\_API\_VERSION\_1

libcaca API version

## Typedef Documentation

### typedef struct caca\_canvas caca\_canvas\_t

*libcaca* canvas

### typedef struct caca\_dither caca\_dither\_t

dither structure

### typedef struct caca\_charfont caca\_charfont\_t

character font structure

### typedef struct caca\_font caca\_font\_t

bitmap font structure

### typedef struct caca\_file caca\_file\_t

file handle structure

### typedef struct caca\_display caca\_display\_t

*libcaca* display context

### typedef struct caca\_event caca\_event\_t

*libcaca* event structure

## Author

Generated automatically by Doxygen for libcaca from the source code.
