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.

преди 21 години
преди 21 години
преди 19 години
преди 18 години
преди 18 години
преди 18 години
преди 18 години
преди 18 години
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__ */