@rive-app/react-native 0.2.8 → 0.3.1

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 (140) hide show
  1. package/ios/DataSource.swift +1 -1
  2. package/ios/HybridRiveFileFactory.swift +1 -1
  3. package/ios/HybridRiveImageFactory.swift +1 -1
  4. package/lib/typescript/scripts/nitrogen-postprocess.d.ts +2 -0
  5. package/lib/typescript/scripts/nitrogen-postprocess.d.ts.map +1 -0
  6. package/nitrogen/generated/android/c++/JHybridBindableArtboardSpec.cpp +19 -25
  7. package/nitrogen/generated/android/c++/JHybridBindableArtboardSpec.hpp +19 -22
  8. package/nitrogen/generated/android/c++/JHybridFallbackFontSpec.cpp +18 -24
  9. package/nitrogen/generated/android/c++/JHybridFallbackFontSpec.hpp +19 -22
  10. package/nitrogen/generated/android/c++/JHybridRiveFileFactorySpec.cpp +30 -36
  11. package/nitrogen/generated/android/c++/JHybridRiveFileFactorySpec.hpp +19 -22
  12. package/nitrogen/generated/android/c++/JHybridRiveFileSpec.cpp +30 -36
  13. package/nitrogen/generated/android/c++/JHybridRiveFileSpec.hpp +19 -22
  14. package/nitrogen/generated/android/c++/JHybridRiveFontConfigSpec.cpp +34 -40
  15. package/nitrogen/generated/android/c++/JHybridRiveFontConfigSpec.hpp +19 -22
  16. package/nitrogen/generated/android/c++/JHybridRiveImageFactorySpec.cpp +27 -33
  17. package/nitrogen/generated/android/c++/JHybridRiveImageFactorySpec.hpp +19 -22
  18. package/nitrogen/generated/android/c++/JHybridRiveImageSpec.cpp +19 -25
  19. package/nitrogen/generated/android/c++/JHybridRiveImageSpec.hpp +19 -22
  20. package/nitrogen/generated/android/c++/JHybridRiveRuntimeSpec.cpp +21 -27
  21. package/nitrogen/generated/android/c++/JHybridRiveRuntimeSpec.hpp +19 -22
  22. package/nitrogen/generated/android/c++/JHybridRiveViewSpec.cpp +54 -60
  23. package/nitrogen/generated/android/c++/JHybridRiveViewSpec.hpp +19 -22
  24. package/nitrogen/generated/android/c++/JHybridViewModelArtboardPropertySpec.cpp +19 -25
  25. package/nitrogen/generated/android/c++/JHybridViewModelArtboardPropertySpec.hpp +20 -22
  26. package/nitrogen/generated/android/c++/JHybridViewModelBooleanPropertySpec.cpp +22 -28
  27. package/nitrogen/generated/android/c++/JHybridViewModelBooleanPropertySpec.hpp +20 -22
  28. package/nitrogen/generated/android/c++/JHybridViewModelColorPropertySpec.cpp +22 -28
  29. package/nitrogen/generated/android/c++/JHybridViewModelColorPropertySpec.hpp +20 -22
  30. package/nitrogen/generated/android/c++/JHybridViewModelEnumPropertySpec.cpp +22 -28
  31. package/nitrogen/generated/android/c++/JHybridViewModelEnumPropertySpec.hpp +20 -22
  32. package/nitrogen/generated/android/c++/JHybridViewModelImagePropertySpec.cpp +21 -27
  33. package/nitrogen/generated/android/c++/JHybridViewModelImagePropertySpec.hpp +20 -22
  34. package/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.cpp +40 -46
  35. package/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.hpp +19 -22
  36. package/nitrogen/generated/android/c++/JHybridViewModelListPropertySpec.cpp +28 -34
  37. package/nitrogen/generated/android/c++/JHybridViewModelListPropertySpec.hpp +20 -22
  38. package/nitrogen/generated/android/c++/JHybridViewModelNumberPropertySpec.cpp +22 -28
  39. package/nitrogen/generated/android/c++/JHybridViewModelNumberPropertySpec.hpp +20 -22
  40. package/nitrogen/generated/android/c++/JHybridViewModelPropertySpec.cpp +18 -24
  41. package/nitrogen/generated/android/c++/JHybridViewModelPropertySpec.hpp +19 -22
  42. package/nitrogen/generated/android/c++/JHybridViewModelSpec.cpp +29 -35
  43. package/nitrogen/generated/android/c++/JHybridViewModelSpec.hpp +19 -22
  44. package/nitrogen/generated/android/c++/JHybridViewModelStringPropertySpec.cpp +22 -28
  45. package/nitrogen/generated/android/c++/JHybridViewModelStringPropertySpec.hpp +20 -22
  46. package/nitrogen/generated/android/c++/JHybridViewModelTriggerPropertySpec.cpp +21 -27
  47. package/nitrogen/generated/android/c++/JHybridViewModelTriggerPropertySpec.hpp +20 -22
  48. package/nitrogen/generated/android/c++/JResolvedReferencedAsset.hpp +4 -4
  49. package/nitrogen/generated/android/c++/JVariant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.cpp +1 -1
  50. package/nitrogen/generated/android/c++/JVariant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.hpp +4 -4
  51. package/nitrogen/generated/android/c++/views/JHybridRiveViewStateUpdater.cpp +40 -40
  52. package/nitrogen/generated/android/c++/views/JHybridRiveViewStateUpdater.hpp +3 -3
  53. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/EventPropertiesOutput.kt +0 -7
  54. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridBindableArtboardSpec.kt +15 -18
  55. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridFallbackFontSpec.kt +14 -17
  56. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFileFactorySpec.kt +15 -18
  57. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFileSpec.kt +15 -18
  58. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFontConfigSpec.kt +15 -18
  59. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveImageFactorySpec.kt +15 -18
  60. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveImageSpec.kt +15 -18
  61. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveRuntimeSpec.kt +15 -18
  62. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveViewSpec.kt +16 -18
  63. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelArtboardPropertySpec.kt +14 -17
  64. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelBooleanPropertySpec.kt +15 -18
  65. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelColorPropertySpec.kt +15 -18
  66. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelEnumPropertySpec.kt +15 -18
  67. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelImagePropertySpec.kt +15 -18
  68. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelInstanceSpec.kt +15 -18
  69. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelListPropertySpec.kt +15 -18
  70. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelNumberPropertySpec.kt +15 -18
  71. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelPropertySpec.kt +14 -17
  72. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelSpec.kt +15 -18
  73. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelStringPropertySpec.kt +15 -18
  74. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelTriggerPropertySpec.kt +15 -18
  75. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/Variant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.kt +0 -7
  76. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/views/HybridRiveViewManager.kt +1 -1
  77. package/nitrogen/generated/android/riveOnLoad.cpp +121 -81
  78. package/nitrogen/generated/android/riveOnLoad.hpp +13 -4
  79. package/nitrogen/generated/ios/RNRive-Swift-Cxx-Bridge.hpp +23 -23
  80. package/nitrogen/generated/ios/swift/ArtboardBy.swift +8 -2
  81. package/nitrogen/generated/ios/swift/DataBindByName.swift +0 -1
  82. package/nitrogen/generated/ios/swift/Func_void.swift +0 -1
  83. package/nitrogen/generated/ios/swift/Func_void_RiveError.swift +0 -1
  84. package/nitrogen/generated/ios/swift/Func_void_UnifiedRiveEvent.swift +0 -1
  85. package/nitrogen/generated/ios/swift/Func_void_bool.swift +0 -1
  86. package/nitrogen/generated/ios/swift/Func_void_double.swift +0 -1
  87. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +0 -1
  88. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_HybridFallbackFontSpec_.swift +0 -1
  89. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_HybridRiveFileSpec_.swift +0 -1
  90. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_HybridRiveImageSpec_.swift +0 -1
  91. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +0 -1
  92. package/nitrogen/generated/ios/swift/HybridBindableArtboardSpec.swift +0 -1
  93. package/nitrogen/generated/ios/swift/HybridBindableArtboardSpec_cxx.swift +0 -1
  94. package/nitrogen/generated/ios/swift/HybridFallbackFontSpec.swift +0 -1
  95. package/nitrogen/generated/ios/swift/HybridFallbackFontSpec_cxx.swift +0 -1
  96. package/nitrogen/generated/ios/swift/HybridRiveFileFactorySpec.swift +0 -1
  97. package/nitrogen/generated/ios/swift/HybridRiveFileFactorySpec_cxx.swift +0 -1
  98. package/nitrogen/generated/ios/swift/HybridRiveFileSpec.swift +0 -1
  99. package/nitrogen/generated/ios/swift/HybridRiveFileSpec_cxx.swift +0 -1
  100. package/nitrogen/generated/ios/swift/HybridRiveFontConfigSpec.swift +0 -1
  101. package/nitrogen/generated/ios/swift/HybridRiveFontConfigSpec_cxx.swift +0 -1
  102. package/nitrogen/generated/ios/swift/HybridRiveImageFactorySpec.swift +0 -1
  103. package/nitrogen/generated/ios/swift/HybridRiveImageFactorySpec_cxx.swift +0 -1
  104. package/nitrogen/generated/ios/swift/HybridRiveImageSpec.swift +0 -1
  105. package/nitrogen/generated/ios/swift/HybridRiveImageSpec_cxx.swift +0 -1
  106. package/nitrogen/generated/ios/swift/HybridRiveRuntimeSpec.swift +0 -1
  107. package/nitrogen/generated/ios/swift/HybridRiveRuntimeSpec_cxx.swift +0 -1
  108. package/nitrogen/generated/ios/swift/HybridRiveViewSpec.swift +0 -1
  109. package/nitrogen/generated/ios/swift/HybridRiveViewSpec_cxx.swift +9 -3
  110. package/nitrogen/generated/ios/swift/HybridViewModelArtboardPropertySpec.swift +0 -1
  111. package/nitrogen/generated/ios/swift/HybridViewModelArtboardPropertySpec_cxx.swift +0 -1
  112. package/nitrogen/generated/ios/swift/HybridViewModelBooleanPropertySpec.swift +0 -1
  113. package/nitrogen/generated/ios/swift/HybridViewModelBooleanPropertySpec_cxx.swift +0 -1
  114. package/nitrogen/generated/ios/swift/HybridViewModelColorPropertySpec.swift +0 -1
  115. package/nitrogen/generated/ios/swift/HybridViewModelColorPropertySpec_cxx.swift +0 -1
  116. package/nitrogen/generated/ios/swift/HybridViewModelEnumPropertySpec.swift +0 -1
  117. package/nitrogen/generated/ios/swift/HybridViewModelEnumPropertySpec_cxx.swift +0 -1
  118. package/nitrogen/generated/ios/swift/HybridViewModelImagePropertySpec.swift +0 -1
  119. package/nitrogen/generated/ios/swift/HybridViewModelImagePropertySpec_cxx.swift +0 -1
  120. package/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec.swift +0 -1
  121. package/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec_cxx.swift +0 -1
  122. package/nitrogen/generated/ios/swift/HybridViewModelListPropertySpec.swift +0 -1
  123. package/nitrogen/generated/ios/swift/HybridViewModelListPropertySpec_cxx.swift +0 -1
  124. package/nitrogen/generated/ios/swift/HybridViewModelNumberPropertySpec.swift +0 -1
  125. package/nitrogen/generated/ios/swift/HybridViewModelNumberPropertySpec_cxx.swift +0 -1
  126. package/nitrogen/generated/ios/swift/HybridViewModelPropertySpec.swift +0 -1
  127. package/nitrogen/generated/ios/swift/HybridViewModelPropertySpec_cxx.swift +0 -1
  128. package/nitrogen/generated/ios/swift/HybridViewModelSpec.swift +0 -1
  129. package/nitrogen/generated/ios/swift/HybridViewModelSpec_cxx.swift +0 -1
  130. package/nitrogen/generated/ios/swift/HybridViewModelStringPropertySpec.swift +0 -1
  131. package/nitrogen/generated/ios/swift/HybridViewModelStringPropertySpec_cxx.swift +0 -1
  132. package/nitrogen/generated/ios/swift/HybridViewModelTriggerPropertySpec.swift +0 -1
  133. package/nitrogen/generated/ios/swift/HybridViewModelTriggerPropertySpec_cxx.swift +0 -1
  134. package/nitrogen/generated/ios/swift/ReferencedAssetsType.swift +0 -1
  135. package/nitrogen/generated/ios/swift/ResolvedReferencedAsset.swift +0 -1
  136. package/nitrogen/generated/ios/swift/RiveError.swift +0 -1
  137. package/nitrogen/generated/ios/swift/UnifiedRiveEvent.swift +8 -2
  138. package/nitrogen/generated/shared/c++/views/HybridRiveViewComponent.cpp +4 -17
  139. package/nitrogen/generated/shared/c++/views/HybridRiveViewComponent.hpp +8 -5
  140. package/package.json +7 -7
