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 години
преди 19 години
преди 19 години
преди 19 години
преди 19 години
преди 19 години
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  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. CACA_DRIVER_NONE = 0
  53. };
  54. /* Available drivers */
  55. #if defined(USE_CONIO)
  56. void conio_init_driver(caca_t *);
  57. #endif
  58. #if defined(USE_GL)
  59. void gl_init_driver(caca_t *);
  60. #endif
  61. #if defined(USE_NCURSES)
  62. void ncurses_init_driver(caca_t *);
  63. #endif
  64. #if defined(USE_SLANG)
  65. void slang_init_driver(caca_t *);
  66. #endif
  67. #if defined(USE_WIN32)
  68. void win32_init_driver(caca_t *);
  69. #endif
  70. #if defined(USE_X11)
  71. void x11_init_driver(caca_t *);
  72. #endif
  73. /* Timer structure */
  74. struct caca_timer
  75. {
  76. int last_sec, last_usec;
  77. };
  78. /* Internal caca context */
  79. struct caca_context
  80. {
  81. /* A link to our cucul canvas */
  82. cucul_t *qq;
  83. /* Device-specific functions */
  84. struct drv
  85. {
  86. enum caca_driver driver;
  87. struct driver_private *p;
  88. int (* init_graphics) (caca_t *);
  89. int (* end_graphics) (caca_t *);
  90. int (* set_window_title) (caca_t *, char const *);
  91. unsigned int (* get_window_width) (caca_t *);
  92. unsigned int (* get_window_height) (caca_t *);
  93. void (* display) (caca_t *);
  94. void (* handle_resize) (caca_t *, unsigned int *, unsigned int *);
  95. unsigned int (* get_event) (caca_t *);
  96. } drv;
  97. /* Mouse position */
  98. struct mouse
  99. {
  100. unsigned int x, y;
  101. } mouse;
  102. /* Window resize handling */
  103. int resize;
  104. int resize_event;
  105. /* Framerate handling */
  106. unsigned int delay, rendertime;
  107. struct caca_timer timer;
  108. int lastticks;
  109. struct events
  110. {
  111. #if defined(USE_SLANG) || defined(USE_NCURSES) || defined(USE_CONIO)
  112. unsigned int buf[EVENTBUF_LEN];
  113. int queue;
  114. #endif
  115. #if defined(USE_SLANG) || defined(USE_NCURSES)
  116. struct caca_timer key_timer;
  117. unsigned int last_key_ticks;
  118. unsigned int autorepeat_ticks;
  119. unsigned int last_key;
  120. #endif
  121. } events;
  122. };
  123. /* Timer functions */
  124. extern void _caca_sleep(unsigned int);
  125. extern unsigned int _caca_getticks(struct caca_timer *);
  126. #endif /* __CACA_INTERNALS_H__ */