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.

410 lines
11 KiB

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