@@ -17,54 +17,48 @@
17
17
 
18
18
  namespace margelo::nitro::rive {
19
19
 
20
- jni::local_ref<JHybridRiveRuntimeSpec::jhybriddata> JHybridRiveRuntimeSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
21
- return makeCxxInstance(jThis);
22
- }
23
-
24
- void JHybridRiveRuntimeSpec::registerNatives() {
25
- registerHybrid({
26
- makeNativeMethod("initHybrid", JHybridRiveRuntimeSpec::initHybrid),
27
- });
20
+ std::shared_ptr<JHybridRiveRuntimeSpec> JHybridRiveRuntimeSpec::JavaPart::getJHybridRiveRuntimeSpec() {
21
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
22
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridRiveRuntimeSpec>(hybridObject);
23
+ if (castHybridObject == nullptr) [[unlikely]] {
24
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridRiveRuntimeSpec!");
25
+ }
26
+ return castHybridObject;
28
27
  }
29
28
 
30
- size_t JHybridRiveRuntimeSpec::getExternalMemorySize() noexcept {
31
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
32
- return method(_javaPart);
29
+ jni::local_ref<JHybridRiveRuntimeSpec::CxxPart::jhybriddata> JHybridRiveRuntimeSpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
30
+ return makeCxxInstance(jThis);
33
31
  }
34
32
 
35
- bool JHybridRiveRuntimeSpec::equals(const std::shared_ptr<HybridObject>& other) {
36
- if (auto otherCast = std::dynamic_pointer_cast<JHybridRiveRuntimeSpec>(other)) {
37
- return _javaPart == otherCast->_javaPart;
33
+ std::shared_ptr<JHybridObject> JHybridRiveRuntimeSpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
34
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridRiveRuntimeSpec::JavaPart>(javaPart);
35
+ if (castJavaPart == nullptr) [[unlikely]] {
36
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridRiveRuntimeSpec::JavaPart!");
38
37
  }
39
- return false;
40
- }
41
-
42
- void JHybridRiveRuntimeSpec::dispose() noexcept {
43
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
44
- method(_javaPart);
38
+ return std::make_shared<JHybridRiveRuntimeSpec>(castJavaPart);
45
39
  }
46
40
 
47
- std::string JHybridRiveRuntimeSpec::toString() {
48
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
49
- auto javaString = method(_javaPart);
50
- return javaString->toStdString();
41
+ void JHybridRiveRuntimeSpec::CxxPart::registerNatives() {
42
+ registerHybrid({
43
+ makeNativeMethod("initHybrid", JHybridRiveRuntimeSpec::CxxPart::initHybrid),
44
+ });
51
45
  }
52
46
 
53
47
  // Properties
54
48
  bool JHybridRiveRuntimeSpec::getIsInitialized() {
55
- static const auto method = javaClassStatic()->getMethod<jboolean()>("isInitialized");
49
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean()>("isInitialized");
56
50
  auto __result = method(_javaPart);
57
51
  return static_cast<bool>(__result);
58
52
  }
59
53
  std::optional<std::string> JHybridRiveRuntimeSpec::getInitError() {
60
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getInitError");
54
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getInitError");
61
55
  auto __result = method(_javaPart);
62
56
  return __result != nullptr ? std::make_optional(__result->toStdString()) : std::nullopt;
63
57
  }
64
58
 
65
59
  // Methods
66
60
  std::shared_ptr<Promise<void>> JHybridRiveRuntimeSpec::initialize() {
67
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("initialize");
61
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("initialize");
68
62
  auto __result = method(_javaPart);
69
63
  return [&]() {
70
64
  auto __promise = Promise<void>::create();
@@ -18,34 +18,33 @@ namespace margelo::nitro::rive {
18
18
 
19
19
  using namespace facebook;
20
20
 
21
- class JHybridRiveRuntimeSpec: public jni::HybridClass<JHybridRiveRuntimeSpec, JHybridObject>,
22
- public virtual HybridRiveRuntimeSpec {
21
+ class JHybridRiveRuntimeSpec: public virtual HybridRiveRuntimeSpec, public virtual JHybridObject {
23
22
  public:
24
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveRuntimeSpec;";
25
- static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
26
- static void registerNatives();
27
-
28
- protected:
29
- // C++ constructor (called from Java via `initHybrid()`)
30
- explicit JHybridRiveRuntimeSpec(jni::alias_ref<jhybridobject> jThis) :
31
- HybridObject(HybridRiveRuntimeSpec::TAG),
32
- HybridBase(jThis),
33
- _javaPart(jni::make_global(jThis)) {}
23
+ struct JavaPart: public jni::JavaClass<JavaPart, JHybridObject::JavaPart> {
24
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveRuntimeSpec;";
25
+ std::shared_ptr<JHybridRiveRuntimeSpec> getJHybridRiveRuntimeSpec();
26
+ };
27
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridObject::CxxPart> {
28
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveRuntimeSpec$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
+ };
34
35
 
35
36
  public:
37
+ explicit JHybridRiveRuntimeSpec(const jni::local_ref<JHybridRiveRuntimeSpec::JavaPart>& javaPart):
38
+ HybridObject(HybridRiveRuntimeSpec::TAG),
39
+ JHybridObject(javaPart),
40
+ _javaPart(jni::make_global(javaPart)) {}
36
41
  ~JHybridRiveRuntimeSpec() override {
37
42
  // Hermes GC can destroy JS objects on a non-JNI Thread.
38
43
  jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); });
39
44
  }
40
45
 
41
46
  public:
42
- size_t getExternalMemorySize() noexcept override;
43
- bool equals(const std::shared_ptr<HybridObject>& other) override;
44
- void dispose() noexcept override;
45
- std::string toString() override;
46
-
47
- public:
48
- inline const jni::global_ref<JHybridRiveRuntimeSpec::javaobject>& getJavaPart() const noexcept {
47
+ inline const jni::global_ref<JHybridRiveRuntimeSpec::JavaPart>& getJavaPart() const noexcept {
49
48
  return _javaPart;
50
49
  }
51
50
 
@@ -59,9 +58,7 @@ namespace margelo::nitro::rive {
59
58
  std::shared_ptr<Promise<void>> initialize() override;
60
59
 
61
60
  private:
62
- friend HybridBase;
63
- using HybridBase::HybridBase;
64
- jni::global_ref<JHybridRiveRuntimeSpec::javaobject> _javaPart;
61
+ jni::global_ref<JHybridRiveRuntimeSpec::JavaPart> _javaPart;
65
62
  };
66
63
 
67
64
  } // namespace margelo::nitro::rive
@@ -65,114 +65,108 @@ namespace margelo::nitro::rive { enum class RiveEventType; }
65
65
 
66
66
  namespace margelo::nitro::rive {
67
67
 
68
- jni::local_ref<JHybridRiveViewSpec::jhybriddata> JHybridRiveViewSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
69
- return makeCxxInstance(jThis);
70
- }
71
-
72
- void JHybridRiveViewSpec::registerNatives() {
73
- registerHybrid({
74
- makeNativeMethod("initHybrid", JHybridRiveViewSpec::initHybrid),
75
- });
68
+ std::shared_ptr<JHybridRiveViewSpec> JHybridRiveViewSpec::JavaPart::getJHybridRiveViewSpec() {
69
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
70
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridRiveViewSpec>(hybridObject);
71
+ if (castHybridObject == nullptr) [[unlikely]] {
72
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridRiveViewSpec!");
73
+ }
74
+ return castHybridObject;
76
75
  }
77
76
 
78
- size_t JHybridRiveViewSpec::getExternalMemorySize() noexcept {
79
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
80
- return method(_javaPart);
77
+ jni::local_ref<JHybridRiveViewSpec::CxxPart::jhybriddata> JHybridRiveViewSpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
78
+ return makeCxxInstance(jThis);
81
79
  }
82
80
 
83
- bool JHybridRiveViewSpec::equals(const std::shared_ptr<HybridObject>& other) {
84
- if (auto otherCast = std::dynamic_pointer_cast<JHybridRiveViewSpec>(other)) {
85
- return _javaPart == otherCast->_javaPart;
81
+ std::shared_ptr<JHybridObject> JHybridRiveViewSpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
82
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridRiveViewSpec::JavaPart>(javaPart);
83
+ if (castJavaPart == nullptr) [[unlikely]] {
84
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridRiveViewSpec::JavaPart!");
86
85
  }
87
- return false;
88
- }
89
-
90
- void JHybridRiveViewSpec::dispose() noexcept {
91
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
92
- method(_javaPart);
86
+ return std::make_shared<JHybridRiveViewSpec>(castJavaPart);
93
87
  }
94
88
 
95
- std::string JHybridRiveViewSpec::toString() {
96
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
97
- auto javaString = method(_javaPart);
98
- return javaString->toStdString();
89
+ void JHybridRiveViewSpec::CxxPart::registerNatives() {
90
+ registerHybrid({
91
+ makeNativeMethod("initHybrid", JHybridRiveViewSpec::CxxPart::initHybrid),
92
+ });
99
93
  }
100
94
 
101
95
  // Properties
102
96
  std::optional<std::string> JHybridRiveViewSpec::getArtboardName() {
103
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getArtboardName");
97
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getArtboardName");
104
98
  auto __result = method(_javaPart);
105
99
  return __result != nullptr ? std::make_optional(__result->toStdString()) : std::nullopt;
106
100
  }
107
101
  void JHybridRiveViewSpec::setArtboardName(const std::optional<std::string>& artboardName) {
108
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* artboardName */)>("setArtboardName");
102
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* artboardName */)>("setArtboardName");
109
103
  method(_javaPart, artboardName.has_value() ? jni::make_jstring(artboardName.value()) : nullptr);
110
104
  }
111
105
  std::optional<std::string> JHybridRiveViewSpec::getStateMachineName() {
112
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getStateMachineName");
106
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getStateMachineName");
113
107
  auto __result = method(_javaPart);
114
108
  return __result != nullptr ? std::make_optional(__result->toStdString()) : std::nullopt;
115
109
  }
116
110
  void JHybridRiveViewSpec::setStateMachineName(const std::optional<std::string>& stateMachineName) {
117
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* stateMachineName */)>("setStateMachineName");
111
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* stateMachineName */)>("setStateMachineName");
118
112
  method(_javaPart, stateMachineName.has_value() ? jni::make_jstring(stateMachineName.value()) : nullptr);
119
113
  }
120
114
  std::optional<bool> JHybridRiveViewSpec::getAutoPlay() {
121
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JBoolean>()>("getAutoPlay");
115
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JBoolean>()>("getAutoPlay");
122
116
  auto __result = method(_javaPart);
123
117
  return __result != nullptr ? std::make_optional(static_cast<bool>(__result->value())) : std::nullopt;
124
118
  }
125
119
  void JHybridRiveViewSpec::setAutoPlay(std::optional<bool> autoPlay) {
126
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JBoolean> /* autoPlay */)>("setAutoPlay");
120
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JBoolean> /* autoPlay */)>("setAutoPlay");
127
121
  method(_javaPart, autoPlay.has_value() ? jni::JBoolean::valueOf(autoPlay.value()) : nullptr);
128
122
  }
129
123
  std::shared_ptr<HybridRiveFileSpec> JHybridRiveViewSpec::getFile() {
130
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridRiveFileSpec::javaobject>()>("getFile");
124
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridRiveFileSpec::JavaPart>()>("getFile");
131
125
  auto __result = method(_javaPart);
132
- return __result->cthis()->shared_cast<JHybridRiveFileSpec>();
126
+ return __result->getJHybridRiveFileSpec();
133
127
  }
134
128
  void JHybridRiveViewSpec::setFile(const std::shared_ptr<HybridRiveFileSpec>& file) {
135
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JHybridRiveFileSpec::javaobject> /* file */)>("setFile");
129
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JHybridRiveFileSpec::JavaPart> /* file */)>("setFile");
136
130
  method(_javaPart, std::dynamic_pointer_cast<JHybridRiveFileSpec>(file)->getJavaPart());
137
131
  }
