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.

caca_internals.h 3.5 KiB

19 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. /*
  2. * libcaca ASCII-Art library
  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 caca_internals.h
  12. * \version \$Id$
  13. * \author Sam Hocevar <sam@zoy.org>
  14. * \brief The \e libcaca private header.
  15. *
  16. * This header contains the private types and functions used by \e libcaca.
  17. */
  18. #ifndef __CACA_INTERNALS_H__
  19. #define __CACA_INTERNALS_H__
  20. #if defined(HAVE_INTTYPES_H) || defined(_DOXYGEN_SKIP_ME)
  21. # include <inttypes.h>
  22. #elif !defined(CUSTOM_INTTYPES)
  23. # define CUSTOM_INTTYPES
  24. typedef unsigned char uint8_t;
  25. typedef unsigned short uint16_t;
  26. typedef unsigned int uint32_t;
  27. #endif
  28. #if !defined(_DOXYGEN_SKIP_ME)
  29. # define EVENTBUF_LEN 10
  30. #endif
  31. /* Graphics driver */
  32. enum caca_driver
  33. {
  34. #if defined(USE_CONIO)
  35. CACA_DRIVER_CONIO = 1,
  36. #endif
  37. #if defined(USE_NCURSES)
  38. CACA_DRIVER_NCURSES = 2,
  39. #endif
  40. #if defined(USE_SLANG)
  41. CACA_DRIVER_SLANG = 3,
  42. #endif
  43. #if defined(USE_X11)
  44. CACA_DRIVER_X11 = 4,
  45. #endif
  46. #if defined(USE_WIN32)
  47. CACA_DRIVER_WIN32 = 5,
  48. #endif
  49. #if defined(USE_GL)
  50. CACA_DRIVER_GL = 6,
  51. #endif
  52. #if defined(USE_NETWORK)
  53. CACA_DRIVER_NETWORK = 7,
  54. #endif
  55. CACA_DRIVER_NONE = 0
  56. };
  57. /* Available drivers */
  58. #if defined(USE_CONIO)
  59. void conio_init_driver(caca_t *);
  60. #endif
  61. #if defined(USE_GL)
  62. void gl_init_driver(caca_t *);
  63. #endif
  64. #if defined(USE_NCURSES)
  65. void ncurses_init_driver(caca_t *);
  66. #endif
  67. #if defined(USE_SLANG)
  68. void slang_init_driver(caca_t *);
  69. #endif
  70. #if defined(USE_WIN32)
  71. void win32_init_driver(caca_t *);
  72. #endif
  73. #if defined(USE_X11)
  74. void x11_init_driver(caca_t *);
  75. #endif
  76. #if defined(USE_NETWORK)
  77. void network_init_driver(caca_t *);
  78. #endif
  79. /* Timer structure */
  80. struct caca_timer
  81. {
  82. int last_sec, last_usec;
  83. };
  84. /* Internal caca context */
  85. struct caca_context
  86. {
  87. /* A link to our cucul canvas */
  88. cucul_t *qq;
  89. /* Device-specific functions */
  90. struct drv
  91. {
  92. enum caca_driver driver;
  93. struct driver_private *p;
  94. int (* init_graphics) (caca_t *);
  95. int (* end_graphics) (caca_t *);
  96. int (* set_window_title) (caca_t *, char const *);
  97. unsigned int (* get_window_width) (caca_t *);
  98. unsigned int (* get_window_height) (caca_t *);
  99. void (* display) (caca_t *);
  100. void (* handle_resize) (caca_t *);
  101. unsigned int (* get_event) (caca_t *);
  102. } drv;
  103. /* Mouse position */
  104. struct mouse
  105. {
  106. unsigned int x, y;
  107. } mouse;
  108. /* Window resize handling */
  109. struct resize
  110. {
  111. int resized; /* A resize event was requested */
  112. //int acked; /* The event has been acknowledged by the user */
  113. unsigned w, h; /* Requested width and height */
  114. } resize;
  115. /* Framerate handling */
  116. unsigned int delay, rendertime;
  117. struct caca_timer timer;
  118. int lastticks;
  119. struct events
  120. {
  121. #if defined(USE_SLANG) || defined(USE_NCURSES) || defined(USE_CONIO)
  122. unsigned int buf[EVENTBUF_LEN];
  123. int queue;
  124. #endif
  125. #if defined(USE_SLANG) || defined(USE_NCURSES)
  126. struct caca_timer key_timer;
  127. unsigned int last_key_ticks;
  128. unsigned int autorepeat_ticks;
  129. unsigned int last_key;
  130. #endif
  131. } events;
  132. };
  133. /* Timer functions */
  134. extern void _caca_sleep(unsigned int);
  135. extern unsigned int _caca_getticks(struct caca_timer *);
  136. #endif /* __CACA_INTERNALS_H__ */