factconv.inc 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482
  1. {
  2. Free Pascal port of the Hermes C library.
  3. Copyright (C) 2001-2003 Nikolay Nikolov ([email protected])
  4. Original C version by Christian Nentwich ([email protected])
  5. This library is free software; you can redistribute it and/or
  6. modify it under the terms of the GNU Lesser General Public
  7. License as published by the Free Software Foundation; either
  8. version 2.1 of the License, or (at your option) any later version.
  9. This library is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. Lesser General Public License for more details.
  13. You should have received a copy of the GNU Lesser General Public
  14. License along with this library; if not, write to the Free Software
  15. Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  16. }
  17. { Placeholder converter. This is for things like 8 bit converters that have
  18. one main loop and NO scanline conversion function as opposed to most others
  19. which use the generic loop.
  20. There needs to be a function assigned to the scanline loop however,
  21. otherwise the converter will fail a test in Convert.c. This is the easiest
  22. way. Do NOT use NotApplicable as NotYetImplemented ! }
  23. Procedure NotApplicable(source, dest : Pchar8; count, inc_source : DWord); CDecl;
  24. Begin
  25. If source <> Nil Then;
  26. If dest <> Nil Then;
  27. If count <> 0 Then;
  28. If inc_source <> 0 Then;
  29. End;
  30. { Factory converter array, holds ALL converters available from HERMES. Note
  31. that converters have to be assigned IN ORDER of priority for processors
  32. that can run different converters.
  33. Thus, for an Intel MMX Pentium, the order would be:
  34. - MMX converters
  35. - X86 converters
  36. - Pascal converters
  37. If someone wrote a P2 or P3 converter, if would be added even further up. }
  38. Const
  39. Factory_NumConverters = 45
  40. {$IFDEF I386_ASSEMBLER}+27{$ENDIF I386_ASSEMBLER};
  41. Factory_Converters : Array[0..Factory_NumConverters - 1] Of THermesFactoryStruct =
  42. (
  43. {$IFDEF I386_ASSEMBLER}
  44. { ------ From 32 RGB 888 - MMX PENTIUM II ---- }
  45. (s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  46. d_bits:24;d_idx:False;d_r:$ff0000;d_g:$ff00;d_b:$ff;d_a:0;
  47. loopnormal:@ConvertMMX;loopstretch:Nil;normal:@ConvertMMXpII32_24RGB888;
  48. stretch:Nil;dither:Nil;ditherstretch:Nil;processor:PROC_MMX_PENTIUM),
  49. (s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  50. d_bits:16;d_idx:False;d_r:$f800;d_g:$7e0;d_b:$1f;d_a:0;
  51. loopnormal:@ConvertMMX;loopstretch:Nil;normal:@ConvertMMXpII32_16RGB565;
  52. stretch:Nil;dither:Nil;ditherstretch:Nil;processor:PROC_MMX_PENTIUM),
  53. (s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  54. d_bits:16;d_idx:False;d_r:$1f;d_g:$7e0;d_b:$f800;d_a:0;
  55. loopnormal:@ConvertMMX;loopstretch:Nil;normal:@ConvertMMXpII32_16BGR565;
  56. stretch:Nil;dither:Nil;ditherstretch:Nil;processor:PROC_MMX_PENTIUM),
  57. (s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  58. d_bits:16;d_idx:False;d_r:$7c00;d_g:$3e0;d_b:$1f;d_a:0;
  59. loopnormal:@ConvertMMX;loopstretch:Nil;normal:@ConvertMMXpII32_16RGB555;
  60. stretch:Nil;dither:Nil;ditherstretch:Nil;processor:PROC_MMX_PENTIUM),
  61. (s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  62. d_bits:16;d_idx:False;d_r:$1f;d_g:$3e0;d_b:$7c00;d_a:0;
  63. loopnormal:@ConvertMMX;loopstretch:Nil;normal:@ConvertMMXpII32_16BGR555;
  64. stretch:Nil;dither:Nil;ditherstretch:Nil;processor:PROC_MMX_PENTIUM),
  65. { ------ From 32 RGB 888 - MMX PENTIUM ------- }
  66. (s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  67. d_bits:16;d_idx:False;d_r:$7c00;d_g:$3e0;d_b:$1f;d_a:0;
  68. loopnormal:@ConvertMMX;loopstretch:Nil;normal:@ConvertMMXpII32_16RGB555;
  69. stretch:Nil;dither:Nil;ditherstretch:Nil;processor:PROC_MMX_PENTIUM),
  70. { ------ From 32 RGB 888 - X86 PENTIUM ------- }
  71. (s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  72. d_bits:32;d_idx:False;d_r:$ff;d_g:$ff00;d_b:$ff0000;d_a:0;
  73. loopnormal:@ConvertX86;loopstretch:Nil;normal:@ConvertX86p32_32BGR888;
  74. stretch:Nil;dither:Nil;ditherstretch:Nil;processor:PROC_X86_PENTIUM),
  75. (s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  76. d_bits:32;d_idx:False;d_r:$ff000000;d_g:$ff0000;d_b:$ff00;d_a:$ff;
  77. loopnormal:@ConvertX86;loopstretch:Nil;normal:@ConvertX86p32_32RGBA888;
  78. stretch:Nil;dither:Nil;ditherstretch:Nil;processor:PROC_X86_PENTIUM),
  79. (s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  80. d_bits:32;d_idx:False;d_r:$ff00;d_g:$ff0000;d_b:$ff000000;d_a:$ff;
  81. loopnormal:@ConvertX86;loopstretch:Nil;normal:@ConvertX86p32_32BGRA888;
  82. stretch:Nil;dither:Nil;ditherstretch:Nil;processor:PROC_X86_PENTIUM),
  83. (s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  84. d_bits:24;d_idx:False;d_r:$ff0000;d_g:$ff00;d_b:$ff;d_a:0;
  85. loopnormal:@ConvertX86;loopstretch:Nil;normal:@ConvertX86p32_24RGB888;
  86. stretch:Nil;dither:Nil;ditherstretch:Nil;processor:PROC_X86_PENTIUM),
  87. (s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  88. d_bits:24;d_idx:False;d_r:$ff;d_g:$ff00;d_b:$ff0000;d_a:0;
  89. loopnormal:@ConvertX86;loopstretch:Nil;normal:@ConvertX86p32_24BGR888;
  90. stretch:Nil;dither:Nil;ditherstretch:Nil;processor:PROC_X86_PENTIUM),
  91. (s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  92. d_bits:16;d_idx:False;d_r:$f800;d_g:$7e0;d_b:$1f;d_a:0;
  93. loopnormal:@ConvertX86;loopstretch:@ConvertX86Stretch;
  94. normal:@ConvertX86p32_16RGB565;stretch:@ConvertX86p32_16RGB565_S;
  95. dither:Nil;ditherstretch:Nil;processor:PROC_X86_PENTIUM),
  96. (s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  97. d_bits:16;d_idx:False;d_r:$1f;d_g:$7e0;d_b:$f800;d_a:0;
  98. loopnormal:@ConvertX86;loopstretch:Nil;normal:@ConvertX86p32_16BGR565;
  99. stretch:Nil;dither:Nil;ditherstretch:Nil;processor:PROC_X86_PENTIUM),
  100. (s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  101. d_bits:16;d_idx:False;d_r:$7c00;d_g:$3e0;d_b:$1f;d_a:0;
  102. loopnormal:@ConvertX86;loopstretch:Nil;normal:@ConvertX86p32_16RGB555;
  103. stretch:Nil;dither:Nil;ditherstretch:Nil;processor:PROC_X86_PENTIUM),
  104. (s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  105. d_bits:16;d_idx:False;d_r:$1f;d_g:$3e0;d_b:$7c00;d_a:0;
  106. loopnormal:@ConvertX86;loopstretch:Nil;normal:@ConvertX86p32_16BGR555;
  107. stretch:Nil;dither:Nil;ditherstretch:Nil;processor:PROC_X86_PENTIUM),
  108. (s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  109. d_bits:8;d_idx:False;d_r:$e0;d_g:$1c;d_b:$3;d_a:0;
  110. loopnormal:@ConvertX86;loopstretch:Nil;normal:@ConvertX86p32_8RGB332;
  111. stretch:Nil;dither:Nil;ditherstretch:Nil;processor:PROC_X86_PENTIUM),
  112. { ------ From 16 RGB 565 - X86 PENTIUM ------- }
  113. (s_bits:16;s_idx:False;s_r:$f800;s_g:$7e0;s_b:$1f;s_a:0;
  114. d_bits:32;d_idx:False;d_r:$ff0000;d_g:$ff00;d_b:$ff;d_a:0;
  115. loopnormal:@ConvertX86;loopstretch:Nil;normal:@ConvertX86p16_32RGB888;
  116. stretch:Nil;dither:Nil;ditherstretch:Nil;processor:PROC_X86_PENTIUM),
  117. (s_bits:16;s_idx:False;s_r:$f800;s_g:$7e0;s_b:$1f;s_a:0;
  118. d_bits:32;d_idx:False;d_r:$ff;d_g:$ff00;d_b:$ff0000;d_a:0;
  119. loopnormal:@ConvertX86;loopstretch:Nil;normal:@ConvertX86p16_32BGR888;
  120. stretch:Nil;dither:Nil;ditherstretch:Nil;processor:PROC_X86_PENTIUM),
  121. (s_bits:16;s_idx:False;s_r:$f800;s_g:$7e0;s_b:$1f;s_a:0;
  122. d_bits:32;d_idx:False;d_r:$ff000000;d_g:$ff0000;d_b:$ff00;d_a:$ff;
  123. loopnormal:@ConvertX86;loopstretch:Nil;normal:@ConvertX86p16_32RGBA888;
  124. stretch:Nil;dither:Nil;ditherstretch:Nil;processor:PROC_X86_PENTIUM),
  125. (s_bits:16;s_idx:False;s_r:$f800;s_g:$7e0;s_b:$1f;s_a:0;
  126. d_bits:32;d_idx:False;d_r:$ff00;d_g:$ff0000;d_b:$ff000000;d_a:$ff;
  127. loopnormal:@ConvertX86;loopstretch:Nil;normal:@ConvertX86p16_32BGRA888;
  128. stretch:Nil;dither:Nil;ditherstretch:Nil;processor:PROC_X86_PENTIUM),
  129. (s_bits:16;s_idx:False;s_r:$f800;s_g:$7e0;s_b:$1f;s_a:0;
  130. d_bits:24;d_idx:False;d_r:$ff0000;d_g:$ff00;d_b:$ff;d_a:0;
  131. loopnormal:@ConvertX86;loopstretch:Nil;normal:@ConvertX86p16_24RGB888;
  132. stretch:Nil;dither:Nil;ditherstretch:Nil;processor:PROC_X86_PENTIUM),
  133. (s_bits:16;s_idx:False;s_r:$f800;s_g:$7e0;s_b:$1f;s_a:0;
  134. d_bits:24;d_idx:False;d_r:$ff;d_g:$ff00;d_b:$ff0000;d_a:0;
  135. loopnormal:@ConvertX86;loopstretch:Nil;normal:@ConvertX86p16_24BGR888;
  136. stretch:Nil;dither:Nil;ditherstretch:Nil;processor:PROC_X86_PENTIUM),
  137. (s_bits:16;s_idx:False;s_r:$f800;s_g:$7e0;s_b:$1f;s_a:0;
  138. d_bits:16;d_idx:False;d_r:$1f;d_g:$7e0;d_b:$f800;d_a:0;
  139. loopnormal:@ConvertX86;loopstretch:Nil;normal:@ConvertX86p16_16BGR565;
  140. stretch:Nil;dither:Nil;ditherstretch:Nil;processor:PROC_X86_PENTIUM),
  141. (s_bits:16;s_idx:False;s_r:$f800;s_g:$7e0;s_b:$1f;s_a:0;
  142. d_bits:16;d_idx:False;d_r:$7c00;d_g:$3e0;d_b:$1f;d_a:0;
  143. loopnormal:@ConvertX86;loopstretch:Nil;normal:@ConvertX86p16_16RGB555;
  144. stretch:Nil;dither:Nil;ditherstretch:Nil;processor:PROC_X86_PENTIUM),
  145. (s_bits:16;s_idx:False;s_r:$f800;s_g:$7e0;s_b:$1f;s_a:0;
  146. d_bits:16;d_idx:False;d_r:$1f;d_g:$3e0;d_b:$7c00;d_a:0;
  147. loopnormal:@ConvertX86;loopstretch:Nil;normal:@ConvertX86p16_16BGR555;
  148. stretch:Nil;dither:Nil;ditherstretch:Nil;processor:PROC_X86_PENTIUM),
  149. (s_bits:16;s_idx:False;s_r:$f800;s_g:$7e0;s_b:$1f;s_a:0;
  150. d_bits:8;d_idx:False;d_r:$e0;d_g:$1c;d_b:$3;d_a:0;
  151. loopnormal:@ConvertX86;loopstretch:Nil;normal:@ConvertX86p16_8RGB332;
  152. stretch:Nil;dither:Nil;ditherstretch:Nil;processor:PROC_X86_PENTIUM),
  153. (s_bits:8;s_idx:True;s_r:0;s_g:0;s_b:0;s_a:0;
  154. d_bits:16;d_idx:False;d_r:0;d_g:0;d_b:0;d_a:0;
  155. loopnormal:@ConvertX86;loopstretch:Nil;normal:@ConvertX86pI8_16;
  156. stretch:Nil;dither:Nil;ditherstretch:Nil;processor:PROC_X86_PENTIUM),
  157. {$ENDIF I386_ASSEMBLER}
  158. { ------ From 32 RGBA 8888 ---- }
  159. {
  160. (s_bits:32;s_idx:False;s_r:$ff000000;s_g:$ff0000;s_b:$ff00;s_a:$ff;
  161. d_bits:32;d_idx:False;d_r:$ff000000;d_g:$ff0000;d_b:$ff00;d_a:$ff;
  162. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  163. normal:@ConvertP_32rgb888_32bgr888;stretch:@ConvertP_32rgb888_32bgr888_S;
  164. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  165. }
  166. { ------ From 32 RGB 888 ------- }
  167. (s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  168. d_bits:32;d_idx:False;d_r:$ff;d_g:$ff00;d_b:$ff0000;d_a:0;
  169. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  170. normal:@ConvertP_32rgb888_32bgr888;stretch:@ConvertP_32rgb888_32bgr888_S;
  171. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  172. (s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  173. d_bits:32;d_idx:False;d_r:$ff000000;d_g:$ff0000;d_b:$ff00;d_a:$ff;
  174. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  175. normal:@ConvertP_32rgb888_32rgba888;stretch:@ConvertP_32rgb888_32rgba888_S;
  176. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  177. (s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  178. d_bits:32;d_idx:False;d_r:$ff00;d_g:$ff0000;d_b:$ff000000;d_a:$ff;
  179. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  180. normal:@ConvertP_32rgb888_32bgra888;stretch:@ConvertP_32rgb888_32bgra888_S;
  181. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  182. (s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  183. d_bits:24;d_idx:False;d_r:$ff0000;d_g:$ff00;d_b:$ff;d_a:0;
  184. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  185. normal:@ConvertP_32rgb888_24rgb888;stretch:@ConvertP_32rgb888_24rgb888_S;
  186. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  187. (s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  188. d_bits:24;d_idx:False;d_r:$ff;d_g:$ff00;d_b:$ff0000;d_a:0;
  189. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  190. normal:@ConvertP_32rgb888_24bgr888;stretch:@ConvertP_32rgb888_24bgr888_S;
  191. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  192. (s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  193. d_bits:16;d_idx:False;d_r:$f800;d_g:$7e0;d_b:$1f;d_a:0;
  194. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  195. normal:@ConvertP_32rgb888_16rgb565;stretch:@ConvertP_32rgb888_16rgb565_S;
  196. dither:@ConvertP_32rgb888_16rgb565_dither;ditherstretch:Nil;
  197. processor:PROC_GENERIC),
  198. (s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  199. d_bits:16;d_idx:False;d_r:$1f;d_g:$7e0;d_b:$f800;d_a:0;
  200. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  201. normal:@ConvertP_32rgb888_16bgr565;stretch:@ConvertP_32rgb888_16bgr565_S;
  202. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  203. (s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  204. d_bits:16;d_idx:False;d_r:$7c00;d_g:$3e0;d_b:$1f;d_a:0;
  205. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  206. normal:@ConvertP_32rgb888_16rgb555;stretch:@ConvertP_32rgb888_16rgb555_S;
  207. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  208. (s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  209. d_bits:16;d_idx:False;d_r:$1f;d_g:$3e0;d_b:$7c00;d_a:0;
  210. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  211. normal:@ConvertP_32rgb888_16bgr555;stretch:@ConvertP_32rgb888_16bgr555_S;
  212. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  213. (s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  214. d_bits:8;d_idx:False;d_r:$e0;d_g:$1c;d_b:$3;d_a:0;
  215. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  216. normal:@ConvertP_32rgb888_8rgb332;stretch:@ConvertP_32rgb888_8rgb332_S;
  217. dither:@ConvertP_32rgb888_8rgb332_dither;
  218. ditherstretch:Nil;processor:PROC_GENERIC),
  219. { ------ From 32 RGB MUHMU ------- }
  220. (s_bits:32;s_idx:False;s_r:$ff Shl 20;s_g:$ff Shl 10;s_b:$ff;s_a:0;
  221. d_bits:32;d_idx:False;d_r:$ff0000;d_g:$ff00;d_b:$ff;d_a:0;
  222. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  223. normal:@ConvertP_muhmu32_32rgb888;stretch:@ConvertP_muhmu32_32rgb888_S;
  224. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  225. (s_bits:32;s_idx:False;s_r:$ff Shl 20;s_g:$ff Shl 10;s_b:$ff;s_a:0;
  226. d_bits:32;d_idx:False;d_r:$ff;d_g:$ff00;d_b:$ff0000;d_a:0;
  227. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  228. normal:@ConvertP_muhmu32_32bgr888;stretch:@ConvertP_muhmu32_32bgr888_S;
  229. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  230. (s_bits:32;s_idx:False;s_r:$ff Shl 20;s_g:$ff Shl 10;s_b:$ff;s_a:0;
  231. d_bits:32;d_idx:False;d_r:$ff000000;d_g:$ff0000;d_b:$ff00;d_a:$ff;
  232. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  233. normal:@ConvertP_muhmu32_32rgba888;stretch:@ConvertP_muhmu32_32rgba888_S;
  234. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  235. (s_bits:32;s_idx:False;s_r:$ff Shl 20;s_g:$ff Shl 10;s_b:$ff;s_a:0;
  236. d_bits:32;d_idx:False;d_r:$ff00;d_g:$ff0000;d_b:$ff000000;d_a:$ff;
  237. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  238. normal:@ConvertP_muhmu32_32bgra888;stretch:@ConvertP_muhmu32_32bgra888_S;
  239. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  240. (s_bits:32;s_idx:False;s_r:$ff Shl 20;s_g:$ff Shl 10;s_b:$ff;s_a:0;
  241. d_bits:24;d_idx:False;d_r:$ff0000;d_g:$ff00;d_b:$ff;d_a:0;
  242. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  243. normal:@ConvertP_muhmu32_24rgb888;stretch:@ConvertP_muhmu32_24rgb888_S;
  244. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  245. (s_bits:32;s_idx:False;s_r:$ff Shl 20;s_g:$ff Shl 10;s_b:$ff;s_a:0;
  246. d_bits:24;d_idx:False;d_r:$ff;d_g:$ff00;d_b:$ff0000;d_a:0;
  247. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  248. normal:@ConvertP_muhmu32_24bgr888;stretch:@ConvertP_muhmu32_24bgr888_S;
  249. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  250. (s_bits:32;s_idx:False;s_r:$ff Shl 20;s_g:$ff Shl 10;s_b:$ff;s_a:0;
  251. d_bits:16;d_idx:False;d_r:$f800;d_g:$7e0;d_b:$1f;d_a:0;
  252. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  253. normal:@ConvertP_muhmu32_16rgb565;stretch:@ConvertP_muhmu32_16rgb565_S;
  254. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  255. (s_bits:32;s_idx:False;s_r:$ff Shl 20;s_g:$ff Shl 10;s_b:$ff;s_a:0;
  256. d_bits:16;d_idx:False;d_r:$1f;d_g:$7e0;d_b:$f800;d_a:0;
  257. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  258. normal:@ConvertP_muhmu32_16bgr565;stretch:@ConvertP_muhmu32_16bgr565_S;
  259. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  260. (s_bits:32;s_idx:False;s_r:$ff Shl 20;s_g:$ff Shl 10;s_b:$ff;s_a:0;
  261. d_bits:16;d_idx:False;d_r:$7c00;d_g:$3e0;d_b:$1f;d_a:0;
  262. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  263. normal:@ConvertP_muhmu32_16rgb555;stretch:@ConvertP_muhmu32_16rgb555_S;
  264. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  265. (s_bits:32;s_idx:False;s_r:$ff Shl 20;s_g:$ff Shl 10;s_b:$ff;s_a:0;
  266. d_bits:16;d_idx:False;d_r:$1f;d_g:$3e0;d_b:$7c00;d_a:0;
  267. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  268. normal:@ConvertP_muhmu32_16bgr555;stretch:@ConvertP_muhmu32_16bgr555_S;
  269. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  270. (s_bits:32;s_idx:False;s_r:$ff Shl 20;s_g:$ff Shl 10;s_b:$ff;s_a:0;
  271. d_bits:8;d_idx:False;d_r:$e0;d_g:$1c;d_b:$3;d_a:0;
  272. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  273. normal:@ConvertP_muhmu32_8rgb332;stretch:@ConvertP_muhmu32_8rgb332_S;
  274. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  275. { ------ From 24 RGB 888 ------- }
  276. (s_bits:24;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  277. d_bits:32;d_idx:False;d_r:$ff0000;d_g:$ff00;d_b:$ff;d_a:0;
  278. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  279. normal:@ConvertP_24rgb888_32rgb888;stretch:@ConvertP_24rgb888_32rgb888_S;
  280. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  281. (s_bits:24;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  282. d_bits:32;d_idx:False;d_r:$ff;d_g:$ff00;d_b:$ff0000;d_a:0;
  283. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  284. normal:@ConvertP_24rgb888_32bgr888;stretch:@ConvertP_24rgb888_32bgr888_S;
  285. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  286. (s_bits:24;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  287. d_bits:32;d_idx:False;d_r:$ff000000;d_g:$ff0000;d_b:$ff00;d_a:$ff;
  288. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  289. normal:@ConvertP_24rgb888_32rgba888;stretch:@ConvertP_24rgb888_32rgba888_S;
  290. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  291. (s_bits:24;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  292. d_bits:32;d_idx:False;d_r:$ff00;d_g:$ff0000;d_b:$ff000000;d_a:$ff;
  293. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  294. normal:@ConvertP_24rgb888_32bgra888;stretch:@ConvertP_24rgb888_32bgra888_S;
  295. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  296. (s_bits:24;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  297. d_bits:24;d_idx:False;d_r:$ff;d_g:$ff00;d_b:$ff0000;d_a:0;
  298. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  299. normal:@ConvertP_24rgb888_24bgr888;stretch:@ConvertP_24rgb888_24bgr888_S;
  300. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  301. (s_bits:24;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  302. d_bits:16;d_idx:False;d_r:$f800;d_g:$7e0;d_b:$1f;d_a:0;
  303. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  304. normal:@ConvertP_24rgb888_16rgb565;stretch:@ConvertP_24rgb888_16rgb565_S;
  305. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  306. (s_bits:24;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  307. d_bits:16;d_idx:False;d_r:$1f;d_g:$7e0;d_b:$f800;d_a:0;
  308. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  309. normal:@ConvertP_24rgb888_16bgr565;stretch:@ConvertP_24rgb888_16bgr565_S;
  310. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  311. (s_bits:24;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  312. d_bits:16;d_idx:False;d_r:$7c00;d_g:$3e0;d_b:$1f;d_a:0;
  313. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  314. normal:@ConvertP_24rgb888_16rgb555;stretch:@ConvertP_24rgb888_16rgb555_S;
  315. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  316. (s_bits:24;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  317. d_bits:16;d_idx:False;d_r:$1f;d_g:$3e0;d_b:$7c00;d_a:0;
  318. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  319. normal:@ConvertP_24rgb888_16bgr555;stretch:@ConvertP_24rgb888_16bgr555_S;
  320. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  321. (s_bits:24;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
  322. d_bits:8;d_idx:False;d_r:$e0;d_g:$1c;d_b:$3;d_a:0;
  323. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  324. normal:@ConvertP_24rgb888_8rgb332;stretch:@ConvertP_24rgb888_8rgb332_S;
  325. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  326. { ------ From 16 RGB 565 ------- }
  327. (s_bits:16;s_idx:False;s_r:$f800;s_g:$7e0;s_b:$1f;s_a:0;
  328. d_bits:32;d_idx:False;d_r:$ff0000;d_g:$ff00;d_b:$ff;d_a:0;
  329. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  330. normal:@ConvertP_16rgb565_32rgb888;stretch:@ConvertP_16rgb565_32rgb888_S;
  331. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  332. (s_bits:16;s_idx:False;s_r:$f800;s_g:$7e0;s_b:$1f;s_a:0;
  333. d_bits:32;d_idx:False;d_r:$ff;d_g:$ff00;d_b:$ff0000;d_a:0;
  334. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  335. normal:@ConvertP_16rgb565_32bgr888;stretch:@ConvertP_16rgb565_32bgr888_S;
  336. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  337. (s_bits:16;s_idx:False;s_r:$f800;s_g:$7e0;s_b:$1f;s_a:0;
  338. d_bits:32;d_idx:False;d_r:$ff000000;d_g:$ff0000;d_b:$ff00;d_a:$ff;
  339. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  340. normal:@ConvertP_16rgb565_32rgba888;stretch:@ConvertP_16rgb565_32rgba888_S;
  341. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  342. (s_bits:16;s_idx:False;s_r:$f800;s_g:$7e0;s_b:$1f;s_a:0;
  343. d_bits:32;d_idx:False;d_r:$ff00;d_g:$ff0000;d_b:$ff000000;d_a:$ff;
  344. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  345. normal:@ConvertP_16rgb565_32bgra888;stretch:@ConvertP_16rgb565_32bgra888_S;
  346. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  347. (s_bits:16;s_idx:False;s_r:$f800;s_g:$7e0;s_b:$1f;s_a:0;
  348. d_bits:24;d_idx:False;d_r:$ff0000;d_g:$ff00;d_b:$ff;d_a:0;
  349. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  350. normal:@ConvertP_16rgb565_24rgb888;stretch:@ConvertP_16rgb565_24rgb888_S;
  351. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  352. (s_bits:16;s_idx:False;s_r:$f800;s_g:$7e0;s_b:$1f;s_a:0;
  353. d_bits:24;d_idx:False;d_r:$ff;d_g:$ff00;d_b:$ff0000;d_a:0;
  354. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  355. normal:@ConvertP_16rgb565_24bgr888;stretch:@ConvertP_16rgb565_24bgr888_S;
  356. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  357. (s_bits:16;s_idx:False;s_r:$f800;s_g:$7e0;s_b:$1f;s_a:0;
  358. d_bits:16;d_idx:False;d_r:$1f;d_g:$7e0;d_b:$f800;d_a:0;
  359. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  360. normal:@ConvertP_16rgb565_16bgr565;stretch:@ConvertP_16rgb565_16bgr565_S;
  361. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  362. (s_bits:16;s_idx:False;s_r:$f800;s_g:$7e0;s_b:$1f;s_a:0;
  363. d_bits:16;d_idx:False;d_r:$7c00;d_g:$3e0;d_b:$1f;d_a:0;
  364. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  365. normal:@ConvertP_16rgb565_16rgb555;stretch:@ConvertP_16rgb565_16rgb555_S;
  366. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  367. (s_bits:16;s_idx:False;s_r:$f800;s_g:$7e0;s_b:$1f;s_a:0;
  368. d_bits:16;d_idx:False;d_r:$1f;d_g:$3e0;d_b:$7c00;d_a:0;
  369. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  370. normal:@ConvertP_16rgb565_16bgr555;stretch:@ConvertP_16rgb565_16bgr555_S;
  371. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  372. (s_bits:16;s_idx:False;s_r:$f800;s_g:$7e0;s_b:$1f;s_a:0;
  373. d_bits:8;d_idx:False;d_r:$e0;d_g:$1c;d_b:$3;d_a:0;
  374. loopnormal:@ConvertP;loopstretch:@ConvertPStretch;
  375. normal:@ConvertP_16rgb565_8rgb332;stretch:@ConvertP_16rgb565_8rgb332_S;
  376. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  377. { ------ From 8 bit INDEXED ------- }
  378. (s_bits:8;s_idx:True;s_r:0;s_g:0;s_b:0;s_a:0;
  379. d_bits:32;d_idx:False;d_r:0;d_g:0;d_b:0;d_a:0;
  380. loopnormal:@ConvertP_index8_32;loopstretch:@ConvertP_index8_32_S;
  381. normal:@NotApplicable;stretch:@NotApplicable;
  382. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  383. (s_bits:8;s_idx:True;s_r:0;s_g:0;s_b:0;s_a:0;
  384. d_bits:24;d_idx:False;d_r:0;d_g:0;d_b:0;d_a:0;
  385. loopnormal:@ConvertP_index8_24;loopstretch:@ConvertP_index8_24_S;
  386. normal:@NotApplicable;stretch:@NotApplicable;
  387. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  388. (s_bits:8;s_idx:True;s_r:0;s_g:0;s_b:0;s_a:0;
  389. d_bits:16;d_idx:False;d_r:0;d_g:0;d_b:0;d_a:0;
  390. loopnormal:@ConvertP_index8_16;loopstretch:@ConvertP_index8_16_S;
  391. normal:@NotApplicable;stretch:@NotApplicable;
  392. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC),
  393. (s_bits:8;s_idx:True;s_r:0;s_g:0;s_b:0;s_a:0;
  394. d_bits:8;d_idx:False;d_r:0;d_g:0;d_b:0;d_a:0;
  395. loopnormal:@ConvertP_index8_8;loopstretch:@ConvertP_index8_8_S;
  396. normal:@NotApplicable;stretch:@NotApplicable;
  397. dither:Nil;ditherstretch:Nil;processor:PROC_GENERIC)
  398. );