You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

207 lines
7.6 KiB

  1. /*
  2. * libcucul Canvas for ultrafast compositing of Unicode letters
  3. * Copyright (c) 2002-2006 Sam Hocevar <sam@zoy.org>
  4. * All Rights Reserved
  5. *
  6. * This library is free software; you can redistribute it and/or
  7. * modify it under the terms of the Do What The Fuck You Want To
  8. * Public License, Version 2, as published by Sam Hocevar. See
  9. * http://sam.zoy.org/wtfpl/COPYING for more details.
  10. */
  11. /** \file cucul.h
  12. * \version \$Id$
  13. * \author Sam Hocevar <sam@zoy.org>
  14. * \brief The \e libcucul public header.
  15. *
  16. * This header contains the public types and functions that applications
  17. * using \e libcucul may use.
  18. */
  19. #ifndef __CUCUL_H__
  20. #define __CUCUL_H__
  21. #define CUCUL_API_VERSION_1
  22. #ifdef __cplusplus
  23. extern "C"
  24. {
  25. #endif
  26. /** \brief Colour definitions.
  27. *
  28. * Colours that can be used with cucul_set_color().
  29. */
  30. enum cucul_color
  31. {
  32. CUCUL_COLOR_BLACK = 0x0, /**< The colour index for black. */
  33. CUCUL_COLOR_BLUE = 0x1, /**< The colour index for blue. */
  34. CUCUL_COLOR_GREEN = 0x2, /**< The colour index for green. */
  35. CUCUL_COLOR_CYAN = 0x3, /**< The colour index for cyan. */
  36. CUCUL_COLOR_RED = 0x4, /**< The colour index for red. */
  37. CUCUL_COLOR_MAGENTA = 0x5, /**< The colour index for magenta. */
  38. CUCUL_COLOR_BROWN = 0x6, /**< The colour index for brown. */
  39. CUCUL_COLOR_LIGHTGRAY = 0x7, /**< The colour index for light gray. */
  40. CUCUL_COLOR_DARKGRAY = 0x8, /**< The colour index for dark gray. */
  41. CUCUL_COLOR_LIGHTBLUE = 0x9, /**< The colour index for blue. */
  42. CUCUL_COLOR_LIGHTGREEN = 0xa, /**< The colour index for light green. */
  43. CUCUL_COLOR_LIGHTCYAN = 0xb, /**< The colour index for light cyan. */
  44. CUCUL_COLOR_LIGHTRED = 0xc, /**< The colour index for light red. */
  45. CUCUL_COLOR_LIGHTMAGENTA = 0xd, /**< The colour index for light magenta. */
  46. CUCUL_COLOR_YELLOW = 0xe, /**< The colour index for yellow. */
  47. CUCUL_COLOR_WHITE = 0xf, /**< The colour index for white. */
  48. CUCUL_COLOR_TRANSPARENT = 0xfe, /**< The transparent colour. */
  49. CUCUL_COLOR_DEFAULT = 0xff, /**< The output driver's default colour. */
  50. };
  51. typedef struct cucul_context cucul_t;
  52. /** \defgroup basic Basic functions
  53. *
  54. * These functions provide the basic \e libcaca routines for library
  55. * initialisation, system information retrieval and configuration.
  56. *
  57. * @{ */
  58. cucul_t * cucul_create(unsigned int, unsigned int);
  59. cucul_t * cucul_load(void *, unsigned int);
  60. void cucul_set_size(cucul_t *, unsigned int, unsigned int);
  61. unsigned int cucul_get_width(cucul_t *);
  62. unsigned int cucul_get_height(cucul_t *);
  63. void cucul_free(cucul_t *);
  64. /* @} */
  65. /** \defgroup canvas Canvas drawing
  66. *
  67. * These functions provide low-level character printing routines and
  68. * higher level graphics functions.
  69. *
  70. * @{ */
  71. void cucul_set_color(cucul_t *, enum cucul_color, enum cucul_color);
  72. char const *cucul_get_color_name(enum cucul_color);
  73. void cucul_putchar(cucul_t *, int, int, char);
  74. void cucul_putstr(cucul_t *, int, int, char const *);
  75. void cucul_printf(cucul_t *, int, int, char const *, ...);
  76. void cucul_get_screen(cucul_t const *, char *);
  77. void cucul_clear(cucul_t *);
  78. void cucul_blit(cucul_t *, int, int, cucul_t const *, cucul_t const *);
  79. /* @} */
  80. /** \defgroup transform Canvas transformation
  81. *
  82. * These functions perform horizontal and vertical canvas flipping.
  83. *
  84. * @{ */
  85. void cucul_invert(cucul_t *);
  86. void cucul_flip(cucul_t *);
  87. void cucul_flop(cucul_t *);
  88. void cucul_rotate(cucul_t *);
  89. /* @} */
  90. /** \defgroup prim Primitives drawing
  91. *
  92. * These functions provide routines for primitive drawing, such as lines,
  93. * boxes, triangles and ellipses.
  94. *
  95. * @{ */
  96. void cucul_draw_line(cucul_t *, int, int, int, int, char const *);
  97. void cucul_draw_polyline(cucul_t *, int const x[], int const y[], int, char const *);
  98. void cucul_draw_thin_line(cucul_t *, int, int, int, int);
  99. void cucul_draw_thin_polyline(cucul_t *, int const x[], int const y[], int);
  100. void cucul_draw_circle(cucul_t *, int, int, int, char const *);
  101. void cucul_draw_ellipse(cucul_t *, int, int, int, int, char const *);
  102. void cucul_draw_thin_ellipse(cucul_t *, int, int, int, int);
  103. void cucul_fill_ellipse(cucul_t *, int, int, int, int, char const *);
  104. void cucul_draw_box(cucul_t *, int, int, int, int, char const *);
  105. void cucul_draw_thin_box(cucul_t *, int, int, int, int);
  106. void cucul_fill_box(cucul_t *, int, int, int, int, char const *);
  107. void cucul_draw_triangle(cucul_t *, int, int, int, int, int, int, char const *);
  108. void cucul_draw_thin_triangle(cucul_t *, int, int, int, int, int, int);
  109. void cucul_fill_triangle(cucul_t *, int, int, int, int, int, int, char const *);
  110. /* @} */
  111. /** \defgroup math Mathematical functions
  112. *
  113. * These functions provide a few useful math-related routines.
  114. *
  115. * @{ */
  116. int cucul_rand(int, int);
  117. unsigned int cucul_sqrt(unsigned int);
  118. /* @} */
  119. /** \defgroup sprite Sprite handling
  120. *
  121. * These functions provide high level routines for sprite loading, animation
  122. * and rendering.
  123. *
  124. * @{ */
  125. struct cucul_sprite;
  126. struct cucul_sprite * cucul_load_sprite(cucul_t *, char const *);
  127. int cucul_get_sprite_frames(cucul_t *, struct cucul_sprite const *);
  128. int cucul_get_sprite_width(cucul_t *, struct cucul_sprite const *, int);
  129. int cucul_get_sprite_height(cucul_t *, struct cucul_sprite const *, int);
  130. int cucul_get_sprite_dx(cucul_t *, struct cucul_sprite const *, int);
  131. int cucul_get_sprite_dy(cucul_t *, struct cucul_sprite const *, int);
  132. void cucul_draw_sprite(cucul_t *, int, int, struct cucul_sprite const *, int);
  133. void cucul_free_sprite(struct cucul_sprite *);
  134. /* @} */
  135. /** \defgroup bitmap Bitmap handling
  136. *
  137. * These functions provide high level routines for bitmap allocation and
  138. * rendering.
  139. *
  140. * @{ */
  141. struct cucul_bitmap;
  142. struct cucul_bitmap *cucul_create_bitmap(unsigned int, unsigned int,
  143. unsigned int, unsigned int,
  144. unsigned int, unsigned int,
  145. unsigned int, unsigned int);
  146. void cucul_set_bitmap_palette(struct cucul_bitmap *,
  147. unsigned int r[], unsigned int g[],
  148. unsigned int b[], unsigned int a[]);
  149. void cucul_set_bitmap_brightness(struct cucul_bitmap *, float);
  150. void cucul_set_bitmap_gamma(struct cucul_bitmap *, float);
  151. void cucul_set_bitmap_contrast(struct cucul_bitmap *, float);
  152. void cucul_set_bitmap_invert(struct cucul_bitmap *, int);
  153. void cucul_set_bitmap_antialias(struct cucul_bitmap *, int);
  154. void cucul_set_bitmap_color(struct cucul_bitmap *, char const *);
  155. char const * const * cucul_get_bitmap_color_list(struct cucul_bitmap const *);
  156. void cucul_set_bitmap_charset(struct cucul_bitmap *, char const *);
  157. char const * const * cucul_get_bitmap_charset_list(struct cucul_bitmap
  158. const *);
  159. void cucul_set_bitmap_dithering(struct cucul_bitmap *, char const *);
  160. char const * const * cucul_get_bitmap_dithering_list(struct cucul_bitmap
  161. const *);
  162. void cucul_draw_bitmap(cucul_t *, int, int, int, int,
  163. struct cucul_bitmap const *, void *);
  164. void cucul_free_bitmap(struct cucul_bitmap *);
  165. /* @} */
  166. /** \defgroup exporter Exporters to various formats
  167. *
  168. * These functions export the current canvas to various text formats. It
  169. * is necessary to call cucul_free_export() to dispose of the data.
  170. *
  171. * @{ */
  172. struct cucul_export
  173. {
  174. unsigned int size;
  175. char *buffer;
  176. };
  177. struct cucul_export * cucul_create_export(cucul_t *, char const *);
  178. char const * const * cucul_get_export_list(void);
  179. void cucul_free_export(struct cucul_export *);
  180. /* @} */
  181. #ifdef __cplusplus
  182. }
  183. #endif
  184. #endif /* __CUCUL_H__ */