Topics | Functions
libcaca canvas frame handling
libcaca attribute definitions » libcaca basic functions » libcaca canvas drawing » libcaca dirty rectangle manipulation » libcaca canvas transformation » libcaca attribute conversions » libcaca character set conversions » libcaca primitives drawing

## Topics
| libcaca bitmap dithering

## Functions
__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.

## Detailed Description

These functions provide high level routines for canvas frame insertion, removal, copying etc.

## Function Documentation

## ◆ caca_get_frame_count()

__extern int caca_get_frame_count | ( | caca_canvas_t const * | cv | ) |

Return the current canvas' frame count.

This function never fails.

Parameters

  cv | A libcaca canvas

Returns
  The frame count

Referenced by caca_set_canvas_boundaries().

## ◆ caca_set_frame()

__extern int caca_set_frame | ( | caca_canvas_t * | cv,
|  | int | id )

Set the active canvas frame. All subsequent drawing operations will be performed on that frame. The current painting context set by caca_set_attr() is inherited.

If the frame index is outside the canvas' frame range, nothing happens.

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

- `EINVAL` Requested frame is out of range.

Parameters

  cv | A libcaca canvas
  id | The canvas frame to activate

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

References caca_add_dirty_rect().

Referenced by caca_set_canvas_boundaries().

## ◆ caca_get_frame_name()

__extern char const * caca_get_frame_name | ( | caca_canvas_t const * | cv | ) |

Return the current frame's name. The returned string is valid until the frame is deleted or caca_set_frame_name() is called to change the frame name again.

This function never fails.

Parameters

  cv | A libcaca canvas.

Returns
  The current frame's name.

## ◆ caca_set_frame_name()

__extern int caca_set_frame_name | ( | caca_canvas_t * | cv,
|  | char const * | name )

Set the current frame's name. Upon creation, a frame has a default name of `"frame#xxxxxxxx"` where `xxxxxxxx` is a self-incrementing hexadecimal number.

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

- `ENOMEM` Not enough memory to allocate new frame.

Parameters

  cv | A libcaca canvas.
  name | The name to give to the current frame.

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

## ◆ caca_create_frame()

__extern int caca_create_frame | ( | caca_canvas_t * | cv,
|  | int | id )

Create a new frame within the given canvas. Its contents and attributes are copied from the currently active frame.

The frame index indicates where the frame should be inserted. Valid values range from 0 to the current canvas frame count. If the frame index is greater than or equals the current canvas frame count, the new frame is appended at the end of the canvas. If the frame index is less than zero, the new frame is inserted at index 0.

The active frame does not change, but its index may be renumbered due to the insertion.

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

- `ENOMEM` Not enough memory to allocate new frame.

Parameters

  cv | A libcaca canvas
  id | The index where to insert the new frame

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

Referenced by caca_set_canvas_boundaries().

## ◆ caca_free_frame()

__extern int caca_free_frame | ( | caca_canvas_t * | cv,
|  | int | id )

Delete a frame from a given canvas.

The frame index indicates the frame to delete. Valid values range from 0 to the current canvas frame count minus 1. If the frame index is greater than or equals the current canvas frame count, the last frame is deleted.

If the active frame is deleted, frame 0 becomes the new active frame. Otherwise, the active frame does not change, but its index may be renumbered due to the deletion.

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

- `EINVAL` Requested frame is out of range, or attempt to delete the last frame of the canvas.

Parameters

  cv | A libcaca canvas
  id | The index of the frame to delete

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

References caca_add_dirty_rect().