138
132
  std::optional<Alignment> JHybridRiveViewSpec::getAlignment() {
139
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JAlignment>()>("getAlignment");
133
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JAlignment>()>("getAlignment");
140
134
  auto __result = method(_javaPart);
141
135
  return __result != nullptr ? std::make_optional(__result->toCpp()) : std::nullopt;
142
136
  }
143
137
  void JHybridRiveViewSpec::setAlignment(std::optional<Alignment> alignment) {
144
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JAlignment> /* alignment */)>("setAlignment");
138
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JAlignment> /* alignment */)>("setAlignment");
145
139
  method(_javaPart, alignment.has_value() ? JAlignment::fromCpp(alignment.value()) : nullptr);
146
140
  }
147
141
  std::optional<Fit> JHybridRiveViewSpec::getFit() {
148
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JFit>()>("getFit");
142
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFit>()>("getFit");
149
143
  auto __result = method(_javaPart);
150
144
  return __result != nullptr ? std::make_optional(__result->toCpp()) : std::nullopt;
151
145
  }
152
146
  void JHybridRiveViewSpec::setFit(std::optional<Fit> fit) {
153
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFit> /* fit */)>("setFit");
147
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFit> /* fit */)>("setFit");
154
148
  method(_javaPart, fit.has_value() ? JFit::fromCpp(fit.value()) : nullptr);
