react-native-nitro-pose-exercises 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/LICENSE +20 -0
  2. package/NitroPoseExercises.podspec +32 -0
  3. package/README.md +538 -0
  4. package/android/CMakeLists.txt +31 -0
  5. package/android/build.gradle +121 -0
  6. package/android/src/main/AndroidManifest.xml +2 -0
  7. package/android/src/main/cpp/cpp-adapter.cpp +11 -0
  8. package/android/src/main/java/com/margelo/nitro/nitroposeexercises/NitroPoseExercises.kt +535 -0
  9. package/android/src/main/java/com/margelo/nitro/nitroposeexercises/NitroPoseExercisesPackage.kt +22 -0
  10. package/ios/NitroPoseExercises.swift +527 -0
  11. package/lib/module/NitroPoseExercises.nitro.js +17 -0
  12. package/lib/module/NitroPoseExercises.nitro.js.map +1 -0
  13. package/lib/module/config/pushup.js +71 -0
  14. package/lib/module/config/pushup.js.map +1 -0
  15. package/lib/module/index.js +7 -0
  16. package/lib/module/index.js.map +1 -0
  17. package/lib/module/package.json +1 -0
  18. package/lib/typescript/package.json +1 -0
  19. package/lib/typescript/src/NitroPoseExercises.nitro.d.ts +97 -0
  20. package/lib/typescript/src/NitroPoseExercises.nitro.d.ts.map +1 -0
  21. package/lib/typescript/src/config/pushup.d.ts +3 -0
  22. package/lib/typescript/src/config/pushup.d.ts.map +1 -0
  23. package/lib/typescript/src/index.d.ts +6 -0
  24. package/lib/typescript/src/index.d.ts.map +1 -0
  25. package/nitro.json +23 -0
  26. package/nitrogen/generated/android/c++/JAngleDefinition.hpp +69 -0
  27. package/nitrogen/generated/android/c++/JAngleSnapshot.hpp +61 -0
  28. package/nitrogen/generated/android/c++/JExerciseConfig.hpp +166 -0
  29. package/nitrogen/generated/android/c++/JExercisePhase.hpp +67 -0
  30. package/nitrogen/generated/android/c++/JExerciseType.hpp +61 -0
  31. package/nitrogen/generated/android/c++/JFormFeedback.hpp +67 -0
  32. package/nitrogen/generated/android/c++/JFormRule.hpp +79 -0
  33. package/nitrogen/generated/android/c++/JFormSeverity.hpp +61 -0
  34. package/nitrogen/generated/android/c++/JFunc_void.hpp +75 -0
  35. package/nitrogen/generated/android/c++/JFunc_void_ExercisePhase.hpp +77 -0
  36. package/nitrogen/generated/android/c++/JFunc_void_FormFeedback.hpp +80 -0
  37. package/nitrogen/generated/android/c++/JFunc_void_HoldProgress.hpp +77 -0
  38. package/nitrogen/generated/android/c++/JFunc_void_RepData.hpp +81 -0
  39. package/nitrogen/generated/android/c++/JFunc_void_SessionResult.hpp +85 -0
  40. package/nitrogen/generated/android/c++/JHoldProgress.hpp +65 -0
  41. package/nitrogen/generated/android/c++/JHybridNitroPoseExercisesSpec.cpp +311 -0
  42. package/nitrogen/generated/android/c++/JHybridNitroPoseExercisesSpec.hpp +87 -0
  43. package/nitrogen/generated/android/c++/JLandmark.hpp +69 -0
  44. package/nitrogen/generated/android/c++/JPhaseThreshold.hpp +71 -0
  45. package/nitrogen/generated/android/c++/JRepData.hpp +90 -0
  46. package/nitrogen/generated/android/c++/JSessionResult.hpp +120 -0
  47. package/nitrogen/generated/android/c++/JSessionStatus.hpp +67 -0
  48. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/AngleDefinition.kt +66 -0
  49. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/AngleSnapshot.kt +56 -0
  50. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/ExerciseConfig.kt +81 -0
  51. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/ExercisePhase.kt +26 -0
  52. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/ExerciseType.kt +24 -0
  53. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/FormFeedback.kt +61 -0
  54. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/FormRule.kt +76 -0
  55. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/FormSeverity.kt +24 -0
  56. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/Func_void.kt +80 -0
  57. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/Func_void_ExercisePhase.kt +80 -0
  58. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/Func_void_FormFeedback.kt +80 -0
  59. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/Func_void_HoldProgress.kt +80 -0
  60. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/Func_void_RepData.kt +80 -0
  61. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/Func_void_SessionResult.kt +80 -0
  62. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/HoldProgress.kt +61 -0
  63. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/HybridNitroPoseExercisesSpec.kt +196 -0
  64. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/Landmark.kt +66 -0
  65. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/PhaseThreshold.kt +66 -0
  66. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/RepData.kt +66 -0
  67. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/SessionResult.kt +76 -0
  68. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/SessionStatus.kt +26 -0
  69. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/nitroposeexercisesOnLoad.kt +35 -0
  70. package/nitrogen/generated/android/nitroposeexercises+autolinking.cmake +81 -0
  71. package/nitrogen/generated/android/nitroposeexercises+autolinking.gradle +27 -0
  72. package/nitrogen/generated/android/nitroposeexercisesOnLoad.cpp +66 -0
  73. package/nitrogen/generated/android/nitroposeexercisesOnLoad.hpp +34 -0
  74. package/nitrogen/generated/ios/NitroPoseExercises+autolinking.rb +62 -0
  75. package/nitrogen/generated/ios/NitroPoseExercises-Swift-Cxx-Bridge.cpp +100 -0
  76. package/nitrogen/generated/ios/NitroPoseExercises-Swift-Cxx-Bridge.hpp +449 -0
  77. package/nitrogen/generated/ios/NitroPoseExercises-Swift-Cxx-Umbrella.hpp +95 -0
  78. package/nitrogen/generated/ios/NitroPoseExercisesAutolinking.mm +33 -0
  79. package/nitrogen/generated/ios/NitroPoseExercisesAutolinking.swift +26 -0
  80. package/nitrogen/generated/ios/c++/HybridNitroPoseExercisesSpecSwift.cpp +11 -0
  81. package/nitrogen/generated/ios/c++/HybridNitroPoseExercisesSpecSwift.hpp +236 -0
  82. package/nitrogen/generated/ios/swift/AngleDefinition.swift +44 -0
  83. package/nitrogen/generated/ios/swift/AngleSnapshot.swift +34 -0
  84. package/nitrogen/generated/ios/swift/ExerciseConfig.swift +83 -0
  85. package/nitrogen/generated/ios/swift/ExercisePhase.swift +52 -0
  86. package/nitrogen/generated/ios/swift/ExerciseType.swift +44 -0
  87. package/nitrogen/generated/ios/swift/FormFeedback.swift +39 -0
  88. package/nitrogen/generated/ios/swift/FormRule.swift +54 -0
  89. package/nitrogen/generated/ios/swift/FormSeverity.swift +44 -0
  90. package/nitrogen/generated/ios/swift/Func_void.swift +46 -0
  91. package/nitrogen/generated/ios/swift/Func_void_ExercisePhase.swift +46 -0
  92. package/nitrogen/generated/ios/swift/Func_void_FormFeedback.swift +46 -0
  93. package/nitrogen/generated/ios/swift/Func_void_HoldProgress.swift +46 -0
  94. package/nitrogen/generated/ios/swift/Func_void_RepData.swift +46 -0
  95. package/nitrogen/generated/ios/swift/Func_void_SessionResult.swift +46 -0
  96. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
  97. package/nitrogen/generated/ios/swift/HoldProgress.swift +39 -0
  98. package/nitrogen/generated/ios/swift/HybridNitroPoseExercisesSpec.swift +73 -0
  99. package/nitrogen/generated/ios/swift/HybridNitroPoseExercisesSpec_cxx.swift +483 -0
  100. package/nitrogen/generated/ios/swift/Landmark.swift +44 -0
  101. package/nitrogen/generated/ios/swift/PhaseThreshold.swift +44 -0
  102. package/nitrogen/generated/ios/swift/RepData.swift +50 -0
  103. package/nitrogen/generated/ios/swift/SessionResult.swift +66 -0
  104. package/nitrogen/generated/ios/swift/SessionStatus.swift +52 -0
  105. package/nitrogen/generated/shared/c++/AngleDefinition.hpp +95 -0
  106. package/nitrogen/generated/shared/c++/AngleSnapshot.hpp +87 -0
  107. package/nitrogen/generated/shared/c++/ExerciseConfig.hpp +122 -0
  108. package/nitrogen/generated/shared/c++/ExercisePhase.hpp +88 -0
  109. package/nitrogen/generated/shared/c++/ExerciseType.hpp +80 -0
  110. package/nitrogen/generated/shared/c++/FormFeedback.hpp +93 -0
  111. package/nitrogen/generated/shared/c++/FormRule.hpp +105 -0
  112. package/nitrogen/generated/shared/c++/FormSeverity.hpp +80 -0
  113. package/nitrogen/generated/shared/c++/HoldProgress.hpp +91 -0
  114. package/nitrogen/generated/shared/c++/HybridNitroPoseExercisesSpec.cpp +46 -0
  115. package/nitrogen/generated/shared/c++/HybridNitroPoseExercisesSpec.hpp +117 -0
  116. package/nitrogen/generated/shared/c++/Landmark.hpp +95 -0
  117. package/nitrogen/generated/shared/c++/PhaseThreshold.hpp +97 -0
  118. package/nitrogen/generated/shared/c++/RepData.hpp +97 -0
  119. package/nitrogen/generated/shared/c++/SessionResult.hpp +108 -0
  120. package/nitrogen/generated/shared/c++/SessionStatus.hpp +88 -0
  121. package/package.json +187 -0
  122. package/src/NitroPoseExercises.nitro.ts +155 -0
  123. package/src/config/pushup.ts +62 -0
  124. package/src/index.tsx +28 -0
