---
name: "cucul_primitives"
section: "3caca"
platform: "linux"
package: "libcucul-dev"
version: "0.99.beta14-1"
release: "Debian 5.0 (Lenny)"
platforms: ["linux"]
url: "https://new.carta.tech/cucul_primitives"
---

# cucul\_primitives(3caca)

## NAME

libcucul primitives drawing -

### Functions

\_\_extern int **cucul\_draw\_line** (**cucul\_canvas\_t** \*, int, int, int, int, uint32\_t)\
 *Draw a line on the canvas using the given character.*  \_\_extern int **cucul\_draw\_polyline** (**cucul\_canvas\_t** \*, int const x\[\], int const y\[\], int, uint32\_t)\
 *Draw a polyline.*  \_\_extern int **cucul\_draw\_thin\_line** (**cucul\_canvas\_t** \*, int, int, int, int)\
 *Draw a thin line on the canvas, using ASCII art.*  \_\_extern int **cucul\_draw\_thin\_polyline** (**cucul\_canvas\_t** \*, int const x\[\], int const y\[\], int)\
 *Draw an ASCII art thin polyline.*  \_\_extern int **cucul\_draw\_circle** (**cucul\_canvas\_t** \*, int, int, int, uint32\_t)\
 *Draw a circle on the canvas using the given character.*  \_\_extern int **cucul\_draw\_ellipse** (**cucul\_canvas\_t** \*, int, int, int, int, uint32\_t)\
 *Draw an ellipse on the canvas using the given character.*  \_\_extern int **cucul\_draw\_thin\_ellipse** (**cucul\_canvas\_t** \*, int, int, int, int)\
 *Draw a thin ellipse on the canvas.*  \_\_extern int **cucul\_fill\_ellipse** (**cucul\_canvas\_t** \*, int, int, int, int, uint32\_t)\
 *Fill an ellipse on the canvas using the given character.*  \_\_extern int **cucul\_draw\_box** (**cucul\_canvas\_t** \*, int, int, int, int, uint32\_t)\
 *Draw a box on the canvas using the given character.*  \_\_extern int **cucul\_draw\_thin\_box** (**cucul\_canvas\_t** \*, int, int, int, int)\
 *Draw a thin box on the canvas.*  \_\_extern int **cucul\_draw\_cp437\_box** (**cucul\_canvas\_t** \*, int, int, int, int)\
 *Draw a box on the canvas using CP437 characters.*  \_\_extern int **cucul\_fill\_box** (**cucul\_canvas\_t** \*, int, int, int, int, uint32\_t)\
 *Fill a box on the canvas using the given character.*  \_\_extern int **cucul\_draw\_triangle** (**cucul\_canvas\_t** \*, int, int, int, int, int, int, uint32\_t)\
 *Draw a triangle on the canvas using the given character.*  \_\_extern int **cucul\_draw\_thin\_triangle** (**cucul\_canvas\_t** \*, int, int, int, int, int, int)\
 *Draw a thin triangle on the canvas.*  \_\_extern int **cucul\_fill\_triangle** (**cucul\_canvas\_t** \*, int, int, int, int, int, int, uint32\_t)\
 *Fill a triangle on the canvas using the given character.*

## Detailed Description

These functions provide routines for primitive drawing, such as lines, boxes, triangles and ellipses.

## Function Documentation

### \_\_extern int cucul\_draw\_line (cucul\_canvas\_t \* cv, int x1, int y1, int x2, int y2, uint32\_t ch)

This function never fails.

**Parameters:**

*cv* The handle to the libcucul canvas. \
 *x1* X coordinate of the first point. \
 *y1* Y coordinate of the first point. \
 *x2* X coordinate of the second point. \
 *y2* Y coordinate of the second point. \
 *ch* UTF-32 character to be used to draw the line.

**Returns:**

This function always returns 0.

Referenced by cucul\_draw\_box(), cucul\_draw\_triangle(), and cucul\_fill\_ellipse().