155
149
  }
156
150
  std::optional<double> JHybridRiveViewSpec::getLayoutScaleFactor() {
157
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JDouble>()>("getLayoutScaleFactor");
151
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JDouble>()>("getLayoutScaleFactor");
158
152
  auto __result = method(_javaPart);
159
153
  return __result != nullptr ? std::make_optional(__result->value()) : std::nullopt;
160
154
  }
161
155
  void JHybridRiveViewSpec::setLayoutScaleFactor(std::optional<double> layoutScaleFactor) {
162
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JDouble> /* layoutScaleFactor */)>("setLayoutScaleFactor");
156
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JDouble> /* layoutScaleFactor */)>("setLayoutScaleFactor");
163
157
  method(_javaPart, layoutScaleFactor.has_value() ? jni::JDouble::valueOf(layoutScaleFactor.value()) : nullptr);
164
158
  }
165
159
  std::optional<std::variant<std::shared_ptr<HybridViewModelInstanceSpec>, DataBindMode, DataBindByName>> JHybridRiveViewSpec::getDataBind() {
166
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JVariant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName>()>("getDataBind");
160
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JVariant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName>()>("getDataBind");
167
161
  auto __result = method(_javaPart);
168
162
  return __result != nullptr ? std::make_optional(__result->toCpp()) : std::nullopt;
169
163
  }
