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.

448 lines
12 KiB

  1. unit ugluVectorEx;
  2. {$mode objfpc}{$H+}
  3. {$macro on}
  4. {$modeswitch typehelpers}
  5. interface
  6. uses
  7. Classes, SysUtils, Graphics,
  8. ugluVectorExHelper;
  9. type
  10. TgluVector2p = TgluVectorP.TVector2;
  11. TgluVector3p = TgluVectorP.TVector3;
  12. TgluVector4p = TgluVectorP.TVector4;
  13. TgluVector2e = TgluVectorE.TVector2;
  14. TgluVector3e = TgluVectorE.TVector3;
  15. TgluVector4e = TgluVectorE.TVector4;
  16. TgluVector2i = TgluVectorI.TVector2;
  17. TgluVector3i = TgluVectorI.TVector3;
  18. TgluVector4i = TgluVectorI.TVector4;
  19. TgluVector2us = TgluVectorUS.TVector2;
  20. TgluVector3us = TgluVectorUS.TVector3;
  21. TgluVector4us = TgluVectorUS.TVector4;
  22. TgluVector2ub = TgluVectorUB.TVector2;
  23. TgluVector3ub = TgluVectorUB.TVector3;
  24. TgluVector4ub = TgluVectorUB.TVector4;
  25. TgluVector2f = TgluVectorF.TVector2;
  26. TgluVector3f = TgluVectorF.TVector3;
  27. TgluVector4f = TgluVectorF.TVector4;
  28. TgluVector2d = TgluVectorD.TVector2;
  29. TgluVector3d = TgluVectorD.TVector3;
  30. TgluVector4d = TgluVectorD.TVector4;
  31. PgluVector2p = ^TgluVector2p;
  32. PgluVector3p = ^TgluVector3p;
  33. PgluVector4p = ^TgluVector4p;
  34. PgluVector2e = ^TgluVector2e;
  35. PgluVector3e = ^TgluVector3e;
  36. PgluVector4e = ^TgluVector4e;
  37. PgluVector2i = ^TgluVector2i;
  38. PgluVector3i = ^TgluVector3i;
  39. PgluVector4i = ^TgluVector4i;
  40. PgluVector2us = ^TgluVector2us;
  41. PgluVector3us = ^TgluVector3us;
  42. PgluVector4us = ^TgluVector4us;
  43. PgluVector2ub = ^TgluVector2ub;
  44. PgluVector3ub = ^TgluVector3ub;
  45. PgluVector4ub = ^TgluVector4ub;
  46. PgluVector2f = ^TgluVector2f;
  47. PgluVector3f = ^TgluVector3f;
  48. PgluVector4f = ^TgluVector4f;
  49. PgluVector2d = ^TgluVector2d;
  50. PgluVector3d = ^TgluVector3d;
  51. PgluVector4d = ^TgluVector4d;
  52. {$DEFINE __VECTOR_HELPER_INTERFACE}
  53. { TgluVector2p }
  54. {$DEFINE __IMPL := TgluVectorP}
  55. {$DEFINE __SIZE := 2}
  56. {$DEFINE __VEC := TgluVector2p}
  57. {$DEFINE __HELPER := TgluTypeHelperVector2p}
  58. {$I ugluVectorEx.inc}
  59. { TgluVector3p }
  60. {$DEFINE __IMPL := TgluVectorP}
  61. {$DEFINE __SIZE := 3}
  62. {$DEFINE __VEC := TgluVector3p}
  63. {$DEFINE __HELPER := TgluTypeHelperVector3p}
  64. {$I ugluVectorEx.inc}
  65. { TgluVector4p }
  66. {$DEFINE __IMPL := TgluVectorP}
  67. {$DEFINE __SIZE := 4}
  68. {$DEFINE __VEC := TgluVector4p}
  69. {$DEFINE __HELPER := TgluTypeHelperVector4p}
  70. {$I ugluVectorEx.inc}
  71. { TgluVector2e }
  72. {$DEFINE __IMPL := TgluVectorE}
  73. {$DEFINE __SIZE := 2}
  74. {$DEFINE __VEC := TgluVector2e}
  75. {$DEFINE __HELPER := TgluTypeHelperVector2e}
  76. {$I ugluVectorEx.inc}
  77. { TgluVector3e }
  78. {$DEFINE __IMPL := TgluVectorE}
  79. {$DEFINE __SIZE := 3}
  80. {$DEFINE __VEC := TgluVector3e}
  81. {$DEFINE __HELPER := TgluTypeHelperVector3e}
  82. {$I ugluVectorEx.inc}
  83. { TgluVector4e }
  84. {$DEFINE __IMPL := TgluVectorE}
  85. {$DEFINE __SIZE := 4}
  86. {$DEFINE __VEC := TgluVector4e}
  87. {$DEFINE __HELPER := TgluTypeHelperVector4e}
  88. {$I ugluVectorEx.inc}
  89. { TgluVector2i }
  90. {$DEFINE __IMPL := TgluVectorI}
  91. {$DEFINE __SIZE := 2}
  92. {$DEFINE __VEC := TgluVector2i}
  93. {$DEFINE __HELPER := TgluTypeHelperVector2i}
  94. {$DEFINE __HELPER_I := TgluTypeHelperVector2ii}
  95. {$I ugluVectorEx.inc}
  96. { TgluVector3i }
  97. {$DEFINE __IMPL := TgluVectorI}
  98. {$DEFINE __SIZE := 3}
  99. {$DEFINE __VEC := TgluVector3i}
  100. {$DEFINE __HELPER := TgluTypeHelperVector3i}
  101. {$DEFINE __HELPER_I := TgluTypeHelperVector3ii}
  102. {$I ugluVectorEx.inc}
  103. { TgluVector4i }
  104. {$DEFINE __IMPL := TgluVectorI}
  105. {$DEFINE __SIZE := 4}
  106. {$DEFINE __VEC := TgluVector4i}
  107. {$DEFINE __HELPER := TgluTypeHelperVector4i}
  108. {$DEFINE __HELPER_I := TgluTypeHelperVector4ii}
  109. {$I ugluVectorEx.inc}
  110. { TgluVector2us }
  111. {$DEFINE __IMPL := TgluVectorUS}
  112. {$DEFINE __SIZE := 2}
  113. {$DEFINE __VEC := TgluVector2us}
  114. {$DEFINE __HELPER := TgluTypeHelperVector2us}
  115. {$DEFINE __HELPER_I := TgluTypeHelperVector2usi}
  116. {$I ugluVectorEx.inc}
  117. { TgluVector3us }
  118. {$DEFINE __IMPL := TgluVectorUS}
  119. {$DEFINE __SIZE := 3}
  120. {$DEFINE __VEC := TgluVector3us}
  121. {$DEFINE __HELPER := TgluTypeHelperVector3us}
  122. {$DEFINE __HELPER_I := TgluTypeHelperVector3usi}
  123. {$I ugluVectorEx.inc}
  124. { TgluVector4us }
  125. {$DEFINE __IMPL := TgluVectorUS}
  126. {$DEFINE __SIZE := 4}
  127. {$DEFINE __VEC := TgluVector4us}
  128. {$DEFINE __HELPER := TgluTypeHelperVector4us}
  129. {$DEFINE __HELPER_I := TgluTypeHelperVector4usi}
  130. {$I ugluVectorEx.inc}
  131. { TgluVector2ub }
  132. {$DEFINE __IMPL := TgluVectorUB}
  133. {$DEFINE __SIZE := 2}
  134. {$DEFINE __VEC := TgluVector2ub}
  135. {$DEFINE __HELPER := TgluTypeHelperVector2ub}
  136. {$DEFINE __HELPER_I := TgluTypeHelperVector2ubi}
  137. {$I ugluVectorEx.inc}
  138. { TgluVector3ub }
  139. {$DEFINE __IMPL := TgluVectorUB}
  140. {$DEFINE __SIZE := 3}
  141. {$DEFINE __VEC := TgluVector3ub}
  142. {$DEFINE __HELPER := TgluTypeHelperVector3ub}
  143. {$DEFINE __HELPER_I := TgluTypeHelperVector3ubi}
  144. {$DEFINE __MAXCOLOR := 255}
  145. {$I ugluVectorEx.inc}
  146. { TgluVector4ub }
  147. {$DEFINE __IMPL := TgluVectorUB}
  148. {$DEFINE __SIZE := 4}
  149. {$DEFINE __VEC := TgluVector4ub}
  150. {$DEFINE __HELPER := TgluTypeHelperVector4ub}
  151. {$DEFINE __HELPER_I := TgluTypeHelperVector4ubi}
  152. {$I ugluVectorEx.inc}
  153. { TgluVector2f }
  154. {$DEFINE __IMPL := TgluVectorF}
  155. {$DEFINE __SIZE := 2}
  156. {$DEFINE __VEC := TgluVector2f}
  157. {$DEFINE __HELPER := TgluTypeHelperVector2f}
  158. {$DEFINE __HELPER_I := TgluTypeHelperVector2fi}
  159. {$DEFINE __HELPER_F := TgluTypeHelperVector2ff}
  160. {$I ugluVectorEx.inc}
  161. { TgluVector3f }
  162. {$DEFINE __IMPL := TgluVectorF}
  163. {$DEFINE __SIZE := 3}
  164. {$DEFINE __VEC := TgluVector3f}
  165. {$DEFINE __HELPER := TgluTypeHelperVector3f}
  166. {$DEFINE __HELPER_I := TgluTypeHelperVector3fi}
  167. {$DEFINE __HELPER_F := TgluTypeHelperVector3ff}
  168. {$DEFINE __MAXCOLOR := 1.0}
  169. {$I ugluVectorEx.inc}
  170. { TgluVector4f }
  171. {$DEFINE __IMPL := TgluVectorF}
  172. {$DEFINE __SIZE := 4}
  173. {$DEFINE __VEC := TgluVector4f}
  174. {$DEFINE __HELPER := TgluTypeHelperVector4f}
  175. {$DEFINE __HELPER_I := TgluTypeHelperVector4fi}
  176. {$DEFINE __HELPER_F := TgluTypeHelperVector4ff}
  177. {$I ugluVectorEx.inc}
  178. { TgluVector2d }
  179. {$DEFINE __IMPL := TgluVectorD}
  180. {$DEFINE __SIZE := 2}
  181. {$DEFINE __VEC := TgluVector2d}
  182. {$DEFINE __HELPER := TgluTypeHelperVector2d}
  183. {$DEFINE __HELPER_I := TgluTypeHelperVector2di}
  184. {$DEFINE __HELPER_F := TgluTypeHelperVector2df}
  185. {$I ugluVectorEx.inc}
  186. { TgluVector3d }
  187. {$DEFINE __IMPL := TgluVectorD}
  188. {$DEFINE __SIZE := 3}
  189. {$DEFINE __VEC := TgluVector3d}
  190. {$DEFINE __HELPER := TgluTypeHelperVector3d}
  191. {$DEFINE __HELPER_I := TgluTypeHelperVector3di}
  192. {$DEFINE __HELPER_F := TgluTypeHelperVector3df}
  193. {$DEFINE __MAXCOLOR := 1.0}
  194. {$I ugluVectorEx.inc}
  195. { TgluVector4d }
  196. {$DEFINE __IMPL := TgluVectorD}
  197. {$DEFINE __SIZE := 4}
  198. {$DEFINE __VEC := TgluVector4d}
  199. {$DEFINE __HELPER := TgluTypeHelperVector4d}
  200. {$DEFINE __HELPER_I := TgluTypeHelperVector4di}
  201. {$DEFINE __HELPER_F := TgluTypeHelperVector4df}
  202. {$I ugluVectorEx.inc}
  203. {$UNDEF __VECTOR_HELPER_INTERFACE}
  204. implementation
  205. {$DEFINE __VECTOR_HELPER_IMPL}
  206. { TgluVector2p }
  207. {$DEFINE __IMPL := TgluVectorP}
  208. {$DEFINE __SIZE := 2}
  209. {$DEFINE __VEC := TgluVector2p}
  210. {$DEFINE __HELPER := TgluTypeHelperVector2p}
  211. {$I ugluVectorEx.inc}
  212. { TgluVector3p }
  213. {$DEFINE __IMPL := TgluVectorP}
  214. {$DEFINE __SIZE := 3}
  215. {$DEFINE __VEC := TgluVector3p}
  216. {$DEFINE __HELPER := TgluTypeHelperVector3p}
  217. {$I ugluVectorEx.inc}
  218. { TgluVector4p }
  219. {$DEFINE __IMPL := TgluVectorP}
  220. {$DEFINE __SIZE := 4}
  221. {$DEFINE __VEC := TgluVector4p}
  222. {$DEFINE __HELPER := TgluTypeHelperVector4p}
  223. {$I ugluVectorEx.inc}
  224. { TgluVector2e }
  225. {$DEFINE __IMPL := TgluVectorE}
  226. {$DEFINE __SIZE := 2}
  227. {$DEFINE __VEC := TgluVector2e}
  228. {$DEFINE __HELPER := TgluTypeHelperVector2e}
  229. {$I ugluVectorEx.inc}
  230. { TgluVector3e }
  231. {$DEFINE __IMPL := TgluVectorE}
  232. {$DEFINE __SIZE := 3}
  233. {$DEFINE __VEC := TgluVector3e}
  234. {$DEFINE __HELPER := TgluTypeHelperVector3e}
  235. {$I ugluVectorEx.inc}
  236. { TgluVector4e }
  237. {$DEFINE __IMPL := TgluVectorE}
  238. {$DEFINE __SIZE := 4}
  239. {$DEFINE __VEC := TgluVector4e}
  240. {$DEFINE __HELPER := TgluTypeHelperVector4e}
  241. {$I ugluVectorEx.inc}
  242. { TgluVector2i }
  243. {$DEFINE __IMPL := TgluVectorI}
  244. {$DEFINE __SIZE := 2}
  245. {$DEFINE __VEC := TgluVector2i}
  246. {$DEFINE __HELPER := TgluTypeHelperVector2i}
  247. {$DEFINE __HELPER_I := TgluTypeHelperVector2ii}
  248. {$I ugluVectorEx.inc}
  249. { TgluVector3i }
  250. {$DEFINE __IMPL := TgluVectorI}
  251. {$DEFINE __SIZE := 3}
  252. {$DEFINE __VEC := TgluVector3i}
  253. {$DEFINE __HELPER := TgluTypeHelperVector3i}
  254. {$DEFINE __HELPER_I := TgluTypeHelperVector3ii}
  255. {$I ugluVectorEx.inc}
  256. { TgluVector4i }
  257. {$DEFINE __IMPL := TgluVectorI}
  258. {$DEFINE __SIZE := 4}
  259. {$DEFINE __VEC := TgluVector4i}
  260. {$DEFINE __HELPER := TgluTypeHelperVector4i}
  261. {$DEFINE __HELPER_I := TgluTypeHelperVector4ii}
  262. {$I ugluVectorEx.inc}
  263. { TgluVector2us }
  264. {$DEFINE __IMPL := TgluVectorUS}
  265. {$DEFINE __SIZE := 2}
  266. {$DEFINE __VEC := TgluVector2us}
  267. {$DEFINE __HELPER := TgluTypeHelperVector2us}
  268. {$DEFINE __HELPER_I := TgluTypeHelperVector2usi}
  269. {$I ugluVectorEx.inc}
  270. { TgluVector3us }
  271. {$DEFINE __IMPL := TgluVectorUS}
  272. {$DEFINE __SIZE := 3}
  273. {$DEFINE __VEC := TgluVector3us}
  274. {$DEFINE __HELPER := TgluTypeHelperVector3us}
  275. {$DEFINE __HELPER_I := TgluTypeHelperVector3usi}
  276. {$I ugluVectorEx.inc}
  277. { TgluVector4us }
  278. {$DEFINE __IMPL := TgluVectorUS}
  279. {$DEFINE __SIZE := 4}
  280. {$DEFINE __VEC := TgluVector4us}
  281. {$DEFINE __HELPER := TgluTypeHelperVector4us}
  282. {$DEFINE __HELPER_I := TgluTypeHelperVector4usi}
  283. {$I ugluVectorEx.inc}
  284. { TgluVector2ub }
  285. {$DEFINE __IMPL := TgluVectorUB}
  286. {$DEFINE __SIZE := 2}
  287. {$DEFINE __VEC := TgluVector2ub}
  288. {$DEFINE __HELPER := TgluTypeHelperVector2ub}
  289. {$DEFINE __HELPER_I := TgluTypeHelperVector2ubi}
  290. {$I ugluVectorEx.inc}
  291. { TgluVector3ub }
  292. {$DEFINE __IMPL := TgluVectorUB}
  293. {$DEFINE __SIZE := 3}
  294. {$DEFINE __VEC := TgluVector3ub}
  295. {$DEFINE __HELPER := TgluTypeHelperVector3ub}
  296. {$DEFINE __HELPER_I := TgluTypeHelperVector3ubi}
  297. {$DEFINE __MAXCOLOR := 255}
  298. {$I ugluVectorEx.inc}
  299. { TgluVector4ub }
  300. {$DEFINE __IMPL := TgluVectorUB}
  301. {$DEFINE __SIZE := 4}
  302. {$DEFINE __VEC := TgluVector4ub}
  303. {$DEFINE __HELPER := TgluTypeHelperVector4ub}
  304. {$DEFINE __HELPER_I := TgluTypeHelperVector4ubi}
  305. {$I ugluVectorEx.inc}
  306. { TgluVector2f }
  307. {$DEFINE __IMPL := TgluVectorF}
  308. {$DEFINE __SIZE := 2}
  309. {$DEFINE __VEC := TgluVector2f}
  310. {$DEFINE __HELPER := TgluTypeHelperVector2f}
  311. {$DEFINE __HELPER_I := TgluTypeHelperVector2fi}
  312. {$DEFINE __HELPER_F := TgluTypeHelperVector2ff}
  313. {$I ugluVectorEx.inc}
  314. { TgluVector3f }
  315. {$DEFINE __IMPL := TgluVectorF}
  316. {$DEFINE __SIZE := 3}
  317. {$DEFINE __VEC := TgluVector3f}
  318. {$DEFINE __HELPER := TgluTypeHelperVector3f}
  319. {$DEFINE __HELPER_I := TgluTypeHelperVector3fi}
  320. {$DEFINE __HELPER_F := TgluTypeHelperVector3ff}
  321. {$DEFINE __MAXCOLOR := 1.0}
  322. {$I ugluVectorEx.inc}
  323. { TgluVector4ub }
  324. {$DEFINE __IMPL := TgluVectorF}
  325. {$DEFINE __SIZE := 4}
  326. {$DEFINE __VEC := TgluVector4f}
  327. {$DEFINE __HELPER := TgluTypeHelperVector4f}
  328. {$DEFINE __HELPER_I := TgluTypeHelperVector4fi}
  329. {$DEFINE __HELPER_F := TgluTypeHelperVector4ff}
  330. {$I ugluVectorEx.inc}
  331. { TgluVector2d }
  332. {$DEFINE __IMPL := TgluVectorD}
  333. {$DEFINE __SIZE := 2}
  334. {$DEFINE __VEC := TgluVector2d}
  335. {$DEFINE __HELPER := TgluTypeHelperVector2d}
  336. {$DEFINE __HELPER_I := TgluTypeHelperVector2di}
  337. {$DEFINE __HELPER_F := TgluTypeHelperVector2df}
  338. {$I ugluVectorEx.inc}
  339. { TgluVector3d }
  340. {$DEFINE __IMPL := TgluVectorD}
  341. {$DEFINE __SIZE := 3}
  342. {$DEFINE __VEC := TgluVector3d}
  343. {$DEFINE __HELPER := TgluTypeHelperVector3d}
  344. {$DEFINE __HELPER_I := TgluTypeHelperVector3di}
  345. {$DEFINE __HELPER_F := TgluTypeHelperVector3df}
  346. {$DEFINE __MAXCOLOR := 1.0}
  347. {$I ugluVectorEx.inc}
  348. { TgluVector4d }
  349. {$DEFINE __IMPL := TgluVectorD}
  350. {$DEFINE __SIZE := 4}
  351. {$DEFINE __VEC := TgluVector4d}
  352. {$DEFINE __HELPER := TgluTypeHelperVector4d}
  353. {$DEFINE __HELPER_I := TgluTypeHelperVector4di}
  354. {$DEFINE __HELPER_F := TgluTypeHelperVector4df}
  355. {$I ugluVectorEx.inc}
  356. {$UNDEF __VECTOR_HELPER_IMPL}
  357. end.