### \_\_extern int cucul\_draw\_polyline (cucul\_canvas\_t \* cv, int const x\[\], int const y\[\], int n, uint32\_t ch)

Draw a polyline on the canvas using the given character and coordinate arrays. The first and last points are not connected, hence in order to draw a polygon you need to specify the starting point at the end of the list as well.

This function never fails.

**Parameters:**

*cv* The handle to the libcucul canvas. \
 *x* Array of X coordinates. Must have `n` + 1 elements. \
 *y* Array of Y coordinates. Must have `n` + 1 elements. \
 *n* Number of lines to draw. \
 *ch* UTF-32 character to be used to draw the lines.

**Returns:**

This function always returns 0.

### \_\_extern int cucul\_draw\_thin\_line (cucul\_canvas\_t \* cv, int x1, int y1, int x2, int y2)

This function never fails.

**Parameters:**

*cv* The handle to the libcucul canvas. \
 *x1* X coordinate of the first point. \
 *y1* Y coordinate of the first point. \
 *x2* X coordinate of the second point. \
 *y2* Y coordinate of the second point.

**Returns:**

This function always returns 0.

Referenced by cucul\_draw\_thin\_triangle().

### \_\_extern int cucul\_draw\_thin\_polyline (cucul\_canvas\_t \* cv, int const x\[\], int const y\[\], int n)

Draw a thin polyline on the canvas using the given coordinate arrays and with ASCII art. The first and last points are not connected, so in order to draw a polygon you need to specify the starting point at the end of the list as well.

This function never fails.

**Parameters:**

*cv* The handle to the libcucul canvas. \
 *x* Array of X coordinates. Must have `n` + 1 elements. \
 *y* Array of Y coordinates. Must have `n` + 1 elements. \
 *n* Number of lines to draw.

**Returns:**

This function always returns 0.

### \_\_extern int cucul\_draw\_circle (cucul\_canvas\_t \* cv, int x, int y, int r, uint32\_t ch)

This function never fails.

**Parameters:**

*cv* The handle to the libcucul canvas. \
 *x* Center X coordinate. \
 *y* Center Y coordinate. \
 *r* Circle radius. \
 *ch* UTF-32 character to be used to draw the circle outline.

**Returns:**

This function always returns 0.

### \_\_extern int cucul\_draw\_ellipse (cucul\_canvas\_t \* cv, int xo, int yo, int a, int b, uint32\_t ch)

This function never fails.

**Parameters:**

*cv* The handle to the libcucul canvas. \
 *xo* Center X coordinate. \
 *yo* Center Y coordinate. \
 *a* Ellipse X radius. \
 *b* Ellipse Y radius. \
 *ch* UTF-32 character to be used to draw the ellipse outline.

**Returns:**

This function always returns 0.

### \_\_extern int cucul\_draw\_thin\_ellipse (cucul\_canvas\_t \* cv, int xo, int yo, int a, int b)

This function never fails.

**Parameters:**

*cv* The handle to the libcucul canvas. \
 *xo* Center X coordinate. \
 *yo* Center Y coordinate. \
 *a* Ellipse X radius. \
 *b* Ellipse Y radius.

**Returns:**

This function always returns 0.

### \_\_extern int cucul\_fill\_ellipse (cucul\_canvas\_t \* cv, int xo, int yo, int a, int b, uint32\_t ch)

This function never fails.

**Parameters:**

*cv* The handle to the libcucul canvas. \
 *xo* Center X coordinate. \
 *yo* Center Y coordinate. \
 *a* Ellipse X radius. \
 *b* Ellipse Y radius. \
 *ch* UTF-32 character to be used to fill the ellipse.

**Returns:**

This function always returns 0.

References cucul\_draw\_line().

### \_\_extern int cucul\_draw\_box (cucul\_canvas\_t \* cv, int x, int y, int w, int h, uint32\_t ch)