@@ -0,0 +1,311 @@
1
+ ///
2
+ /// JHybridNitroPoseExercisesSpec.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include "JHybridNitroPoseExercisesSpec.hpp"
9
+
10
+ // Forward declaration of `SessionStatus` to properly resolve imports.
11
+ namespace margelo::nitro::nitroposeexercises { enum class SessionStatus; }
12
+ // Forward declaration of `RepData` to properly resolve imports.
13
+ namespace margelo::nitro::nitroposeexercises { struct RepData; }
14
+ // Forward declaration of `AngleSnapshot` to properly resolve imports.
15
+ namespace margelo::nitro::nitroposeexercises { struct AngleSnapshot; }
16
+ // Forward declaration of `ExercisePhase` to properly resolve imports.
17
+ namespace margelo::nitro::nitroposeexercises { enum class ExercisePhase; }
18
+ // Forward declaration of `FormFeedback` to properly resolve imports.
19
+ namespace margelo::nitro::nitroposeexercises { struct FormFeedback; }
20
+ // Forward declaration of `FormSeverity` to properly resolve imports.
21
+ namespace margelo::nitro::nitroposeexercises { enum class FormSeverity; }
22
+ // Forward declaration of `HoldProgress` to properly resolve imports.
23
+ namespace margelo::nitro::nitroposeexercises { struct HoldProgress; }
24
+ // Forward declaration of `SessionResult` to properly resolve imports.
25
+ namespace margelo::nitro::nitroposeexercises { struct SessionResult; }
26
+ // Forward declaration of `Landmark` to properly resolve imports.
27
+ namespace margelo::nitro::nitroposeexercises { struct Landmark; }
28
+ // Forward declaration of `ExerciseConfig` to properly resolve imports.
29
+ namespace margelo::nitro::nitroposeexercises { struct ExerciseConfig; }
30
+ // Forward declaration of `ExerciseType` to properly resolve imports.
31
+ namespace margelo::nitro::nitroposeexercises { enum class ExerciseType; }
32
+ // Forward declaration of `AngleDefinition` to properly resolve imports.
33
+ namespace margelo::nitro::nitroposeexercises { struct AngleDefinition; }
34
+ // Forward declaration of `PhaseThreshold` to properly resolve imports.
35
+ namespace margelo::nitro::nitroposeexercises { struct PhaseThreshold; }
36
+ // Forward declaration of `FormRule` to properly resolve imports.
37
+ namespace margelo::nitro::nitroposeexercises { struct FormRule; }
38
+ // Forward declaration of `HybridFrameSpec` to properly resolve imports.
39
+ namespace margelo::nitro::camera { class HybridFrameSpec; }
40
+
41
+ #include "SessionStatus.hpp"
42
+ #include "JSessionStatus.hpp"
43
+ #include "RepData.hpp"
44
+ #include <functional>
45
+ #include <optional>
46
+ #include "JFunc_void_RepData.hpp"
47
+ #include <NitroModules/JNICallable.hpp>
48
+ #include "JRepData.hpp"
49
+ #include "AngleSnapshot.hpp"
50
+ #include <vector>
51
+ #include "JAngleSnapshot.hpp"
52
+ #include <string>
53
+ #include "ExercisePhase.hpp"
54
+ #include "JFunc_void_ExercisePhase.hpp"
55
+ #include "JExercisePhase.hpp"
56
+ #include "FormFeedback.hpp"
57
+ #include "JFunc_void_FormFeedback.hpp"
58
+ #include "JFormFeedback.hpp"
59
+ #include "FormSeverity.hpp"
60
+ #include "JFormSeverity.hpp"
61
+ #include "HoldProgress.hpp"
62
+ #include "JFunc_void_HoldProgress.hpp"
63
+ #include "JHoldProgress.hpp"
64
+ #include "JFunc_void.hpp"
65
+ #include "SessionResult.hpp"
66
+ #include "JFunc_void_SessionResult.hpp"
67
+ #include "JSessionResult.hpp"
68
+ #include "Landmark.hpp"
69
+ #include "JLandmark.hpp"
70
+ #include <NitroModules/Promise.hpp>
71
+ #include <NitroModules/JPromise.hpp>
72
+ #include <NitroModules/JUnit.hpp>
73
+ #include "ExerciseConfig.hpp"
74
+ #include "JExerciseConfig.hpp"
75
+ #include "ExerciseType.hpp"
76
+ #include "JExerciseType.hpp"
77
+ #include "AngleDefinition.hpp"
78
+ #include "JAngleDefinition.hpp"
79
+ #include "PhaseThreshold.hpp"
80
+ #include "JPhaseThreshold.hpp"
81
+ #include "FormRule.hpp"
82
+ #include "JFormRule.hpp"
83
+ #include <memory>
84
+ #include <VisionCamera/HybridFrameSpec.hpp>
85
+ #include <VisionCamera/JHybridFrameSpec.hpp>
86
+
87
+ namespace margelo::nitro::nitroposeexercises {
88
+
89
+ std::shared_ptr<JHybridNitroPoseExercisesSpec> JHybridNitroPoseExercisesSpec::JavaPart::getJHybridNitroPoseExercisesSpec() {
90
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
91
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridNitroPoseExercisesSpec>(hybridObject);
92
+ if (castHybridObject == nullptr) [[unlikely]] {
93
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridNitroPoseExercisesSpec!");
94
+ }
95
+ return castHybridObject;
96
+ }
97
+
98
+ jni::local_ref<JHybridNitroPoseExercisesSpec::CxxPart::jhybriddata> JHybridNitroPoseExercisesSpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
99
+ return makeCxxInstance(jThis);
100
+ }
101
+
102
+ std::shared_ptr<JHybridObject> JHybridNitroPoseExercisesSpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
103
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridNitroPoseExercisesSpec::JavaPart>(javaPart);
104
+ if (castJavaPart == nullptr) [[unlikely]] {
105
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridNitroPoseExercisesSpec::JavaPart!");
106
+ }
107
+ return std::make_shared<JHybridNitroPoseExercisesSpec>(castJavaPart);
108
+ }
109
+
110
+ void JHybridNitroPoseExercisesSpec::CxxPart::registerNatives() {
111
+ registerHybrid({
112
+ makeNativeMethod("initHybrid", JHybridNitroPoseExercisesSpec::CxxPart::initHybrid),
113
+ });
114
+ }
115
+
116
+ // Properties
117
+ SessionStatus JHybridNitroPoseExercisesSpec::getStatus() {
118
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JSessionStatus>()>("getStatus");
119
+ auto __result = method(_javaPart);
120
+ return __result->toCpp();
121
+ }
122
+ std::optional<std::function<void(const RepData& /* data */)>> JHybridNitroPoseExercisesSpec::getOnRepComplete() {
123
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void_RepData::javaobject>()>("getOnRepComplete_cxx");
124
+ auto __result = method(_javaPart);
125
+ return __result != nullptr ? std::make_optional([&]() -> std::function<void(const RepData& /* data */)> {
126
+ if (__result->isInstanceOf(JFunc_void_RepData_cxx::javaClassStatic())) [[likely]] {
127
+ auto downcast = jni::static_ref_cast<JFunc_void_RepData_cxx::javaobject>(__result);
128
+ return downcast->cthis()->getFunction();
129
+ } else {
130
+ auto __resultRef = jni::make_global(__result);
131
+ return JNICallable<JFunc_void_RepData, void(RepData)>(std::move(__resultRef));
132
+ }
133
+ }()) : std::nullopt;
134
+ }
135
+ void JHybridNitroPoseExercisesSpec::setOnRepComplete(const std::optional<std::function<void(const RepData& /* data */)>>& onRepComplete) {
136
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_RepData::javaobject> /* onRepComplete */)>("setOnRepComplete_cxx");
137
+ method(_javaPart, onRepComplete.has_value() ? JFunc_void_RepData_cxx::fromCpp(onRepComplete.value()) : nullptr);
138
+ }
139
+ std::optional<std::function<void(ExercisePhase /* phase */)>> JHybridNitroPoseExercisesSpec::getOnPhaseChange() {
140
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void_ExercisePhase::javaobject>()>("getOnPhaseChange_cxx");
141
+ auto __result = method(_javaPart);
142
+ return __result != nullptr ? std::make_optional([&]() -> std::function<void(ExercisePhase /* phase */)> {
143
+ if (__result->isInstanceOf(JFunc_void_ExercisePhase_cxx::javaClassStatic())) [[likely]] {
144
+ auto downcast = jni::static_ref_cast<JFunc_void_ExercisePhase_cxx::javaobject>(__result);
145
+ return downcast->cthis()->getFunction();
146
+ } else {
147
+ auto __resultRef = jni::make_global(__result);
148
+ return JNICallable<JFunc_void_ExercisePhase, void(ExercisePhase)>(std::move(__resultRef));
149
+ }
150
+ }()) : std::nullopt;
151
+ }
152
+ void JHybridNitroPoseExercisesSpec::setOnPhaseChange(const std::optional<std::function<void(ExercisePhase /* phase */)>>& onPhaseChange) {
153
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_ExercisePhase::javaobject> /* onPhaseChange */)>("setOnPhaseChange_cxx");
154
+ method(_javaPart, onPhaseChange.has_value() ? JFunc_void_ExercisePhase_cxx::fromCpp(onPhaseChange.value()) : nullptr);
155
+ }
156
+ std::optional<std::function<void(const FormFeedback& /* feedback */)>> JHybridNitroPoseExercisesSpec::getOnFormFeedback() {
157
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void_FormFeedback::javaobject>()>("getOnFormFeedback_cxx");
158
+ auto __result = method(_javaPart);
159
+ return __result != nullptr ? std::make_optional([&]() -> std::function<void(const FormFeedback& /* feedback */)> {
160
+ if (__result->isInstanceOf(JFunc_void_FormFeedback_cxx::javaClassStatic())) [[likely]] {
161
+ auto downcast = jni::static_ref_cast<JFunc_void_FormFeedback_cxx::javaobject>(__result);
162
+ return downcast->cthis()->getFunction();
163
+ } else {
164
+ auto __resultRef = jni::make_global(__result);
165
+ return JNICallable<JFunc_void_FormFeedback, void(FormFeedback)>(std::move(__resultRef));
166
+ }
167
+ }()) : std::nullopt;
168
+ }
169
+ void JHybridNitroPoseExercisesSpec::setOnFormFeedback(const std::optional<std::function<void(const FormFeedback& /* feedback */)>>& onFormFeedback) {
170
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_FormFeedback::javaobject> /* onFormFeedback */)>("setOnFormFeedback_cxx");
171
+ method(_javaPart, onFormFeedback.has_value() ? JFunc_void_FormFeedback_cxx::fromCpp(onFormFeedback.value()) : nullptr);
172
+ }
173
+ std::optional<std::function<void(const HoldProgress& /* progress */)>> JHybridNitroPoseExercisesSpec::getOnHoldProgress() {
174
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void_HoldProgress::javaobject>()>("getOnHoldProgress_cxx");
175
+ auto __result = method(_javaPart);
176
+ return __result != nullptr ? std::make_optional([&]() -> std::function<void(const HoldProgress& /* progress */)> {
177
+ if (__result->isInstanceOf(JFunc_void_HoldProgress_cxx::javaClassStatic())) [[likely]] {
178
+ auto downcast = jni::static_ref_cast<JFunc_void_HoldProgress_cxx::javaobject>(__result);
179
+ return downcast->cthis()->getFunction();
180
+ } else {
181
+ auto __resultRef = jni::make_global(__result);
182
+ return JNICallable<JFunc_void_HoldProgress, void(HoldProgress)>(std::move(__resultRef));
183
+ }
184
+ }()) : std::nullopt;
185
+ }
186
+ void JHybridNitroPoseExercisesSpec::setOnHoldProgress(const std::optional<std::function<void(const HoldProgress& /* progress */)>>& onHoldProgress) {
187
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_HoldProgress::javaobject> /* onHoldProgress */)>("setOnHoldProgress_cxx");
188
+ method(_javaPart, onHoldProgress.has_value() ? JFunc_void_HoldProgress_cxx::fromCpp(onHoldProgress.value()) : nullptr);
189
+ }
190
+ std::optional<std::function<void()>> JHybridNitroPoseExercisesSpec::getOnPoseLost() {
191
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>()>("getOnPoseLost_cxx");
192
+ auto __result = method(_javaPart);
193
+ return __result != nullptr ? std::make_optional([&]() -> std::function<void()> {
194
+ if (__result->isInstanceOf(JFunc_void_cxx::javaClassStatic())) [[likely]] {
195
+ auto downcast = jni::static_ref_cast<JFunc_void_cxx::javaobject>(__result);
196
+ return downcast->cthis()->getFunction();
197
+ } else {
198
+ auto __resultRef = jni::make_global(__result);
199
+ return JNICallable<JFunc_void, void()>(std::move(__resultRef));
200
+ }
201
+ }()) : std::nullopt;
202
+ }
203
+ void JHybridNitroPoseExercisesSpec::setOnPoseLost(const std::optional<std::function<void()>>& onPoseLost) {
204
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void::javaobject> /* onPoseLost */)>("setOnPoseLost_cxx");
205
+ method(_javaPart, onPoseLost.has_value() ? JFunc_void_cxx::fromCpp(onPoseLost.value()) : nullptr);
206
+ }
207
+ std::optional<std::function<void()>> JHybridNitroPoseExercisesSpec::getOnPoseRegained() {
208
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>()>("getOnPoseRegained_cxx");
209
+ auto __result = method(_javaPart);
210
+ return __result != nullptr ? std::make_optional([&]() -> std::function<void()> {
211
+ if (__result->isInstanceOf(JFunc_void_cxx::javaClassStatic())) [[likely]] {
212
+ auto downcast = jni::static_ref_cast<JFunc_void_cxx::javaobject>(__result);
213
+ return downcast->cthis()->getFunction();
214
+ } else {
215
+ auto __resultRef = jni::make_global(__result);
216
+ return JNICallable<JFunc_void, void()>(std::move(__resultRef));
217
+ }
218
+ }()) : std::nullopt;
219
+ }
220
+ void JHybridNitroPoseExercisesSpec::setOnPoseRegained(const std::optional<std::function<void()>>& onPoseRegained) {
221
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void::javaobject> /* onPoseRegained */)>("setOnPoseRegained_cxx");
222
+ method(_javaPart, onPoseRegained.has_value() ? JFunc_void_cxx::fromCpp(onPoseRegained.value()) : nullptr);
223
+ }
224
+ std::optional<std::function<void(const SessionResult& /* result */)>> JHybridNitroPoseExercisesSpec::getOnSessionComplete() {
225
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void_SessionResult::javaobject>()>("getOnSessionComplete_cxx");
226
+ auto __result = method(_javaPart);
227
+ return __result != nullptr ? std::make_optional([&]() -> std::function<void(const SessionResult& /* result */)> {
228
+ if (__result->isInstanceOf(JFunc_void_SessionResult_cxx::javaClassStatic())) [[likely]] {
229
+ auto downcast = jni::static_ref_cast<JFunc_void_SessionResult_cxx::javaobject>(__result);
230
+ return downcast->cthis()->getFunction();
231
+ } else {
232
+ auto __resultRef = jni::make_global(__result);
233
+ return JNICallable<JFunc_void_SessionResult, void(SessionResult)>(std::move(__resultRef));
234
+ }
235
+ }()) : std::nullopt;
236
+ }
237
+ void JHybridNitroPoseExercisesSpec::setOnSessionComplete(const std::optional<std::function<void(const SessionResult& /* result */)>>& onSessionComplete) {
238
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_SessionResult::javaobject> /* onSessionComplete */)>("setOnSessionComplete_cxx");
239
+ method(_javaPart, onSessionComplete.has_value() ? JFunc_void_SessionResult_cxx::fromCpp(onSessionComplete.value()) : nullptr);
240
+ }
241
+ ExercisePhase JHybridNitroPoseExercisesSpec::getCurrentPhase() {
242
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JExercisePhase>()>("getCurrentPhase");
243
+ auto __result = method(_javaPart);
244
+ return __result->toCpp();
245
+ }
246
+ double JHybridNitroPoseExercisesSpec::getRepCount() {
247
+ static const auto method = _javaPart->javaClassStatic()->getMethod<double()>("getRepCount");
248
+ auto __result = method(_javaPart);
249
+ return __result;
250
+ }
251
+ std::vector<Landmark> JHybridNitroPoseExercisesSpec::getLandmarks() {
252
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JArrayClass<JLandmark>>()>("getLandmarks");
253
+ auto __result = method(_javaPart);
254
+ return [&](auto&& __input) {
255
+ size_t __size = __input->size();
256
+ std::vector<Landmark> __vector;
257
+ __vector.reserve(__size);
258
+ for (size_t __i = 0; __i < __size; __i++) {
259
+ auto __element = __input->getElement(__i);
260
+ __vector.push_back(__element->toCpp());
261
+ }
262
+ return __vector;
263
+ }(__result);
264
+ }
265
+
266
+ // Methods
267
+ std::shared_ptr<Promise<void>> JHybridNitroPoseExercisesSpec::initialize(const std::string& modelPath) {
268
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* modelPath */)>("initialize");
269
+ auto __result = method(_javaPart, jni::make_jstring(modelPath));
270
+ return [&]() {
271
+ auto __promise = Promise<void>::create();
272
+ __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
273
+ __promise->resolve();
274
+ });
275
+ __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
276
+ jni::JniException __jniError(__throwable);
277
+ __promise->reject(std::make_exception_ptr(__jniError));
278
+ });
279
+ return __promise;
280
+ }();
281
+ }
282
+ void JHybridNitroPoseExercisesSpec::release() {
283
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("release");
284
+ method(_javaPart);
285
+ }
286
+ void JHybridNitroPoseExercisesSpec::loadExercise(const ExerciseConfig& config) {
287
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JExerciseConfig> /* config */)>("loadExercise");
288
+ method(_javaPart, JExerciseConfig::fromCpp(config));
289
+ }
290
+ void JHybridNitroPoseExercisesSpec::processFrame(const std::shared_ptr<margelo::nitro::camera::HybridFrameSpec>& frame) {
291
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<margelo::nitro::camera::JHybridFrameSpec::JavaPart> /* frame */)>("processFrame");
292
+ method(_javaPart, std::dynamic_pointer_cast<margelo::nitro::camera::JHybridFrameSpec>(frame)->getJavaPart());
293
+ }
294
+ void JHybridNitroPoseExercisesSpec::startSession(double targetReps, double countdownSeconds) {
295
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* targetReps */, double /* countdownSeconds */)>("startSession");
296
+ method(_javaPart, targetReps, countdownSeconds);
297
+ }
298
+ void JHybridNitroPoseExercisesSpec::pauseSession() {
299
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("pauseSession");
300
+ method(_javaPart);
301
+ }
302
+ void JHybridNitroPoseExercisesSpec::resumeSession() {
303
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("resumeSession");
304
+ method(_javaPart);
305
+ }
306
+ void JHybridNitroPoseExercisesSpec::stopSession() {
307
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("stopSession");
308
+ method(_javaPart);
309
+ }
310
+
311
+ } // namespace margelo::nitro::nitroposeexercises
@@ -0,0 +1,87 @@
1
+ ///
2
+ /// HybridNitroPoseExercisesSpec.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <NitroModules/JHybridObject.hpp>
11
+ #include <fbjni/fbjni.h>
12
+ #include "HybridNitroPoseExercisesSpec.hpp"
13
+
14
+
15
+
16
+
17
+ namespace margelo::nitro::nitroposeexercises {
18
+
19
+ using namespace facebook;
20
+
21
+ class JHybridNitroPoseExercisesSpec: public virtual HybridNitroPoseExercisesSpec, public virtual JHybridObject {
22
+ public:
23
+ struct JavaPart: public jni::JavaClass<JavaPart, JHybridObject::JavaPart> {
24
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroposeexercises/HybridNitroPoseExercisesSpec;";
25
+ std::shared_ptr<JHybridNitroPoseExercisesSpec> getJHybridNitroPoseExercisesSpec();
26
+ };
27
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridObject::CxxPart> {
28
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroposeexercises/HybridNitroPoseExercisesSpec$CxxPart;";
29
+ static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
30
+ static void registerNatives();
31
+ using HybridBase::HybridBase;
32
+ protected:
33
+ std::shared_ptr<JHybridObject> createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) override;
34
+ };
35
+
36
+ public:
37
+ explicit JHybridNitroPoseExercisesSpec(const jni::local_ref<JHybridNitroPoseExercisesSpec::JavaPart>& javaPart):
38
+ HybridObject(HybridNitroPoseExercisesSpec::TAG),
39
+ JHybridObject(javaPart),
40
+ _javaPart(jni::make_global(javaPart)) {}
41
+ ~JHybridNitroPoseExercisesSpec() override {
42
+ // Hermes GC can destroy JS objects on a non-JNI Thread.
43
+ jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); });
44
+ }
45
+
46
+ public:
47
+ inline const jni::global_ref<JHybridNitroPoseExercisesSpec::JavaPart>& getJavaPart() const noexcept {
48
+ return _javaPart;
49
+ }
50
+
51
+ public:
52
+ // Properties
53
+ SessionStatus getStatus() override;
54
+ std::optional<std::function<void(const RepData& /* data */)>> getOnRepComplete() override;
55
+ void setOnRepComplete(const std::optional<std::function<void(const RepData& /* data */)>>& onRepComplete) override;
56
+ std::optional<std::function<void(ExercisePhase /* phase */)>> getOnPhaseChange() override;
57
+ void setOnPhaseChange(const std::optional<std::function<void(ExercisePhase /* phase */)>>& onPhaseChange) override;
58
+ std::optional<std::function<void(const FormFeedback& /* feedback */)>> getOnFormFeedback() override;
59
+ void setOnFormFeedback(const std::optional<std::function<void(const FormFeedback& /* feedback */)>>& onFormFeedback) override;
60
+ std::optional<std::function<void(const HoldProgress& /* progress */)>> getOnHoldProgress() override;
61
+ void setOnHoldProgress(const std::optional<std::function<void(const HoldProgress& /* progress */)>>& onHoldProgress) override;
62
+ std::optional<std::function<void()>> getOnPoseLost() override;
63
+ void setOnPoseLost(const std::optional<std::function<void()>>& onPoseLost) override;
64
+ std::optional<std::function<void()>> getOnPoseRegained() override;
65
+ void setOnPoseRegained(const std::optional<std::function<void()>>& onPoseRegained) override;
66
+ std::optional<std::function<void(const SessionResult& /* result */)>> getOnSessionComplete() override;
67
+ void setOnSessionComplete(const std::optional<std::function<void(const SessionResult& /* result */)>>& onSessionComplete) override;
68
+ ExercisePhase getCurrentPhase() override;
69
+ double getRepCount() override;
70
+ std::vector<Landmark> getLandmarks() override;
71
+
72
+ public:
73
+ // Methods
74
+ std::shared_ptr<Promise<void>> initialize(const std::string& modelPath) override;
75
+ void release() override;
76
+ void loadExercise(const ExerciseConfig& config) override;
77
+ void processFrame(const std::shared_ptr<margelo::nitro::camera::HybridFrameSpec>& frame) override;
78
+ void startSession(double targetReps, double countdownSeconds) override;
79
+ void pauseSession() override;
80
+ void resumeSession() override;
81
+ void stopSession() override;
82
+
83
+ private:
84
+ jni::global_ref<JHybridNitroPoseExercisesSpec::JavaPart> _javaPart;
85
+ };
86
+
87
+ } // namespace margelo::nitro::nitroposeexercises
@@ -0,0 +1,69 @@
1
+ ///
2
+ /// JLandmark.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <fbjni/fbjni.h>
11
+ #include "Landmark.hpp"
12
+
13
+
14
+
15
+ namespace margelo::nitro::nitroposeexercises {
16
+
17
+ using namespace facebook;
18
+
19
+ /**
20
+ * The C++ JNI bridge between the C++ struct "Landmark" and the the Kotlin data class "Landmark".
21
+ */
22
+ struct JLandmark final: public jni::JavaClass<JLandmark> {
23
+ public:
24
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroposeexercises/Landmark;";
25
+
26
+ public:
27
+ /**
28
+ * Convert this Java/Kotlin-based struct to the C++ struct Landmark by copying all values to C++.
29
+ */
30
+ [[maybe_unused]]
31
+ [[nodiscard]]
32
+ Landmark toCpp() const {
33
+ static const auto clazz = javaClassStatic();
34
+ static const auto fieldX = clazz->getField<double>("x");
35
+ double x = this->getFieldValue(fieldX);
36
+ static const auto fieldY = clazz->getField<double>("y");
37
+ double y = this->getFieldValue(fieldY);
38
+ static const auto fieldZ = clazz->getField<double>("z");
39
+ double z = this->getFieldValue(fieldZ);
40
+ static const auto fieldVisibility = clazz->getField<double>("visibility");
41
+ double visibility = this->getFieldValue(fieldVisibility);
42
+ return Landmark(
43
+ x,
44
+ y,
45
+ z,
46
+ visibility
47
+ );
48
+ }
49
+
50
+ public:
51
+ /**
52
+ * Create a Java/Kotlin-based struct by copying all values from the given C++ struct to Java.
53
+ */
54
+ [[maybe_unused]]
55
+ static jni::local_ref<JLandmark::javaobject> fromCpp(const Landmark& value) {
56
+ using JSignature = JLandmark(double, double, double, double);
57
+ static const auto clazz = javaClassStatic();
58
+ static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
59
+ return create(
60
+ clazz,
61
+ value.x,
62
+ value.y,
63
+ value.z,
64
+ value.visibility
65
+ );
66
+ }
67
+ };
68
+
69
+ } // namespace margelo::nitro::nitroposeexercises
@@ -0,0 +1,71 @@
1
+ ///
2
+ /// JPhaseThreshold.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <fbjni/fbjni.h>
11
+ #include "PhaseThreshold.hpp"
12
+
13
+ #include "ExercisePhase.hpp"
14
+ #include "JExercisePhase.hpp"
15
+ #include <string>
16
+
17
+ namespace margelo::nitro::nitroposeexercises {
18
+
19
+ using namespace facebook;
20
+
21
+ /**
22
+ * The C++ JNI bridge between the C++ struct "PhaseThreshold" and the the Kotlin data class "PhaseThreshold".
23
+ */
24
+ struct JPhaseThreshold final: public jni::JavaClass<JPhaseThreshold> {
25
+ public:
26
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroposeexercises/PhaseThreshold;";
27
+
28
+ public:
29
+ /**
30
+ * Convert this Java/Kotlin-based struct to the C++ struct PhaseThreshold by copying all values to C++.
31
+ */
32
+ [[maybe_unused]]
33
+ [[nodiscard]]
34
+ PhaseThreshold toCpp() const {
35
+ static const auto clazz = javaClassStatic();
36
+ static const auto fieldPhase = clazz->getField<JExercisePhase>("phase");
37
+ jni::local_ref<JExercisePhase> phase = this->getFieldValue(fieldPhase);
38
+ static const auto fieldAngleName = clazz->getField<jni::JString>("angleName");
39
+ jni::local_ref<jni::JString> angleName = this->getFieldValue(fieldAngleName);
40
+ static const auto fieldMinAngle = clazz->getField<double>("minAngle");
41
+ double minAngle = this->getFieldValue(fieldMinAngle);
42
+ static const auto fieldMaxAngle = clazz->getField<double>("maxAngle");
43
+ double maxAngle = this->getFieldValue(fieldMaxAngle);
44
+ return PhaseThreshold(
45
+ phase->toCpp(),
46
+ angleName->toStdString(),
47
+ minAngle,
48
+ maxAngle
49
+ );
50
+ }
51
+
52
+ public:
53
+ /**
54
+ * Create a Java/Kotlin-based struct by copying all values from the given C++ struct to Java.
55
+ */
56
+ [[maybe_unused]]
57
+ static jni::local_ref<JPhaseThreshold::javaobject> fromCpp(const PhaseThreshold& value) {
58
+ using JSignature = JPhaseThreshold(jni::alias_ref<JExercisePhase>, jni::alias_ref<jni::JString>, double, double);
59
+ static const auto clazz = javaClassStatic();
60
+ static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
61
+ return create(
62
+ clazz,
63
+ JExercisePhase::fromCpp(value.phase),
64
+ jni::make_jstring(value.angleName),
65
+ value.minAngle,
66
+ value.maxAngle
67
+ );
68
+ }
69
+ };
70
+
71
+ } // namespace margelo::nitro::nitroposeexercises
@@ -0,0 +1,90 @@
1
+ ///
2
+ /// JRepData.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <fbjni/fbjni.h>
11
+ #include "RepData.hpp"
12
+
13
+ #include "AngleSnapshot.hpp"
14
+ #include "JAngleSnapshot.hpp"
15
+ #include <string>
16
+ #include <vector>
17
+
18
+ namespace margelo::nitro::nitroposeexercises {
19
+
20
+ using namespace facebook;
21
+
22
+ /**
23
+ * The C++ JNI bridge between the C++ struct "RepData" and the the Kotlin data class "RepData".
24
+ */
25
+ struct JRepData final: public jni::JavaClass<JRepData> {
26
+ public:
27
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroposeexercises/RepData;";
28
+
29
+ public:
30
+ /**
31
+ * Convert this Java/Kotlin-based struct to the C++ struct RepData by copying all values to C++.
32
+ */
33
+ [[maybe_unused]]
34
+ [[nodiscard]]
35
+ RepData toCpp() const {
36
+ static const auto clazz = javaClassStatic();
37
+ static const auto fieldRepNumber = clazz->getField<double>("repNumber");
38
+ double repNumber = this->getFieldValue(fieldRepNumber);
39
+ static const auto fieldDurationMs = clazz->getField<double>("durationMs");
40
+ double durationMs = this->getFieldValue(fieldDurationMs);
41
+ static const auto fieldFormScore = clazz->getField<double>("formScore");
42
+ double formScore = this->getFieldValue(fieldFormScore);
43
+ static const auto fieldAngles = clazz->getField<jni::JArrayClass<JAngleSnapshot>>("angles");
44
+ jni::local_ref<jni::JArrayClass<JAngleSnapshot>> angles = this->getFieldValue(fieldAngles);
45
+ return RepData(
46
+ repNumber,
47
+ durationMs,
48
+ formScore,
49
+ [&](auto&& __input) {
50
+ size_t __size = __input->size();
51
+ std::vector<AngleSnapshot> __vector;
52
+ __vector.reserve(__size);
53
+ for (size_t __i = 0; __i < __size; __i++) {
54
+ auto __element = __input->getElement(__i);
55
+ __vector.push_back(__element->toCpp());
56
+ }
57
+ return __vector;
58
+ }(angles)
59
+ );
60
+ }
61
+
62
+ public:
63
+ /**
64
+ * Create a Java/Kotlin-based struct by copying all values from the given C++ struct to Java.
65
+ */
66
+ [[maybe_unused]]
67
+ static jni::local_ref<JRepData::javaobject> fromCpp(const RepData& value) {
68
+ using JSignature = JRepData(double, double, double, jni::alias_ref<jni::JArrayClass<JAngleSnapshot>>);
69
+ static const auto clazz = javaClassStatic();
70
+ static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
71
+ return create(
72
+ clazz,
73
+ value.repNumber,
74
+ value.durationMs,
75
+ value.formScore,
76
+ [&](auto&& __input) {
77
+ size_t __size = __input.size();
78
+ jni::local_ref<jni::JArrayClass<JAngleSnapshot>> __array = jni::JArrayClass<JAngleSnapshot>::newArray(__size);
79
+ for (size_t __i = 0; __i < __size; __i++) {
80
+ const auto& __element = __input[__i];
81
+ auto __elementJni = JAngleSnapshot::fromCpp(__element);
82
+ __array->setElement(__i, *__elementJni);
83
+ }
84
+ return __array;
85
+ }(value.angles)
86
+ );
87
+ }
88
+ };
89
+
90
+ } // namespace margelo::nitro::nitroposeexercises