Subversion Repositories Kolibri OS

Rev

Rev 8210 | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. /*
  2.    Header definitions for the x86 routines for the HERMES library
  3.    Copyright (c) 1998 Christian Nentwich (brn@eleet.mcb.at)
  4.    This source code is licensed under the GNU LGPL
  5.  
  6.    Please refer to the file COPYING.LIB contained in the distribution for
  7.    licensing conditions
  8. */
  9.  
  10. #ifndef __HERMES_HEAD_X86__
  11. #define __HERMES_HEAD_X86__
  12.  
  13.  
  14. #ifdef X86_ASSEMBLER
  15.  
  16. /* If you can't stand IFDEFS, then close your eyes now, please :) */
  17.  
  18. /* Ok, we start with normal function definitions */
  19. #ifdef __cplusplus
  20. extern "C" {
  21. #endif
  22.  
  23.  
  24. void STACKCALL ConvertX86(HermesConverterInterface *);
  25. void STACKCALL ClearX86_32(HermesClearInterface *);
  26. void STACKCALL ClearX86_24(HermesClearInterface *);
  27. void STACKCALL ClearX86_16(HermesClearInterface *);
  28. void STACKCALL ClearX86_8(HermesClearInterface *);
  29.  
  30. int STACKCALL Hermes_X86_CPU();
  31.  
  32. void ConvertX86p32_32BGR888();
  33. void ConvertX86p32_32RGBA888();
  34. void ConvertX86p32_32BGRA888();
  35. void ConvertX86p32_24RGB888();
  36. void ConvertX86p32_24BGR888();
  37. void ConvertX86p32_16RGB565();
  38. void ConvertX86p32_16BGR565();
  39. void ConvertX86p32_16RGB555();
  40. void ConvertX86p32_16BGR555();
  41. void ConvertX86p32_8RGB332();
  42.  
  43. void ConvertX86p16_32RGB888();
  44. void ConvertX86p16_32BGR888();
  45. void ConvertX86p16_32RGBA888();
  46. void ConvertX86p16_32BGRA888();
  47. void ConvertX86p16_24RGB888();
  48. void ConvertX86p16_24BGR888();
  49. void ConvertX86p16_16BGR565();
  50. void ConvertX86p16_16RGB555();
  51. void ConvertX86p16_16BGR555();
  52. void ConvertX86p16_8RGB332();
  53.  
  54. void CopyX86p_4byte();
  55. void CopyX86p_3byte();
  56. void CopyX86p_2byte();
  57. void CopyX86p_1byte();
  58.  
  59. void ConvertX86pI8_32();
  60. void ConvertX86pI8_24();
  61. void ConvertX86pI8_16();
  62.  
  63. extern int ConvertX86p16_32RGB888_LUT_X86[512];
  64. extern int ConvertX86p16_32BGR888_LUT_X86[512];
  65. extern int ConvertX86p16_32RGBA888_LUT_X86[512];
  66. extern int ConvertX86p16_32BGRA888_LUT_X86[512];
  67.  
  68. #ifdef __cplusplus
  69. }
  70. #endif
  71.  
  72.  
  73.  
  74.  
  75. /* Now fix up the ELF underscore problem */
  76.  
  77. #if (defined(__ELF__) && defined(__GNUC__)) || defined(__SUNPRO_C)
  78.   #ifdef __cplusplus
  79.   extern "C" {
  80.   #endif
  81.  
  82.   extern int _Hermes_X86_CPU();
  83.  
  84.   extern void _ConvertX86(HermesConverterInterface *);
  85.  
  86.   extern void _ConvertX86p32_32BGR888();
  87.   extern void _ConvertX86p32_32RGBA888();
  88.   extern void _ConvertX86p32_32BGRA888();
  89.   extern void _ConvertX86p32_24RGB888();
  90.   extern void _ConvertX86p32_24BGR888();
  91.   extern void _ConvertX86p32_16RGB565();
  92.   extern void _ConvertX86p32_16BGR565();
  93.   extern void _ConvertX86p32_16RGB555();
  94.   extern void _ConvertX86p32_16BGR555();
  95.   extern void _ConvertX86p32_8RGB332();
  96.  
  97.   extern void _ConvertX86p16_16BGR565();
  98.   extern void _ConvertX86p16_16RGB555();
  99.   extern void _ConvertX86p16_16BGR555();
  100.   extern void _ConvertX86p16_8RGB332();
  101.  
  102.  
  103.   #define Hermes_X86_CPU _Hermes_X86_CPU
  104.  
  105.   #define ConvertX86 _ConvertX86
  106.  
  107.   #define ConvertX86p32_32BGR888 _ConvertX86p32_32BGR888
  108.   #define ConvertX86p32_32RGBA888 _ConvertX86p32_32RGBA888
  109.   #define ConvertX86p32_32BGRA888 _ConvertX86p32_32BGRA888
  110.   #define ConvertX86p32_24RGB888 _ConvertX86p32_24RGB888
  111.   #define ConvertX86p32_24BGR888 _ConvertX86p32_24BGR888
  112.   #define ConvertX86p32_16RGB565 _ConvertX86p32_16RGB565
  113.   #define ConvertX86p32_16BGR565 _ConvertX86p32_16BGR565
  114.   #define ConvertX86p32_16RGB555 _ConvertX86p32_16RGB555
  115.   #define ConvertX86p32_16BGR555 _ConvertX86p32_16BGR555
  116.   #define ConvertX86p32_8RGB332 _ConvertX86p32_8RGB332
  117.  
  118.   #define ConvertX86p16_16BGR565 _ConvertX86p16_16BGR565
  119.   #define ConvertX86p16_16RGB555 _ConvertX86p16_16RGB555
  120.   #define ConvertX86p16_16BGR555 _ConvertX86p16_16BGR555
  121.   #define ConvertX86p16_8RGB332 _ConvertX86p16_8RGB332
  122.  
  123.  
  124.   #ifdef __cplusplus
  125.   }
  126.   #endif
  127.  
  128. #endif /* ELF & GNU */
  129.  
  130.  
  131.  
  132. /* Make it run with WATCOM C */
  133. #ifdef __WATCOMC__
  134. #pragma warning 601 9
  135.  
  136. #pragma aux Hermes_X86_CPU "_*"
  137.  
  138. #pragma aux ConvertX86 "_*" modify [EAX EBX ECX EDX ESI EDI]
  139. #pragma aux ClearX86_32 "_*" modify [EAX EBX ECX EDX ESI EDI]
  140. #pragma aux ClearX86_24 "_*" modify [EAX EBX ECX EDX ESI EDI]
  141. #pragma aux ClearX86_16 "_*" modify [EAX EBX ECX EDX ESI EDI]
  142. #pragma aux ClearX86_8 "_*" modify [EAX EBX ECX EDX ESI EDI]
  143.  
  144. #pragma aux ConvertX86p32_32BGR888 "_*"
  145. #pragma aux ConvertX86p32_32RGBA888 "_*"
  146. #pragma aux ConvertX86p32_32BGRA888 "_*"
  147. #pragma aux ConvertX86p32_24RGB888 "_*"
  148. #pragma aux ConvertX86p32_24BGR888 "_*"
  149. #pragma aux ConvertX86p32_16RGB565 "_*"
  150. #pragma aux ConvertX86p32_16BGR565 "_*"
  151. #pragma aux ConvertX86p32_16RGB555 "_*"
  152. #pragma aux ConvertX86p32_16BGR555 "_*"
  153. #pragma aux ConvertX86p32_8RGB332 "_*"
  154.  
  155. #pragma aux ConvertX86p16_32RGB888 "_*"
  156. #pragma aux ConvertX86p16_32BGR888 "_*"
  157. #pragma aux ConvertX86p16_32RGBA888 "_*"
  158. #pragma aux ConvertX86p16_32BGRA888 "_*"
  159. #pragma aux ConvertX86p16_24RGB888 "_*"
  160. #pragma aux ConvertX86p16_24BGR888 "_*"
  161. #pragma aux ConvertX86p16_16BGR565 "_*"
  162. #pragma aux ConvertX86p16_16RGB555 "_*"
  163. #pragma aux ConvertX86p16_16BGR555 "_*"
  164. #pragma aux ConvertX86p16_8RGB332 "_*"
  165.  
  166. #pragma aux CopyX86p_4byte "_*"
  167. #pragma aux CopyX86p_3byte "_*"
  168. #pragma aux CopyX86p_2byte "_*"
  169. #pragma aux CopyX86p_1byte "_*"
  170.  
  171. #pragma aux ConvertX86pI8_32 "_*"
  172. #pragma aux ConvertX86pI8_24 "_*"
  173. #pragma aux ConvertX86pI8_16 "_*"
  174.  
  175. #pragma aux ConvertX86p16_32RGB888_LUT_X86 "_*"
  176. #pragma aux ConvertX86p16_32BGR888_LUT_X86 "_*"
  177. #pragma aux ConvertX86p16_32RGBA888_LUT_X86 "_*"
  178. #pragma aux ConvertX86p16_32BGRA888_LUT_X86 "_*"
  179.  
  180. #endif /* __WATCOMC__ */
  181.  
  182.  
  183. #endif /* X86_ASSEMBLER */
  184.  
  185.  
  186. #endif
  187.