170
164
  void JHybridRiveViewSpec::setDataBind(const std::optional<std::variant<std::shared_ptr<HybridViewModelInstanceSpec>, DataBindMode, DataBindByName>>& dataBind) {
171
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JVariant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName> /* dataBind */)>("setDataBind");
165
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JVariant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName> /* dataBind */)>("setDataBind");
172
166
  method(_javaPart, dataBind.has_value() ? JVariant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName::fromCpp(dataBind.value()) : nullptr);
173
167
  }
174
168
  std::function<void(const RiveError& /* error */)> JHybridRiveViewSpec::getOnError() {
175
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JFunc_void_RiveError::javaobject>()>("getOnError_cxx");
169
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void_RiveError::javaobject>()>("getOnError_cxx");
176
170
  auto __result = method(_javaPart);
177
171
  return [&]() -> std::function<void(const RiveError& /* error */)> {
178
172
  if (__result->isInstanceOf(JFunc_void_RiveError_cxx::javaClassStatic())) [[likely]] {
@@ -185,13 +179,13 @@ namespace margelo::nitro::rive {
185
179
  }();
186
180
  }
187
181
  void JHybridRiveViewSpec::setOnError(const std::function<void(const RiveError& /* error */)>& onError) {
188
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_RiveError::javaobject> /* onError */)>("setOnError_cxx");
182
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_RiveError::javaobject> /* onError */)>("setOnError_cxx");
189
183
  method(_javaPart, JFunc_void_RiveError_cxx::fromCpp(onError));
190
184
  }
191
185
 
192
186
  // Methods
