Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 
 
 

209 Zeilen
7.7 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. enum cucul_color cucul_get_fg_color(cucul_t const *);
  73. enum cucul_color cucul_get_bg_color(cucul_t const *);
  74. char const *cucul_get_color_name(enum cucul_color);
  75. void cucul_putchar(cucul_t *, int, int, char);
  76. void cucul_putstr(cucul_t *, int, int, char const *);
  77. void cucul_printf(cucul_t *, int, int, char const *, ...);
  78. void cucul_get_screen(cucul_t const *, char *);
  79. void cucul_clear(cucul_t *);
  80. void cucul_blit(cucul_t *, int, int, cucul_t const *, cucul_t const *);
  81. /* @} */
  82. /** \defgroup transform Canvas transformation
  83. *
  84. * These functions perform horizontal and vertical canvas flipping.
  85. *
  86. * @{ */
  87. void cucul_invert(cucul_t *);
  88. void cucul_flip(cucul_t *);
  89. void cucul_flop(cucul_t *);
  90. void cucul_rotate(cucul_t *);
  91. /* @} */
  92. /** \defgroup prim Primitives drawing
  93. *
  94. * These functions provide routines for primitive drawing, such as lines,
  95. * boxes, triangles and ellipses.
  96. *
  97. * @{ */
  98. void cucul_draw_line(cucul_t *, int, int, int, int, char const *);
  99. void cucul_draw_polyline(cucul_t *, int const x[], int const y[], int, char const *);
  100. void cucul_draw_thin_line(cucul_t *, int, int, int, int);
  101. void cucul_draw_thin_polyline(cucul_t *, int const x[], int const y[], int);
  102. void cucul_draw_circle(cucul_t *, int, int, int, char const *);
  103. void cucul_draw_ellipse(cucul_t *, int, int, int, int, char const *);
  104. void cucul_draw_thin_ellipse(cucul_t *, int, int, int, int);
  105. void cucul_fill_ellipse(cucul_t *, int, int, int, int, char const *);
  106. void cucul_draw_box(cucul_t *, int, int, int, int, char const *);
  107. void cucul_draw_thin_box(cucul_t *, int, int, int, int);
  108. void cucul_fill_box(cucul_t *, int, int, int, int, char const *);
  109. void cucul_draw_triangle(cucul_t *, int, int, int, int, int, int, char const *);
  110. void cucul_draw_thin_triangle(cucul_t *, int, int, int, int, int, int);
  111. void cucul_fill_triangle(cucul_t *, int, int, int, int, int, int, char const *);
  112. /* @} */
  113. /** \defgroup math Mathematical functions
  114. *
  115. * These functions provide a few useful math-related routines.
  116. *
  117. * @{ */
  118. int cucul_rand(int, int);
  119. unsigned int cucul_sqrt(unsigned int);
  120. /* @} */
  121. /** \defgroup sprite Sprite handling
  122. *
  123. * These functions provide high level routines for sprite loading, animation
  124. * and rendering.
  125. *
  126. * @{ */
  127. struct cucul_sprite;
  128. struct cucul_sprite * cucul_load_sprite(cucul_t *, char const *);
  129. int cucul_get_sprite_frames(cucul_t *, struct cucul_sprite const *);
  130. int cucul_get_sprite_width(cucul_t *, struct cucul_sprite const *, int);
  131. int cucul_get_sprite_height(cucul_t *, struct cucul_sprite const *, int);
  132. int cucul_get_sprite_dx(cucul_t *, struct cucul_sprite const *, int);
  133. int cucul_get_sprite_dy(cucul_t *, struct cucul_sprite const *, int);
  134. void cucul_draw_sprite(cucul_t *, int, int, struct cucul_sprite const *, int);
  135. void cucul_free_sprite(struct cucul_sprite *);
  136. /* @} */
  137. /** \defgroup bitmap Bitmap handling
  138. *
  139. * These functions provide high level routines for bitmap allocation and
  140. * rendering.
  141. *
  142. * @{ */
  143. struct cucul_bitmap;
  144. struct cucul_bitmap *cucul_create_bitmap(unsigned int, unsigned int,
  145. unsigned int, unsigned int,
  146. unsigned int, unsigned int,
  147. unsigned int, unsigned int);
  148. void cucul_set_bitmap_palette(struct cucul_bitmap *,
  149. unsigned int r[], unsigned int g[],
  150. unsigned int b[], unsigned int a[]);
  151. void cucul_set_bitmap_brightness(struct cucul_bitmap *, float);
  152. void cucul_set_bitmap_gamma(struct cucul_bitmap *, float);
  153. void cucul_set_bitmap_contrast(struct cucul_bitmap *, float);
  154. void cucul_set_bitmap_invert(struct cucul_bitmap *, int);
  155. void cucul_set_bitmap_antialias(struct cucul_bitmap *, int);
  156. void cucul_set_bitmap_color(struct cucul_bitmap *, char const *);
  157. char const * const * cucul_get_bitmap_color_list(struct cucul_bitmap const *);
  158. void cucul_set_bitmap_charset(struct cucul_bitmap *, char const *);
  159. char const * const * cucul_get_bitmap_charset_list(struct cucul_bitmap
  160. const *);
  161. void cucul_set_bitmap_dithering(struct cucul_bitmap *, char const *);
  162. char const * const * cucul_get_bitmap_dithering_list(struct cucul_bitmap
  163. const *);
  164. void cucul_draw_bitmap(cucul_t *, int, int, int, int,
  165. struct cucul_bitmap const *, void *);
  166. void cucul_free_bitmap(struct cucul_bitmap *);
  167. /* @} */
  168. /** \defgroup exporter Exporters to various formats
  169. *
  170. * These functions export the current canvas to various text formats. It
  171. * is necessary to call cucul_free_export() to dispose of the data.
  172. *
  173. * @{ */
  174. struct cucul_export
  175. {
  176. unsigned int size;
  177. char *buffer;
  178. };
  179. struct cucul_export * cucul_create_export(cucul_t *, char const *);
  180. char const * const * cucul_get_export_list(void);
  181. void cucul_free_export(struct cucul_export *);
  182. /* @} */
  183. #ifdef __cplusplus
  184. }
  185. #endif
  186. #endif /* __CUCUL_H__ */