This function never fails.

**Parameters:**

*cv* The handle to the libcucul canvas. \
 *x* X coordinate of the upper-left corner of the box. \
 *y* Y coordinate of the upper-left corner of the box. \
 *w* Width of the box. \
 *h* Height of the box. \
 *ch* UTF-32 character to be used to draw the box.

**Returns:**

This function always returns 0.

References cucul\_draw\_line().

### \_\_extern int cucul\_draw\_thin\_box (cucul\_canvas\_t \* cv, int x, int y, int w, int h)

This function never fails.

**Parameters:**

*cv* The handle to the libcucul canvas. \
 *x* X coordinate of the upper-left corner of the box. \
 *y* Y coordinate of the upper-left corner of the box. \
 *w* Width of the box. \
 *h* Height of the box.

**Returns:**

This function always returns 0.

References cucul\_put\_char().

### \_\_extern int cucul\_draw\_cp437\_box (cucul\_canvas\_t \* cv, int x, int y, int w, int h)

This function never fails.

**Parameters:**

*cv* The handle to the libcucul canvas. \
 *x* X coordinate of the upper-left corner of the box. \
 *y* Y coordinate of the upper-left corner of the box. \
 *w* Width of the box. \
 *h* Height of the box.

**Returns:**

This function always returns 0.

References cucul\_put\_char().

### \_\_extern int cucul\_fill\_box (cucul\_canvas\_t \* cv, int x, int y, int w, int h, uint32\_t ch)

This function never fails.

**Parameters:**

*cv* The handle to the libcucul canvas. \
 *x* X coordinate of the upper-left corner of the box. \
 *y* Y coordinate of the upper-left corner of the box. \
 *w* Width of the box. \
 *h* Height of the box. \
 *ch* UTF-32 character to be used to draw the box.

**Returns:**

This function always returns 0.

References cucul\_put\_char().

### \_\_extern int cucul\_draw\_triangle (cucul\_canvas\_t \* cv, int x1, int y1, int x2, int y2, int x3, int y3, uint32\_t ch)

This function never fails.

**Parameters:**

*cv* The handle to the libcucul canvas. \
 *x1* X coordinate of the first point. \
 *y1* Y coordinate of the first point. \
 *x2* X coordinate of the second point. \
 *y2* Y coordinate of the second point. \
 *x3* X coordinate of the third point. \
 *y3* Y coordinate of the third point. \
 *ch* UTF-32 character to be used to draw the triangle outline.

**Returns:**

This function always returns 0.

References cucul\_draw\_line().

### \_\_extern int cucul\_draw\_thin\_triangle (cucul\_canvas\_t \* cv, int x1, int y1, int x2, int y2, int x3, int y3)

This function never fails.

**Parameters:**

*cv* The handle to the libcucul canvas. \
 *x1* X coordinate of the first point. \
 *y1* Y coordinate of the first point. \
 *x2* X coordinate of the second point. \
 *y2* Y coordinate of the second point. \
 *x3* X coordinate of the third point. \
 *y3* Y coordinate of the third point.

**Returns:**

This function always returns 0.

References cucul\_draw\_thin\_line().

### \_\_extern int cucul\_fill\_triangle (cucul\_canvas\_t \* cv, int x1, int y1, int x2, int y2, int x3, int y3, uint32\_t ch)

This function never fails.

**Parameters:**

*cv* The handle to the libcucul canvas. \
 *x1* X coordinate of the first point. \
 *y1* Y coordinate of the first point. \
 *x2* X coordinate of the second point. \
 *y2* Y coordinate of the second point. \
 *x3* X coordinate of the third point. \
 *y3* Y coordinate of the third point. \
 *ch* UTF-32 character to be used to fill the triangle.

**Returns:**

This function always returns 0.

References cucul\_fill\_triangle(), and cucul\_put\_char().

Referenced by cucul\_fill\_triangle().