193
187
  std::shared_ptr<Promise<bool>> JHybridRiveViewSpec::awaitViewReady() {
194
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("awaitViewReady");
188
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("awaitViewReady");
195
189
  auto __result = method(_javaPart);
196
190
  return [&]() {
197
191
  auto __promise = Promise<bool>::create();
@@ -207,16 +201,16 @@ namespace margelo::nitro::rive {
207
201
  }();
208
202
  }
209
203
  void JHybridRiveViewSpec::bindViewModelInstance(const std::shared_ptr<HybridViewModelInstanceSpec>& viewModelInstance) {
210
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JHybridViewModelInstanceSpec::javaobject> /* viewModelInstance */)>("bindViewModelInstance");
204
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JHybridViewModelInstanceSpec::JavaPart> /* viewModelInstance */)>("bindViewModelInstance");
211
205
  method(_javaPart, std::dynamic_pointer_cast<JHybridViewModelInstanceSpec>(viewModelInstance)->getJavaPart());
212
206
  }
213
207
  std::optional<std::shared_ptr<HybridViewModelInstanceSpec>> JHybridRiveViewSpec::getViewModelInstance() {
214
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelInstanceSpec::javaobject>()>("getViewModelInstance");
208
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelInstanceSpec::JavaPart>()>("getViewModelInstance");
215
209
  auto __result = method(_javaPart);
216
- return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast<JHybridViewModelInstanceSpec>()) : std::nullopt;
210
+ return __result != nullptr ? std::make_optional(__result->getJHybridViewModelInstanceSpec()) : std::nullopt;
217
211
  }
218
212
  std::shared_ptr<Promise<void>> JHybridRiveViewSpec::play() {
219
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("play");
213
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("play");
220
214
  auto __result = method(_javaPart);
221
215
  return [&]() {
222
216
  auto __promise = Promise<void>::create();
@@ -231,7 +225,7 @@ namespace margelo::nitro::rive {
231
225
  }();
232
226
  }
233
227
  std::shared_ptr<Promise<void>> JHybridRiveViewSpec::pause() {
234
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("pause");
228
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("pause");
235
229
  auto __result = method(_javaPart);
236
230
  return [&]() {
237
231
  auto __promise = Promise<void>::create();
@@ -246,7 +240,7 @@ namespace margelo::nitro::rive {
246
240
  }();
247
241
  }
248
242
  std::shared_ptr<Promise<void>> JHybridRiveViewSpec::reset() {
249
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("reset");
243
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("reset");
250
244
  auto __result = method(_javaPart);
251
245
  return [&]() {
252
246
  auto __promise = Promise<void>::create();
@@ -261,45 +255,45 @@ namespace margelo::nitro::rive {
261
255
  }();
262
256
  }
263
257
  void JHybridRiveViewSpec::playIfNeeded() {
264
- static const auto method = javaClassStatic()->getMethod<void()>("playIfNeeded");
258
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("playIfNeeded");
265
259
  method(_javaPart);
266
260
  }
267
261
  void JHybridRiveViewSpec::onEventListener(const std::function<void(const UnifiedRiveEvent& /* event */)>& onEvent) {
268
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_UnifiedRiveEvent::javaobject> /* onEvent */)>("onEventListener_cxx");
262
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_UnifiedRiveEvent::javaobject> /* onEvent */)>("onEventListener_cxx");
269
263
  method(_javaPart, JFunc_void_UnifiedRiveEvent_cxx::fromCpp(onEvent));
270
264
  }
271
265
  void JHybridRiveViewSpec::removeEventListeners() {
272
- static const auto method = javaClassStatic()->getMethod<void()>("removeEventListeners");
266
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("removeEventListeners");
273
267
  method(_javaPart);
274
268
  }
275
269
  void JHybridRiveViewSpec::setNumberInputValue(const std::string& name, double value, const std::optional<std::string>& path) {
276
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* name */, double /* value */, jni::alias_ref<jni::JString> /* path */)>("setNumberInputValue");
270
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* name */, double /* value */, jni::alias_ref<jni::JString> /* path */)>("setNumberInputValue");
277
271
  method(_javaPart, jni::make_jstring(name), value, path.has_value() ? jni::make_jstring(path.value()) : nullptr);
278
272
  }
279
273
  double JHybridRiveViewSpec::getNumberInputValue(const std::string& name, const std::optional<std::string>& path) {
280
- static const auto method = javaClassStatic()->getMethod<double(jni::alias_ref<jni::JString> /* name */, jni::alias_ref<jni::JString> /* path */)>("getNumberInputValue");
274
+ static const auto method = _javaPart->javaClassStatic()->getMethod<double(jni::alias_ref<jni::JString> /* name */, jni::alias_ref<jni::JString> /* path */)>("getNumberInputValue");
281
275
  auto __result = method(_javaPart, jni::make_jstring(name), path.has_value() ? jni::make_jstring(path.value()) : nullptr);
282
276
  return __result;
283
277
  }
284
278
  void JHybridRiveViewSpec::setBooleanInputValue(const std::string& name, bool value, const std::optional<std::string>& path) {
285
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* name */, jboolean /* value */, jni::alias_ref<jni::JString> /* path */)>("setBooleanInputValue");
279
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* name */, jboolean /* value */, jni::alias_ref<jni::JString> /* path */)>("setBooleanInputValue");
286
280
  method(_javaPart, jni::make_jstring(name), value, path.has_value() ? jni::make_jstring(path.value()) : nullptr);
287
281
  }
288
282
  bool JHybridRiveViewSpec::getBooleanInputValue(const std::string& name, const std::optional<std::string>& path) {
289
- static const auto method = javaClassStatic()->getMethod<jboolean(jni::alias_ref<jni::JString> /* name */, jni::alias_ref<jni::JString> /* path */)>("getBooleanInputValue");
283
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean(jni::alias_ref<jni::JString> /* name */, jni::alias_ref<jni::JString> /* path */)>("getBooleanInputValue");
290
284
  auto __result = method(_javaPart, jni::make_jstring(name), path.has_value() ? jni::make_jstring(path.value()) : nullptr);
291
285
  return static_cast<bool>(__result);
292
286
  }
