arrays.dart 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819
  1. //
  2. // Spine Runtimes License Agreement
  3. // Last updated April 5, 2025. Replaces all prior versions.
  4. //
  5. // Copyright (c) 2013-2025, Esoteric Software LLC
  6. //
  7. // Integration of the Spine Runtimes into software or otherwise creating
  8. // derivative works of the Spine Runtimes is permitted under the terms and
  9. // conditions of Section 2 of the Spine Editor License Agreement:
  10. // http://esotericsoftware.com/spine-editor-license
  11. //
  12. // Otherwise, it is permitted to integrate the Spine Runtimes into software
  13. // or otherwise create derivative works of the Spine Runtimes (collectively,
  14. // "Products"), provided that each user of the Products must obtain their own
  15. // Spine Editor license and redistribution of the Products in any form must
  16. // include this license and copyright notice.
  17. //
  18. // THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
  19. // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  20. // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  21. // DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
  22. // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  23. // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
  24. // BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
  25. // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  26. // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  27. // THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  28. //
  29. // AUTO GENERATED FILE, DO NOT EDIT.
  30. import 'dart:ffi';
  31. import 'package:ffi/ffi.dart';
  32. import 'spine_dart_bindings_generated.dart';
  33. import '../spine_bindings.dart';
  34. import '../native_array.dart';
  35. import 'alpha_timeline.dart';
  36. import 'animation.dart';
  37. import 'atlas_page.dart';
  38. import 'atlas_region.dart';
  39. import 'attachment.dart';
  40. import 'attachment_timeline.dart';
  41. import 'bone.dart';
  42. import 'bone_data.dart';
  43. import 'bone_pose.dart';
  44. import 'bounding_box_attachment.dart';
  45. import 'clipping_attachment.dart';
  46. import 'constraint.dart';
  47. import 'constraint_data.dart';
  48. import 'deform_timeline.dart';
  49. import 'draw_order_timeline.dart';
  50. import 'event.dart';
  51. import 'event_data.dart';
  52. import 'event_timeline.dart';
  53. import 'from_property.dart';
  54. import 'from_rotate.dart';
  55. import 'from_scale_x.dart';
  56. import 'from_scale_y.dart';
  57. import 'from_shear_y.dart';
  58. import 'from_x.dart';
  59. import 'from_y.dart';
  60. import 'ik_constraint.dart';
  61. import 'ik_constraint_data.dart';
  62. import 'ik_constraint_timeline.dart';
  63. import 'inherit_timeline.dart';
  64. import 'mesh_attachment.dart';
  65. import 'path_attachment.dart';
  66. import 'path_constraint.dart';
  67. import 'path_constraint_data.dart';
  68. import 'path_constraint_mix_timeline.dart';
  69. import 'path_constraint_position_timeline.dart';
  70. import 'path_constraint_spacing_timeline.dart';
  71. import 'physics_constraint.dart';
  72. import 'physics_constraint_damping_timeline.dart';
  73. import 'physics_constraint_data.dart';
  74. import 'physics_constraint_gravity_timeline.dart';
  75. import 'physics_constraint_inertia_timeline.dart';
  76. import 'physics_constraint_mass_timeline.dart';
  77. import 'physics_constraint_mix_timeline.dart';
  78. import 'physics_constraint_reset_timeline.dart';
  79. import 'physics_constraint_strength_timeline.dart';
  80. import 'physics_constraint_wind_timeline.dart';
  81. import 'point_attachment.dart';
  82. import 'polygon.dart';
  83. import 'region_attachment.dart';
  84. import 'rgb2_timeline.dart';
  85. import 'rgb_timeline.dart';
  86. import 'rgba2_timeline.dart';
  87. import 'rgba_timeline.dart';
  88. import 'rotate_timeline.dart';
  89. import 'scale_timeline.dart';
  90. import 'scale_x_timeline.dart';
  91. import 'scale_y_timeline.dart';
  92. import 'sequence_timeline.dart';
  93. import 'shear_timeline.dart';
  94. import 'shear_x_timeline.dart';
  95. import 'shear_y_timeline.dart';
  96. import 'skin.dart';
  97. import 'slider.dart';
  98. import 'slider_data.dart';
  99. import 'slider_mix_timeline.dart';
  100. import 'slider_timeline.dart';
  101. import 'slot.dart';
  102. import 'slot_data.dart';
  103. import 'texture_region.dart';
  104. import 'timeline.dart';
  105. import 'to_property.dart';
  106. import 'to_rotate.dart';
  107. import 'to_scale_x.dart';
  108. import 'to_scale_y.dart';
  109. import 'to_shear_y.dart';
  110. import 'to_x.dart';
  111. import 'to_y.dart';
  112. import 'track_entry.dart';
  113. import 'transform_constraint.dart';
  114. import 'transform_constraint_data.dart';
  115. import 'transform_constraint_timeline.dart';
  116. import 'translate_timeline.dart';
  117. import 'translate_x_timeline.dart';
  118. import 'translate_y_timeline.dart';
  119. import 'update.dart';
  120. /// ArrayFloat wrapper
  121. class ArrayFloat extends NativeArray<double> {
  122. ArrayFloat.fromPointer(Pointer<spine_array_float_wrapper> super.ptr);
  123. @override
  124. int get length {
  125. return SpineBindings.bindings.spine_array_float_size(nativePtr.cast());
  126. }
  127. @override
  128. double operator [](int index) {
  129. if (index < 0 || index >= length) {
  130. throw RangeError.index(index, this, 'index');
  131. }
  132. final buffer = SpineBindings.bindings.spine_array_float_buffer(nativePtr.cast());
  133. return buffer.cast<Float>()[index];
  134. }
  135. }
  136. /// ArrayInt wrapper
  137. class ArrayInt extends NativeArray<int> {
  138. ArrayInt.fromPointer(Pointer<spine_array_int_wrapper> super.ptr);
  139. @override
  140. int get length {
  141. return SpineBindings.bindings.spine_array_int_size(nativePtr.cast());
  142. }
  143. @override
  144. int operator [](int index) {
  145. if (index < 0 || index >= length) {
  146. throw RangeError.index(index, this, 'index');
  147. }
  148. final buffer = SpineBindings.bindings.spine_array_int_buffer(nativePtr.cast());
  149. return buffer.cast<Int32>()[index];
  150. }
  151. }
  152. /// ArrayUnsignedShort wrapper
  153. class ArrayUnsignedShort extends NativeArray<int> {
  154. ArrayUnsignedShort.fromPointer(Pointer<spine_array_unsigned_short_wrapper> super.ptr);
  155. @override
  156. int get length {
  157. return SpineBindings.bindings.spine_array_unsigned_short_size(nativePtr.cast());
  158. }
  159. @override
  160. int operator [](int index) {
  161. if (index < 0 || index >= length) {
  162. throw RangeError.index(index, this, 'index');
  163. }
  164. final buffer = SpineBindings.bindings.spine_array_unsigned_short_buffer(nativePtr.cast());
  165. return buffer.cast<Uint16>()[index];
  166. }
  167. }
  168. /// ArrayPropertyId wrapper
  169. class ArrayPropertyId extends NativeArray<int> {
  170. ArrayPropertyId.fromPointer(Pointer<spine_array_property_id_wrapper> super.ptr);
  171. @override
  172. int get length {
  173. return SpineBindings.bindings.spine_array_property_id_size(nativePtr.cast());
  174. }
  175. @override
  176. int operator [](int index) {
  177. if (index < 0 || index >= length) {
  178. throw RangeError.index(index, this, 'index');
  179. }
  180. final buffer = SpineBindings.bindings.spine_array_property_id_buffer(nativePtr.cast());
  181. // NOTE: This will not compile due to C API bug - buffer() returns int instead of Pointer
  182. return buffer.cast<Int64>()[index];
  183. }
  184. }
  185. /// ArrayAnimation wrapper
  186. class ArrayAnimation extends NativeArray<Animation?> {
  187. ArrayAnimation.fromPointer(Pointer<spine_array_animation_wrapper> super.ptr);
  188. @override
  189. int get length {
  190. return SpineBindings.bindings.spine_array_animation_size(nativePtr.cast());
  191. }
  192. @override
  193. Animation? operator [](int index) {
  194. if (index < 0 || index >= length) {
  195. throw RangeError.index(index, this, 'index');
  196. }
  197. final buffer = SpineBindings.bindings.spine_array_animation_buffer(nativePtr.cast());
  198. return buffer[index].address == 0 ? null : Animation.fromPointer(buffer[index]);
  199. }
  200. }
  201. /// ArrayAtlasPage wrapper
  202. class ArrayAtlasPage extends NativeArray<AtlasPage?> {
  203. ArrayAtlasPage.fromPointer(Pointer<spine_array_atlas_page_wrapper> super.ptr);
  204. @override
  205. int get length {
  206. return SpineBindings.bindings.spine_array_atlas_page_size(nativePtr.cast());
  207. }
  208. @override
  209. AtlasPage? operator [](int index) {
  210. if (index < 0 || index >= length) {
  211. throw RangeError.index(index, this, 'index');
  212. }
  213. final buffer = SpineBindings.bindings.spine_array_atlas_page_buffer(nativePtr.cast());
  214. return buffer[index].address == 0 ? null : AtlasPage.fromPointer(buffer[index]);
  215. }
  216. }
  217. /// ArrayAtlasRegion wrapper
  218. class ArrayAtlasRegion extends NativeArray<AtlasRegion?> {
  219. ArrayAtlasRegion.fromPointer(Pointer<spine_array_atlas_region_wrapper> super.ptr);
  220. @override
  221. int get length {
  222. return SpineBindings.bindings.spine_array_atlas_region_size(nativePtr.cast());
  223. }
  224. @override
  225. AtlasRegion? operator [](int index) {
  226. if (index < 0 || index >= length) {
  227. throw RangeError.index(index, this, 'index');
  228. }
  229. final buffer = SpineBindings.bindings.spine_array_atlas_region_buffer(nativePtr.cast());
  230. return buffer[index].address == 0 ? null : AtlasRegion.fromPointer(buffer[index]);
  231. }
  232. }
  233. /// ArrayAttachment wrapper
  234. class ArrayAttachment extends NativeArray<Attachment?> {
  235. ArrayAttachment.fromPointer(Pointer<spine_array_attachment_wrapper> super.ptr);
  236. @override
  237. int get length {
  238. return SpineBindings.bindings.spine_array_attachment_size(nativePtr.cast());
  239. }
  240. @override
  241. Attachment? operator [](int index) {
  242. if (index < 0 || index >= length) {
  243. throw RangeError.index(index, this, 'index');
  244. }
  245. final buffer = SpineBindings.bindings.spine_array_attachment_buffer(nativePtr.cast());
  246. if (buffer[index].address == 0) return null;
  247. final rtti = SpineBindings.bindings.spine_attachment_get_rtti(buffer[index]);
  248. final className = SpineBindings.bindings.spine_rtti_get_class_name(rtti).cast<Utf8>().toDartString();
  249. switch (className) {
  250. case 'spine_bounding_box_attachment':
  251. return BoundingBoxAttachment.fromPointer(buffer[index].cast());
  252. case 'spine_clipping_attachment':
  253. return ClippingAttachment.fromPointer(buffer[index].cast());
  254. case 'spine_mesh_attachment':
  255. return MeshAttachment.fromPointer(buffer[index].cast());
  256. case 'spine_path_attachment':
  257. return PathAttachment.fromPointer(buffer[index].cast());
  258. case 'spine_point_attachment':
  259. return PointAttachment.fromPointer(buffer[index].cast());
  260. case 'spine_region_attachment':
  261. return RegionAttachment.fromPointer(buffer[index].cast());
  262. default:
  263. throw UnsupportedError('Unknown concrete type: $className for abstract class Attachment');
  264. }
  265. }
  266. }
  267. /// ArrayBone wrapper
  268. class ArrayBone extends NativeArray<Bone?> {
  269. ArrayBone.fromPointer(Pointer<spine_array_bone_wrapper> super.ptr);
  270. @override
  271. int get length {
  272. return SpineBindings.bindings.spine_array_bone_size(nativePtr.cast());
  273. }
  274. @override
  275. Bone? operator [](int index) {
  276. if (index < 0 || index >= length) {
  277. throw RangeError.index(index, this, 'index');
  278. }
  279. final buffer = SpineBindings.bindings.spine_array_bone_buffer(nativePtr.cast());
  280. return buffer[index].address == 0 ? null : Bone.fromPointer(buffer[index]);
  281. }
  282. }
  283. /// ArrayBoneData wrapper
  284. class ArrayBoneData extends NativeArray<BoneData?> {
  285. ArrayBoneData.fromPointer(Pointer<spine_array_bone_data_wrapper> super.ptr);
  286. @override
  287. int get length {
  288. return SpineBindings.bindings.spine_array_bone_data_size(nativePtr.cast());
  289. }
  290. @override
  291. BoneData? operator [](int index) {
  292. if (index < 0 || index >= length) {
  293. throw RangeError.index(index, this, 'index');
  294. }
  295. final buffer = SpineBindings.bindings.spine_array_bone_data_buffer(nativePtr.cast());
  296. return buffer[index].address == 0 ? null : BoneData.fromPointer(buffer[index]);
  297. }
  298. }
  299. /// ArrayBonePose wrapper
  300. class ArrayBonePose extends NativeArray<BonePose?> {
  301. ArrayBonePose.fromPointer(Pointer<spine_array_bone_pose_wrapper> super.ptr);
  302. @override
  303. int get length {
  304. return SpineBindings.bindings.spine_array_bone_pose_size(nativePtr.cast());
  305. }
  306. @override
  307. BonePose? operator [](int index) {
  308. if (index < 0 || index >= length) {
  309. throw RangeError.index(index, this, 'index');
  310. }
  311. final buffer = SpineBindings.bindings.spine_array_bone_pose_buffer(nativePtr.cast());
  312. return buffer[index].address == 0 ? null : BonePose.fromPointer(buffer[index]);
  313. }
  314. }
  315. /// ArrayBoundingBoxAttachment wrapper
  316. class ArrayBoundingBoxAttachment extends NativeArray<BoundingBoxAttachment?> {
  317. ArrayBoundingBoxAttachment.fromPointer(Pointer<spine_array_bounding_box_attachment_wrapper> super.ptr);
  318. @override
  319. int get length {
  320. return SpineBindings.bindings.spine_array_bounding_box_attachment_size(nativePtr.cast());
  321. }
  322. @override
  323. BoundingBoxAttachment? operator [](int index) {
  324. if (index < 0 || index >= length) {
  325. throw RangeError.index(index, this, 'index');
  326. }
  327. final buffer = SpineBindings.bindings.spine_array_bounding_box_attachment_buffer(nativePtr.cast());
  328. return buffer[index].address == 0 ? null : BoundingBoxAttachment.fromPointer(buffer[index]);
  329. }
  330. }
  331. /// ArrayConstraint wrapper
  332. class ArrayConstraint extends NativeArray<Constraint?> {
  333. ArrayConstraint.fromPointer(Pointer<spine_array_constraint_wrapper> super.ptr);
  334. @override
  335. int get length {
  336. return SpineBindings.bindings.spine_array_constraint_size(nativePtr.cast());
  337. }
  338. @override
  339. Constraint? operator [](int index) {
  340. if (index < 0 || index >= length) {
  341. throw RangeError.index(index, this, 'index');
  342. }
  343. final buffer = SpineBindings.bindings.spine_array_constraint_buffer(nativePtr.cast());
  344. if (buffer[index].address == 0) return null;
  345. final rtti = SpineBindings.bindings.spine_constraint_get_rtti(buffer[index]);
  346. final className = SpineBindings.bindings.spine_rtti_get_class_name(rtti).cast<Utf8>().toDartString();
  347. switch (className) {
  348. case 'spine_ik_constraint':
  349. return IkConstraint.fromPointer(buffer[index].cast());
  350. case 'spine_path_constraint':
  351. return PathConstraint.fromPointer(buffer[index].cast());
  352. case 'spine_physics_constraint':
  353. return PhysicsConstraint.fromPointer(buffer[index].cast());
  354. case 'spine_slider':
  355. return Slider.fromPointer(buffer[index].cast());
  356. case 'spine_transform_constraint':
  357. return TransformConstraint.fromPointer(buffer[index].cast());
  358. default:
  359. throw UnsupportedError('Unknown concrete type: $className for abstract class Constraint');
  360. }
  361. }
  362. }
  363. /// ArrayConstraintData wrapper
  364. class ArrayConstraintData extends NativeArray<ConstraintData?> {
  365. ArrayConstraintData.fromPointer(Pointer<spine_array_constraint_data_wrapper> super.ptr);
  366. @override
  367. int get length {
  368. return SpineBindings.bindings.spine_array_constraint_data_size(nativePtr.cast());
  369. }
  370. @override
  371. ConstraintData? operator [](int index) {
  372. if (index < 0 || index >= length) {
  373. throw RangeError.index(index, this, 'index');
  374. }
  375. final buffer = SpineBindings.bindings.spine_array_constraint_data_buffer(nativePtr.cast());
  376. if (buffer[index].address == 0) return null;
  377. final rtti = SpineBindings.bindings.spine_constraint_data_get_rtti(buffer[index]);
  378. final className = SpineBindings.bindings.spine_rtti_get_class_name(rtti).cast<Utf8>().toDartString();
  379. switch (className) {
  380. case 'spine_ik_constraint_data':
  381. return IkConstraintData.fromPointer(buffer[index].cast());
  382. case 'spine_path_constraint_data':
  383. return PathConstraintData.fromPointer(buffer[index].cast());
  384. case 'spine_physics_constraint_data':
  385. return PhysicsConstraintData.fromPointer(buffer[index].cast());
  386. case 'spine_slider_data':
  387. return SliderData.fromPointer(buffer[index].cast());
  388. case 'spine_transform_constraint_data':
  389. return TransformConstraintData.fromPointer(buffer[index].cast());
  390. default:
  391. throw UnsupportedError('Unknown concrete type: $className for abstract class ConstraintData');
  392. }
  393. }
  394. }
  395. /// ArrayEvent wrapper
  396. class ArrayEvent extends NativeArray<Event?> {
  397. ArrayEvent.fromPointer(Pointer<spine_array_event_wrapper> super.ptr);
  398. @override
  399. int get length {
  400. return SpineBindings.bindings.spine_array_event_size(nativePtr.cast());
  401. }
  402. @override
  403. Event? operator [](int index) {
  404. if (index < 0 || index >= length) {
  405. throw RangeError.index(index, this, 'index');
  406. }
  407. final buffer = SpineBindings.bindings.spine_array_event_buffer(nativePtr.cast());
  408. return buffer[index].address == 0 ? null : Event.fromPointer(buffer[index]);
  409. }
  410. }
  411. /// ArrayEventData wrapper
  412. class ArrayEventData extends NativeArray<EventData?> {
  413. ArrayEventData.fromPointer(Pointer<spine_array_event_data_wrapper> super.ptr);
  414. @override
  415. int get length {
  416. return SpineBindings.bindings.spine_array_event_data_size(nativePtr.cast());
  417. }
  418. @override
  419. EventData? operator [](int index) {
  420. if (index < 0 || index >= length) {
  421. throw RangeError.index(index, this, 'index');
  422. }
  423. final buffer = SpineBindings.bindings.spine_array_event_data_buffer(nativePtr.cast());
  424. return buffer[index].address == 0 ? null : EventData.fromPointer(buffer[index]);
  425. }
  426. }
  427. /// ArrayFromProperty wrapper
  428. class ArrayFromProperty extends NativeArray<FromProperty?> {
  429. ArrayFromProperty.fromPointer(Pointer<spine_array_from_property_wrapper> super.ptr);
  430. @override
  431. int get length {
  432. return SpineBindings.bindings.spine_array_from_property_size(nativePtr.cast());
  433. }
  434. @override
  435. FromProperty? operator [](int index) {
  436. if (index < 0 || index >= length) {
  437. throw RangeError.index(index, this, 'index');
  438. }
  439. final buffer = SpineBindings.bindings.spine_array_from_property_buffer(nativePtr.cast());
  440. if (buffer[index].address == 0) return null;
  441. final rtti = SpineBindings.bindings.spine_from_property_get_rtti(buffer[index]);
  442. final className = SpineBindings.bindings.spine_rtti_get_class_name(rtti).cast<Utf8>().toDartString();
  443. switch (className) {
  444. case 'spine_from_rotate':
  445. return FromRotate.fromPointer(buffer[index].cast());
  446. case 'spine_from_scale_x':
  447. return FromScaleX.fromPointer(buffer[index].cast());
  448. case 'spine_from_scale_y':
  449. return FromScaleY.fromPointer(buffer[index].cast());
  450. case 'spine_from_shear_y':
  451. return FromShearY.fromPointer(buffer[index].cast());
  452. case 'spine_from_x':
  453. return FromX.fromPointer(buffer[index].cast());
  454. case 'spine_from_y':
  455. return FromY.fromPointer(buffer[index].cast());
  456. default:
  457. throw UnsupportedError('Unknown concrete type: $className for abstract class FromProperty');
  458. }
  459. }
  460. }
  461. /// ArrayPhysicsConstraint wrapper
  462. class ArrayPhysicsConstraint extends NativeArray<PhysicsConstraint?> {
  463. ArrayPhysicsConstraint.fromPointer(Pointer<spine_array_physics_constraint_wrapper> super.ptr);
  464. @override
  465. int get length {
  466. return SpineBindings.bindings.spine_array_physics_constraint_size(nativePtr.cast());
  467. }
  468. @override
  469. PhysicsConstraint? operator [](int index) {
  470. if (index < 0 || index >= length) {
  471. throw RangeError.index(index, this, 'index');
  472. }
  473. final buffer = SpineBindings.bindings.spine_array_physics_constraint_buffer(nativePtr.cast());
  474. return buffer[index].address == 0 ? null : PhysicsConstraint.fromPointer(buffer[index]);
  475. }
  476. }
  477. /// ArrayPolygon wrapper
  478. class ArrayPolygon extends NativeArray<Polygon?> {
  479. ArrayPolygon.fromPointer(Pointer<spine_array_polygon_wrapper> super.ptr);
  480. @override
  481. int get length {
  482. return SpineBindings.bindings.spine_array_polygon_size(nativePtr.cast());
  483. }
  484. @override
  485. Polygon? operator [](int index) {
  486. if (index < 0 || index >= length) {
  487. throw RangeError.index(index, this, 'index');
  488. }
  489. final buffer = SpineBindings.bindings.spine_array_polygon_buffer(nativePtr.cast());
  490. return buffer[index].address == 0 ? null : Polygon.fromPointer(buffer[index]);
  491. }
  492. }
  493. /// ArraySkin wrapper
  494. class ArraySkin extends NativeArray<Skin?> {
  495. ArraySkin.fromPointer(Pointer<spine_array_skin_wrapper> super.ptr);
  496. @override
  497. int get length {
  498. return SpineBindings.bindings.spine_array_skin_size(nativePtr.cast());
  499. }
  500. @override
  501. Skin? operator [](int index) {
  502. if (index < 0 || index >= length) {
  503. throw RangeError.index(index, this, 'index');
  504. }
  505. final buffer = SpineBindings.bindings.spine_array_skin_buffer(nativePtr.cast());
  506. return buffer[index].address == 0 ? null : Skin.fromPointer(buffer[index]);
  507. }
  508. }
  509. /// ArraySlot wrapper
  510. class ArraySlot extends NativeArray<Slot?> {
  511. ArraySlot.fromPointer(Pointer<spine_array_slot_wrapper> super.ptr);
  512. @override
  513. int get length {
  514. return SpineBindings.bindings.spine_array_slot_size(nativePtr.cast());
  515. }
  516. @override
  517. Slot? operator [](int index) {
  518. if (index < 0 || index >= length) {
  519. throw RangeError.index(index, this, 'index');
  520. }
  521. final buffer = SpineBindings.bindings.spine_array_slot_buffer(nativePtr.cast());
  522. return buffer[index].address == 0 ? null : Slot.fromPointer(buffer[index]);
  523. }
  524. }
  525. /// ArraySlotData wrapper
  526. class ArraySlotData extends NativeArray<SlotData?> {
  527. ArraySlotData.fromPointer(Pointer<spine_array_slot_data_wrapper> super.ptr);
  528. @override
  529. int get length {
  530. return SpineBindings.bindings.spine_array_slot_data_size(nativePtr.cast());
  531. }
  532. @override
  533. SlotData? operator [](int index) {
  534. if (index < 0 || index >= length) {
  535. throw RangeError.index(index, this, 'index');
  536. }
  537. final buffer = SpineBindings.bindings.spine_array_slot_data_buffer(nativePtr.cast());
  538. return buffer[index].address == 0 ? null : SlotData.fromPointer(buffer[index]);
  539. }
  540. }
  541. /// ArrayTextureRegion wrapper
  542. class ArrayTextureRegion extends NativeArray<TextureRegion?> {
  543. ArrayTextureRegion.fromPointer(Pointer<spine_array_texture_region_wrapper> super.ptr);
  544. @override
  545. int get length {
  546. return SpineBindings.bindings.spine_array_texture_region_size(nativePtr.cast());
  547. }
  548. @override
  549. TextureRegion? operator [](int index) {
  550. if (index < 0 || index >= length) {
  551. throw RangeError.index(index, this, 'index');
  552. }
  553. final buffer = SpineBindings.bindings.spine_array_texture_region_buffer(nativePtr.cast());
  554. return buffer[index].address == 0 ? null : TextureRegion.fromPointer(buffer[index]);
  555. }
  556. }
  557. /// ArrayTimeline wrapper
  558. class ArrayTimeline extends NativeArray<Timeline?> {
  559. ArrayTimeline.fromPointer(Pointer<spine_array_timeline_wrapper> super.ptr);
  560. @override
  561. int get length {
  562. return SpineBindings.bindings.spine_array_timeline_size(nativePtr.cast());
  563. }
  564. @override
  565. Timeline? operator [](int index) {
  566. if (index < 0 || index >= length) {
  567. throw RangeError.index(index, this, 'index');
  568. }
  569. final buffer = SpineBindings.bindings.spine_array_timeline_buffer(nativePtr.cast());
  570. if (buffer[index].address == 0) return null;
  571. final rtti = SpineBindings.bindings.spine_timeline_get_rtti(buffer[index]);
  572. final className = SpineBindings.bindings.spine_rtti_get_class_name(rtti).cast<Utf8>().toDartString();
  573. switch (className) {
  574. case 'spine_alpha_timeline':
  575. return AlphaTimeline.fromPointer(buffer[index].cast());
  576. case 'spine_attachment_timeline':
  577. return AttachmentTimeline.fromPointer(buffer[index].cast());
  578. case 'spine_deform_timeline':
  579. return DeformTimeline.fromPointer(buffer[index].cast());
  580. case 'spine_draw_order_timeline':
  581. return DrawOrderTimeline.fromPointer(buffer[index].cast());
  582. case 'spine_event_timeline':
  583. return EventTimeline.fromPointer(buffer[index].cast());
  584. case 'spine_ik_constraint_timeline':
  585. return IkConstraintTimeline.fromPointer(buffer[index].cast());
  586. case 'spine_inherit_timeline':
  587. return InheritTimeline.fromPointer(buffer[index].cast());
  588. case 'spine_path_constraint_mix_timeline':
  589. return PathConstraintMixTimeline.fromPointer(buffer[index].cast());
  590. case 'spine_path_constraint_position_timeline':
  591. return PathConstraintPositionTimeline.fromPointer(buffer[index].cast());
  592. case 'spine_path_constraint_spacing_timeline':
  593. return PathConstraintSpacingTimeline.fromPointer(buffer[index].cast());
  594. case 'spine_physics_constraint_damping_timeline':
  595. return PhysicsConstraintDampingTimeline.fromPointer(buffer[index].cast());
  596. case 'spine_physics_constraint_gravity_timeline':
  597. return PhysicsConstraintGravityTimeline.fromPointer(buffer[index].cast());
  598. case 'spine_physics_constraint_inertia_timeline':
  599. return PhysicsConstraintInertiaTimeline.fromPointer(buffer[index].cast());
  600. case 'spine_physics_constraint_mass_timeline':
  601. return PhysicsConstraintMassTimeline.fromPointer(buffer[index].cast());
  602. case 'spine_physics_constraint_mix_timeline':
  603. return PhysicsConstraintMixTimeline.fromPointer(buffer[index].cast());
  604. case 'spine_physics_constraint_reset_timeline':
  605. return PhysicsConstraintResetTimeline.fromPointer(buffer[index].cast());
  606. case 'spine_physics_constraint_strength_timeline':
  607. return PhysicsConstraintStrengthTimeline.fromPointer(buffer[index].cast());
  608. case 'spine_physics_constraint_wind_timeline':
  609. return PhysicsConstraintWindTimeline.fromPointer(buffer[index].cast());
  610. case 'spine_rgb2_timeline':
  611. return Rgb2Timeline.fromPointer(buffer[index].cast());
  612. case 'spine_rgba2_timeline':
  613. return Rgba2Timeline.fromPointer(buffer[index].cast());
  614. case 'spine_rgba_timeline':
  615. return RgbaTimeline.fromPointer(buffer[index].cast());
  616. case 'spine_rgb_timeline':
  617. return RgbTimeline.fromPointer(buffer[index].cast());
  618. case 'spine_rotate_timeline':
  619. return RotateTimeline.fromPointer(buffer[index].cast());
  620. case 'spine_scale_timeline':
  621. return ScaleTimeline.fromPointer(buffer[index].cast());
  622. case 'spine_scale_x_timeline':
  623. return ScaleXTimeline.fromPointer(buffer[index].cast());
  624. case 'spine_scale_y_timeline':
  625. return ScaleYTimeline.fromPointer(buffer[index].cast());
  626. case 'spine_sequence_timeline':
  627. return SequenceTimeline.fromPointer(buffer[index].cast());
  628. case 'spine_shear_timeline':
  629. return ShearTimeline.fromPointer(buffer[index].cast());
  630. case 'spine_shear_x_timeline':
  631. return ShearXTimeline.fromPointer(buffer[index].cast());
  632. case 'spine_shear_y_timeline':
  633. return ShearYTimeline.fromPointer(buffer[index].cast());
  634. case 'spine_slider_mix_timeline':
  635. return SliderMixTimeline.fromPointer(buffer[index].cast());
  636. case 'spine_slider_timeline':
  637. return SliderTimeline.fromPointer(buffer[index].cast());
  638. case 'spine_transform_constraint_timeline':
  639. return TransformConstraintTimeline.fromPointer(buffer[index].cast());
  640. case 'spine_translate_timeline':
  641. return TranslateTimeline.fromPointer(buffer[index].cast());
  642. case 'spine_translate_x_timeline':
  643. return TranslateXTimeline.fromPointer(buffer[index].cast());
  644. case 'spine_translate_y_timeline':
  645. return TranslateYTimeline.fromPointer(buffer[index].cast());
  646. default:
  647. throw UnsupportedError('Unknown concrete type: $className for abstract class Timeline');
  648. }
  649. }
  650. }
  651. /// ArrayToProperty wrapper
  652. class ArrayToProperty extends NativeArray<ToProperty?> {
  653. ArrayToProperty.fromPointer(Pointer<spine_array_to_property_wrapper> super.ptr);
  654. @override
  655. int get length {
  656. return SpineBindings.bindings.spine_array_to_property_size(nativePtr.cast());
  657. }
  658. @override
  659. ToProperty? operator [](int index) {
  660. if (index < 0 || index >= length) {
  661. throw RangeError.index(index, this, 'index');
  662. }
  663. final buffer = SpineBindings.bindings.spine_array_to_property_buffer(nativePtr.cast());
  664. if (buffer[index].address == 0) return null;
  665. final rtti = SpineBindings.bindings.spine_to_property_get_rtti(buffer[index]);
  666. final className = SpineBindings.bindings.spine_rtti_get_class_name(rtti).cast<Utf8>().toDartString();
  667. switch (className) {
  668. case 'spine_to_rotate':
  669. return ToRotate.fromPointer(buffer[index].cast());
  670. case 'spine_to_scale_x':
  671. return ToScaleX.fromPointer(buffer[index].cast());
  672. case 'spine_to_scale_y':
  673. return ToScaleY.fromPointer(buffer[index].cast());
  674. case 'spine_to_shear_y':
  675. return ToShearY.fromPointer(buffer[index].cast());
  676. case 'spine_to_x':
  677. return ToX.fromPointer(buffer[index].cast());
  678. case 'spine_to_y':
  679. return ToY.fromPointer(buffer[index].cast());
  680. default:
  681. throw UnsupportedError('Unknown concrete type: $className for abstract class ToProperty');
  682. }
  683. }
  684. }
  685. /// ArrayTrackEntry wrapper
  686. class ArrayTrackEntry extends NativeArray<TrackEntry?> {
  687. ArrayTrackEntry.fromPointer(Pointer<spine_array_track_entry_wrapper> super.ptr);
  688. @override
  689. int get length {
  690. return SpineBindings.bindings.spine_array_track_entry_size(nativePtr.cast());
  691. }
  692. @override
  693. TrackEntry? operator [](int index) {
  694. if (index < 0 || index >= length) {
  695. throw RangeError.index(index, this, 'index');
  696. }
  697. final buffer = SpineBindings.bindings.spine_array_track_entry_buffer(nativePtr.cast());
  698. return buffer[index].address == 0 ? null : TrackEntry.fromPointer(buffer[index]);
  699. }
  700. }
  701. /// ArrayUpdate wrapper
  702. class ArrayUpdate extends NativeArray<Update?> {
  703. ArrayUpdate.fromPointer(Pointer<spine_array_update_wrapper> super.ptr);
  704. @override
  705. int get length {
  706. return SpineBindings.bindings.spine_array_update_size(nativePtr.cast());
  707. }
  708. @override
  709. Update? operator [](int index) {
  710. if (index < 0 || index >= length) {
  711. throw RangeError.index(index, this, 'index');
  712. }
  713. final buffer = SpineBindings.bindings.spine_array_update_buffer(nativePtr.cast());
  714. if (buffer[index].address == 0) return null;
  715. final rtti = SpineBindings.bindings.spine_update_get_rtti(buffer[index]);
  716. final className = SpineBindings.bindings.spine_rtti_get_class_name(rtti).cast<Utf8>().toDartString();
  717. switch (className) {
  718. case 'spine_bone':
  719. return Bone.fromPointer(buffer[index].cast());
  720. case 'spine_bone_pose':
  721. return BonePose.fromPointer(buffer[index].cast());
  722. case 'spine_ik_constraint':
  723. return IkConstraint.fromPointer(buffer[index].cast());
  724. case 'spine_path_constraint':
  725. return PathConstraint.fromPointer(buffer[index].cast());
  726. case 'spine_physics_constraint':
  727. return PhysicsConstraint.fromPointer(buffer[index].cast());
  728. case 'spine_slider':
  729. return Slider.fromPointer(buffer[index].cast());
  730. case 'spine_transform_constraint':
  731. return TransformConstraint.fromPointer(buffer[index].cast());
  732. default:
  733. throw UnsupportedError('Unknown concrete type: $className for abstract class Update');
  734. }
  735. }
  736. }