293
287
  void JHybridRiveViewSpec::triggerInput(const std::string& name, const std::optional<std::string>& path) {
294
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* name */, jni::alias_ref<jni::JString> /* path */)>("triggerInput");
288
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* name */, jni::alias_ref<jni::JString> /* path */)>("triggerInput");
295
289
  method(_javaPart, jni::make_jstring(name), path.has_value() ? jni::make_jstring(path.value()) : nullptr);
296
290
  }
297
291
  void JHybridRiveViewSpec::setTextRunValue(const std::string& name, const std::string& value, const std::optional<std::string>& path) {
298
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* name */, jni::alias_ref<jni::JString> /* value */, jni::alias_ref<jni::JString> /* path */)>("setTextRunValue");
292
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* name */, jni::alias_ref<jni::JString> /* value */, jni::alias_ref<jni::JString> /* path */)>("setTextRunValue");
299
293
  method(_javaPart, jni::make_jstring(name), jni::make_jstring(value), path.has_value() ? jni::make_jstring(path.value()) : nullptr);
300
294
  }
301
295
  std::string JHybridRiveViewSpec::getTextRunValue(const std::string& name, const std::optional<std::string>& path) {
302
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>(jni::alias_ref<jni::JString> /* name */, jni::alias_ref<jni::JString> /* path */)>("getTextRunValue");
296
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>(jni::alias_ref<jni::JString> /* name */, jni::alias_ref<jni::JString> /* path */)>("getTextRunValue");
303
297
  auto __result = method(_javaPart, jni::make_jstring(name), path.has_value() ? jni::make_jstring(path.value()) : nullptr);
304
298
  return __result->toStdString();
305
299
  }
@@ -18,34 +18,33 @@ namespace margelo::nitro::rive {
18
18
 
19
19
  using namespace facebook;
20
20
 
21
- class JHybridRiveViewSpec: public jni::HybridClass<JHybridRiveViewSpec, JHybridObject>,
22
- public virtual HybridRiveViewSpec {
21
+ class JHybridRiveViewSpec: public virtual HybridRiveViewSpec, public virtual JHybridObject {
23
22
  public:
24
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveViewSpec;";
25
- static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
26
- static void registerNatives();
27
-
28
- protected:
29
- // C++ constructor (called from Java via `initHybrid()`)
30
- explicit JHybridRiveViewSpec(jni::alias_ref<jhybridobject> jThis) :
31
- HybridObject(HybridRiveViewSpec::TAG),
32
- HybridBase(jThis),
33
- _javaPart(jni::make_global(jThis)) {}
23
+ struct JavaPart: public jni::JavaClass<JavaPart, JHybridObject::JavaPart> {
24
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveViewSpec;";
25
+ std::shared_ptr<JHybridRiveViewSpec> getJHybridRiveViewSpec();
26
+ };
27
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridObject::CxxPart> {
28
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveViewSpec$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
+ };
34
35
 
35
36
  public:
37
+ explicit JHybridRiveViewSpec(const jni::local_ref<JHybridRiveViewSpec::JavaPart>& javaPart):
38
+ HybridObject(HybridRiveViewSpec::TAG),
39
+ JHybridObject(javaPart),
40
+ _javaPart(jni::make_global(javaPart)) {}
36
41
  ~JHybridRiveViewSpec() override {
37
42
  // Hermes GC can destroy JS objects on a non-JNI Thread.
38
43
  jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); });
39
44
  }
40
45
 
41
46
  public:
42
- size_t getExternalMemorySize() noexcept override;
43
- bool equals(const std::shared_ptr<HybridObject>& other) override;
44
- void dispose() noexcept override;
45
- std::string toString() override;
46
-
47
- public:
48
- inline const jni::global_ref<JHybridRiveViewSpec::javaobject>& getJavaPart() const noexcept {
47
+ inline const jni::global_ref<JHybridRiveViewSpec::JavaPart>& getJavaPart() const noexcept {
49
48
  return _javaPart;
50
49
  }
51
50
 
@@ -90,9 +89,7 @@ namespace margelo::nitro::rive {
90
89
  std::string getTextRunValue(const std::string& name, const std::optional<std::string>& path) override;
91
90
 
92
91
  private:
93
- friend HybridBase;
94
- using HybridBase::HybridBase;
95
- jni::global_ref<JHybridRiveViewSpec::javaobject> _javaPart;
92
+ jni::global_ref<JHybridRiveViewSpec::JavaPart> _javaPart;
96
93
  };
97
94
 
98
95
  } // namespace margelo::nitro::rive
@@ -17,37 +17,31 @@ namespace margelo::nitro::rive { class HybridBindableArtboardSpec; }
17
17
 
18
18
  namespace margelo::nitro::rive {
19
19
 
20
- jni::local_ref<JHybridViewModelArtboardPropertySpec::jhybriddata> JHybridViewModelArtboardPropertySpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
21
- return makeCxxInstance(jThis);
22
- }
23
-
24
- void JHybridViewModelArtboardPropertySpec::registerNatives() {
25
- registerHybrid({
26
- makeNativeMethod("initHybrid", JHybridViewModelArtboardPropertySpec::initHybrid),
27
- });
20
+ std::shared_ptr<JHybridViewModelArtboardPropertySpec> JHybridViewModelArtboardPropertySpec::JavaPart::getJHybridViewModelArtboardPropertySpec() {
21
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
22
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridViewModelArtboardPropertySpec>(hybridObject);
23
+ if (castHybridObject == nullptr) [[unlikely]] {
24
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridViewModelArtboardPropertySpec!");
25
+ }
26
+ return castHybridObject;
28
27
  }
29
28
 
30
- size_t JHybridViewModelArtboardPropertySpec::getExternalMemorySize() noexcept {
31
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
32
- return method(_javaPart);
29
+ jni::local_ref<JHybridViewModelArtboardPropertySpec::CxxPart::jhybriddata> JHybridViewModelArtboardPropertySpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
30
+ return makeCxxInstance(jThis);
33
31
  }
34
32
 
35
- bool JHybridViewModelArtboardPropertySpec::equals(const std::shared_ptr<HybridObject>& other) {
36
- if (auto otherCast = std::dynamic_pointer_cast<JHybridViewModelArtboardPropertySpec>(other)) {
37
- return _javaPart == otherCast->_javaPart;
33
+ std::shared_ptr<JHybridObject> JHybridViewModelArtboardPropertySpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
34
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridViewModelArtboardPropertySpec::JavaPart>(javaPart);
35
+ if (castJavaPart == nullptr) [[unlikely]] {
36
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridViewModelArtboardPropertySpec::JavaPart!");
38
37
  }
39
- return false;
40
- }
41
-
42
- void JHybridViewModelArtboardPropertySpec::dispose() noexcept {
43
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
44
- method(_javaPart);
38
+ return std::make_shared<JHybridViewModelArtboardPropertySpec>(castJavaPart);
45
39
  }
46
40
 
47
- std::string JHybridViewModelArtboardPropertySpec::toString() {
48
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
49
- auto javaString = method(_javaPart);
50
- return javaString->toStdString();
41
+ void JHybridViewModelArtboardPropertySpec::CxxPart::registerNatives() {
42
+ registerHybrid({
43
+ makeNativeMethod("initHybrid", JHybridViewModelArtboardPropertySpec::CxxPart::initHybrid),
44
+ });
51
45
  }
52
46
 
53
47
  // Properties
@@ -55,7 +49,7 @@ namespace margelo::nitro::rive {
55
49
 
56
50
  // Methods
57
51
  void JHybridViewModelArtboardPropertySpec::set(const std::optional<std::shared_ptr<HybridBindableArtboardSpec>>& artboard) {
58
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JHybridBindableArtboardSpec::javaobject> /* artboard */)>("set");
52
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JHybridBindableArtboardSpec::JavaPart> /* artboard */)>("set");
59
53
  method(_javaPart, artboard.has_value() ? std::dynamic_pointer_cast<JHybridBindableArtboardSpec>(artboard.value())->getJavaPart() : nullptr);
60
54
  }
61
55
 
@@ -19,34 +19,34 @@ namespace margelo::nitro::rive {
19
19
 
20
20
  using namespace facebook;
21
21
 
22
- class JHybridViewModelArtboardPropertySpec: public jni::HybridClass<JHybridViewModelArtboardPropertySpec, JHybridViewModelPropertySpec>,
23
- public virtual HybridViewModelArtboardPropertySpec {
22
+ class JHybridViewModelArtboardPropertySpec: public virtual HybridViewModelArtboardPropertySpec, public virtual JHybridViewModelPropertySpec {
24
23
  public:
25
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelArtboardPropertySpec;";
26
- static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
27
- static void registerNatives();
28
-
29
- protected:
30
- // C++ constructor (called from Java via `initHybrid()`)
31
- explicit JHybridViewModelArtboardPropertySpec(jni::alias_ref<jhybridobject> jThis) :
32
- HybridObject(HybridViewModelArtboardPropertySpec::TAG),
33
- HybridBase(jThis),
34
- _javaPart(jni::make_global(jThis)) {}
24
+ struct JavaPart: public jni::JavaClass<JavaPart, JHybridViewModelPropertySpec::JavaPart> {
25
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelArtboardPropertySpec;";
26
+ std::shared_ptr<JHybridViewModelArtboardPropertySpec> getJHybridViewModelArtboardPropertySpec();
27
+ };
28
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridViewModelPropertySpec::CxxPart> {
29
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelArtboardPropertySpec$CxxPart;";
30
+ static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
31
+ static void registerNatives();
32
+ using HybridBase::HybridBase;
33
+ protected:
34
+ std::shared_ptr<JHybridObject> createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) override;
35
+ };
35
36
 
36
37
  public:
38
+ explicit JHybridViewModelArtboardPropertySpec(const jni::local_ref<JHybridViewModelArtboardPropertySpec::JavaPart>& javaPart):
39
+ HybridObject(HybridViewModelArtboardPropertySpec::TAG),
40
+ JHybridObject(javaPart),
41
+ JHybridViewModelPropertySpec(javaPart),
42
+ _javaPart(jni::make_global(javaPart)) {}
37
43
  ~JHybridViewModelArtboardPropertySpec() override {
38
44
  // Hermes GC can destroy JS objects on a non-JNI Thread.
39
45
  jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); });
40
46
  }
41
47
 
42
48
  public:
43
- size_t getExternalMemorySize() noexcept override;
44
- bool equals(const std::shared_ptr<HybridObject>& other) override;
45
- void dispose() noexcept override;
46
- std::string toString() override;
47
-
48
- public:
49
- inline const jni::global_ref<JHybridViewModelArtboardPropertySpec::javaobject>& getJavaPart() const noexcept {
49
+ inline const jni::global_ref<JHybridViewModelArtboardPropertySpec::JavaPart>& getJavaPart() const noexcept {
50
50
  return _javaPart;
51
51
  }
52
52
 
@@ -59,9 +59,7 @@ namespace margelo::nitro::rive {
59
59
  void set(const std::optional<std::shared_ptr<HybridBindableArtboardSpec>>& artboard) override;
60
60
 
61
61
  private:
62
- friend HybridBase;
63
- using HybridBase::HybridBase;
64
- jni::global_ref<JHybridViewModelArtboardPropertySpec::javaobject> _javaPart;
62
+ jni::global_ref<JHybridViewModelArtboardPropertySpec::JavaPart> _javaPart;
65
63
  };
66
64
 
67
65
  } // namespace margelo::nitro::rive