@rive-app/react-native 0.2.7 → 0.3.0

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 (141) hide show
  1. package/RNRive.podspec +22 -0
  2. package/ios/DataSource.swift +1 -1
  3. package/ios/HybridRiveFileFactory.swift +1 -1
  4. package/ios/HybridRiveImageFactory.swift +1 -1
  5. package/lib/typescript/scripts/nitrogen-postprocess.d.ts +2 -0
  6. package/lib/typescript/scripts/nitrogen-postprocess.d.ts.map +1 -0
  7. package/nitrogen/generated/android/c++/JHybridBindableArtboardSpec.cpp +19 -25
  8. package/nitrogen/generated/android/c++/JHybridBindableArtboardSpec.hpp +19 -22
  9. package/nitrogen/generated/android/c++/JHybridFallbackFontSpec.cpp +18 -24
  10. package/nitrogen/generated/android/c++/JHybridFallbackFontSpec.hpp +19 -22
  11. package/nitrogen/generated/android/c++/JHybridRiveFileFactorySpec.cpp +30 -36
  12. package/nitrogen/generated/android/c++/JHybridRiveFileFactorySpec.hpp +19 -22
  13. package/nitrogen/generated/android/c++/JHybridRiveFileSpec.cpp +30 -36
  14. package/nitrogen/generated/android/c++/JHybridRiveFileSpec.hpp +19 -22
  15. package/nitrogen/generated/android/c++/JHybridRiveFontConfigSpec.cpp +34 -40
  16. package/nitrogen/generated/android/c++/JHybridRiveFontConfigSpec.hpp +19 -22
  17. package/nitrogen/generated/android/c++/JHybridRiveImageFactorySpec.cpp +27 -33
  18. package/nitrogen/generated/android/c++/JHybridRiveImageFactorySpec.hpp +19 -22
  19. package/nitrogen/generated/android/c++/JHybridRiveImageSpec.cpp +19 -25
  20. package/nitrogen/generated/android/c++/JHybridRiveImageSpec.hpp +19 -22
  21. package/nitrogen/generated/android/c++/JHybridRiveRuntimeSpec.cpp +21 -27
  22. package/nitrogen/generated/android/c++/JHybridRiveRuntimeSpec.hpp +19 -22
  23. package/nitrogen/generated/android/c++/JHybridRiveViewSpec.cpp +54 -60
  24. package/nitrogen/generated/android/c++/JHybridRiveViewSpec.hpp +19 -22
  25. package/nitrogen/generated/android/c++/JHybridViewModelArtboardPropertySpec.cpp +19 -25
  26. package/nitrogen/generated/android/c++/JHybridViewModelArtboardPropertySpec.hpp +20 -22
  27. package/nitrogen/generated/android/c++/JHybridViewModelBooleanPropertySpec.cpp +22 -28
  28. package/nitrogen/generated/android/c++/JHybridViewModelBooleanPropertySpec.hpp +20 -22
  29. package/nitrogen/generated/android/c++/JHybridViewModelColorPropertySpec.cpp +22 -28
  30. package/nitrogen/generated/android/c++/JHybridViewModelColorPropertySpec.hpp +20 -22
  31. package/nitrogen/generated/android/c++/JHybridViewModelEnumPropertySpec.cpp +22 -28
  32. package/nitrogen/generated/android/c++/JHybridViewModelEnumPropertySpec.hpp +20 -22
  33. package/nitrogen/generated/android/c++/JHybridViewModelImagePropertySpec.cpp +21 -27
  34. package/nitrogen/generated/android/c++/JHybridViewModelImagePropertySpec.hpp +20 -22
  35. package/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.cpp +40 -46
  36. package/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.hpp +19 -22
  37. package/nitrogen/generated/android/c++/JHybridViewModelListPropertySpec.cpp +28 -34
  38. package/nitrogen/generated/android/c++/JHybridViewModelListPropertySpec.hpp +20 -22
  39. package/nitrogen/generated/android/c++/JHybridViewModelNumberPropertySpec.cpp +22 -28
  40. package/nitrogen/generated/android/c++/JHybridViewModelNumberPropertySpec.hpp +20 -22
  41. package/nitrogen/generated/android/c++/JHybridViewModelPropertySpec.cpp +18 -24
  42. package/nitrogen/generated/android/c++/JHybridViewModelPropertySpec.hpp +19 -22
  43. package/nitrogen/generated/android/c++/JHybridViewModelSpec.cpp +29 -35
  44. package/nitrogen/generated/android/c++/JHybridViewModelSpec.hpp +19 -22
  45. package/nitrogen/generated/android/c++/JHybridViewModelStringPropertySpec.cpp +22 -28
  46. package/nitrogen/generated/android/c++/JHybridViewModelStringPropertySpec.hpp +20 -22
  47. package/nitrogen/generated/android/c++/JHybridViewModelTriggerPropertySpec.cpp +21 -27
  48. package/nitrogen/generated/android/c++/JHybridViewModelTriggerPropertySpec.hpp +20 -22
  49. package/nitrogen/generated/android/c++/JResolvedReferencedAsset.hpp +4 -4
  50. package/nitrogen/generated/android/c++/JVariant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.cpp +1 -1
  51. package/nitrogen/generated/android/c++/JVariant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.hpp +4 -4
  52. package/nitrogen/generated/android/c++/views/JHybridRiveViewStateUpdater.cpp +40 -40
  53. package/nitrogen/generated/android/c++/views/JHybridRiveViewStateUpdater.hpp +3 -3
  54. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/EventPropertiesOutput.kt +0 -7
  55. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridBindableArtboardSpec.kt +15 -18
  56. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridFallbackFontSpec.kt +14 -17
  57. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFileFactorySpec.kt +15 -18
  58. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFileSpec.kt +15 -18
  59. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFontConfigSpec.kt +15 -18
  60. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveImageFactorySpec.kt +15 -18
  61. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveImageSpec.kt +15 -18
  62. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveRuntimeSpec.kt +15 -18
  63. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveViewSpec.kt +16 -18
  64. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelArtboardPropertySpec.kt +14 -17
  65. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelBooleanPropertySpec.kt +15 -18
  66. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelColorPropertySpec.kt +15 -18
  67. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelEnumPropertySpec.kt +15 -18
  68. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelImagePropertySpec.kt +15 -18
  69. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelInstanceSpec.kt +15 -18
  70. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelListPropertySpec.kt +15 -18
  71. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelNumberPropertySpec.kt +15 -18
  72. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelPropertySpec.kt +14 -17
  73. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelSpec.kt +15 -18
  74. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelStringPropertySpec.kt +15 -18
  75. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelTriggerPropertySpec.kt +15 -18
  76. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/Variant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.kt +0 -7
  77. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/views/HybridRiveViewManager.kt +1 -1
  78. package/nitrogen/generated/android/riveOnLoad.cpp +121 -81
  79. package/nitrogen/generated/android/riveOnLoad.hpp +13 -4
  80. package/nitrogen/generated/ios/RNRive-Swift-Cxx-Bridge.hpp +23 -23
  81. package/nitrogen/generated/ios/swift/ArtboardBy.swift +8 -2
  82. package/nitrogen/generated/ios/swift/DataBindByName.swift +0 -1
  83. package/nitrogen/generated/ios/swift/Func_void.swift +0 -1
  84. package/nitrogen/generated/ios/swift/Func_void_RiveError.swift +0 -1
  85. package/nitrogen/generated/ios/swift/Func_void_UnifiedRiveEvent.swift +0 -1
  86. package/nitrogen/generated/ios/swift/Func_void_bool.swift +0 -1
  87. package/nitrogen/generated/ios/swift/Func_void_double.swift +0 -1
  88. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +0 -1
  89. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_HybridFallbackFontSpec_.swift +0 -1
  90. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_HybridRiveFileSpec_.swift +0 -1
  91. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_HybridRiveImageSpec_.swift +0 -1
  92. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +0 -1
  93. package/nitrogen/generated/ios/swift/HybridBindableArtboardSpec.swift +0 -1
  94. package/nitrogen/generated/ios/swift/HybridBindableArtboardSpec_cxx.swift +0 -1
  95. package/nitrogen/generated/ios/swift/HybridFallbackFontSpec.swift +0 -1
  96. package/nitrogen/generated/ios/swift/HybridFallbackFontSpec_cxx.swift +0 -1
  97. package/nitrogen/generated/ios/swift/HybridRiveFileFactorySpec.swift +0 -1
  98. package/nitrogen/generated/ios/swift/HybridRiveFileFactorySpec_cxx.swift +0 -1
  99. package/nitrogen/generated/ios/swift/HybridRiveFileSpec.swift +0 -1
  100. package/nitrogen/generated/ios/swift/HybridRiveFileSpec_cxx.swift +0 -1
  101. package/nitrogen/generated/ios/swift/HybridRiveFontConfigSpec.swift +0 -1
  102. package/nitrogen/generated/ios/swift/HybridRiveFontConfigSpec_cxx.swift +0 -1
  103. package/nitrogen/generated/ios/swift/HybridRiveImageFactorySpec.swift +0 -1
  104. package/nitrogen/generated/ios/swift/HybridRiveImageFactorySpec_cxx.swift +0 -1
  105. package/nitrogen/generated/ios/swift/HybridRiveImageSpec.swift +0 -1
  106. package/nitrogen/generated/ios/swift/HybridRiveImageSpec_cxx.swift +0 -1
  107. package/nitrogen/generated/ios/swift/HybridRiveRuntimeSpec.swift +0 -1
  108. package/nitrogen/generated/ios/swift/HybridRiveRuntimeSpec_cxx.swift +0 -1
  109. package/nitrogen/generated/ios/swift/HybridRiveViewSpec.swift +0 -1
  110. package/nitrogen/generated/ios/swift/HybridRiveViewSpec_cxx.swift +9 -3
  111. package/nitrogen/generated/ios/swift/HybridViewModelArtboardPropertySpec.swift +0 -1
  112. package/nitrogen/generated/ios/swift/HybridViewModelArtboardPropertySpec_cxx.swift +0 -1
  113. package/nitrogen/generated/ios/swift/HybridViewModelBooleanPropertySpec.swift +0 -1
  114. package/nitrogen/generated/ios/swift/HybridViewModelBooleanPropertySpec_cxx.swift +0 -1
  115. package/nitrogen/generated/ios/swift/HybridViewModelColorPropertySpec.swift +0 -1
  116. package/nitrogen/generated/ios/swift/HybridViewModelColorPropertySpec_cxx.swift +0 -1
  117. package/nitrogen/generated/ios/swift/HybridViewModelEnumPropertySpec.swift +0 -1
  118. package/nitrogen/generated/ios/swift/HybridViewModelEnumPropertySpec_cxx.swift +0 -1
  119. package/nitrogen/generated/ios/swift/HybridViewModelImagePropertySpec.swift +0 -1
  120. package/nitrogen/generated/ios/swift/HybridViewModelImagePropertySpec_cxx.swift +0 -1
  121. package/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec.swift +0 -1
  122. package/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec_cxx.swift +0 -1
  123. package/nitrogen/generated/ios/swift/HybridViewModelListPropertySpec.swift +0 -1
  124. package/nitrogen/generated/ios/swift/HybridViewModelListPropertySpec_cxx.swift +0 -1
  125. package/nitrogen/generated/ios/swift/HybridViewModelNumberPropertySpec.swift +0 -1
  126. package/nitrogen/generated/ios/swift/HybridViewModelNumberPropertySpec_cxx.swift +0 -1
  127. package/nitrogen/generated/ios/swift/HybridViewModelPropertySpec.swift +0 -1
  128. package/nitrogen/generated/ios/swift/HybridViewModelPropertySpec_cxx.swift +0 -1
  129. package/nitrogen/generated/ios/swift/HybridViewModelSpec.swift +0 -1
  130. package/nitrogen/generated/ios/swift/HybridViewModelSpec_cxx.swift +0 -1
  131. package/nitrogen/generated/ios/swift/HybridViewModelStringPropertySpec.swift +0 -1
  132. package/nitrogen/generated/ios/swift/HybridViewModelStringPropertySpec_cxx.swift +0 -1
  133. package/nitrogen/generated/ios/swift/HybridViewModelTriggerPropertySpec.swift +0 -1
  134. package/nitrogen/generated/ios/swift/HybridViewModelTriggerPropertySpec_cxx.swift +0 -1
  135. package/nitrogen/generated/ios/swift/ReferencedAssetsType.swift +0 -1
  136. package/nitrogen/generated/ios/swift/ResolvedReferencedAsset.swift +0 -1
  137. package/nitrogen/generated/ios/swift/RiveError.swift +0 -1
  138. package/nitrogen/generated/ios/swift/UnifiedRiveEvent.swift +8 -2
  139. package/nitrogen/generated/shared/c++/views/HybridRiveViewComponent.cpp +4 -17
  140. package/nitrogen/generated/shared/c++/views/HybridRiveViewComponent.hpp +8 -5
  141. package/package.json +5 -5
@@ -18,34 +18,33 @@ namespace margelo::nitro::rive {
18
18
 
19
19
  using namespace facebook;
20
20
 
21
- class JHybridRiveFileSpec: public jni::HybridClass<JHybridRiveFileSpec, JHybridObject>,
22
- public virtual HybridRiveFileSpec {
21
+ class JHybridRiveFileSpec: public virtual HybridRiveFileSpec, public virtual JHybridObject {
23
22
  public:
24
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveFileSpec;";
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 JHybridRiveFileSpec(jni::alias_ref<jhybridobject> jThis) :
31
- HybridObject(HybridRiveFileSpec::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/HybridRiveFileSpec;";
25
+ std::shared_ptr<JHybridRiveFileSpec> getJHybridRiveFileSpec();
26
+ };
27
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridObject::CxxPart> {
28
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveFileSpec$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 JHybridRiveFileSpec(const jni::local_ref<JHybridRiveFileSpec::JavaPart>& javaPart):
38
+ HybridObject(HybridRiveFileSpec::TAG),
39
+ JHybridObject(javaPart),
40
+ _javaPart(jni::make_global(javaPart)) {}
36
41
  ~JHybridRiveFileSpec() 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<JHybridRiveFileSpec::javaobject>& getJavaPart() const noexcept {
47
+ inline const jni::global_ref<JHybridRiveFileSpec::JavaPart>& getJavaPart() const noexcept {
49
48
  return _javaPart;
50
49
  }
51
50
 
@@ -64,9 +63,7 @@ namespace margelo::nitro::rive {
64
63
  std::shared_ptr<HybridBindableArtboardSpec> getBindableArtboard(const std::string& name) override;
65
64
 
66
65
  private:
67
- friend HybridBase;
68
- using HybridBase::HybridBase;
69
- jni::global_ref<JHybridRiveFileSpec::javaobject> _javaPart;
66
+ jni::global_ref<JHybridRiveFileSpec::JavaPart> _javaPart;
70
67
  };
71
68
 
72
69
  } // namespace margelo::nitro::rive
@@ -23,37 +23,31 @@ namespace margelo::nitro::rive { class HybridFallbackFontSpec; }
23
23
 
24
24
  namespace margelo::nitro::rive {
25
25
 
26
- jni::local_ref<JHybridRiveFontConfigSpec::jhybriddata> JHybridRiveFontConfigSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
27
- return makeCxxInstance(jThis);
28
- }
29
-
30
- void JHybridRiveFontConfigSpec::registerNatives() {
31
- registerHybrid({
32
- makeNativeMethod("initHybrid", JHybridRiveFontConfigSpec::initHybrid),
33
- });
26
+ std::shared_ptr<JHybridRiveFontConfigSpec> JHybridRiveFontConfigSpec::JavaPart::getJHybridRiveFontConfigSpec() {
27
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
28
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridRiveFontConfigSpec>(hybridObject);
29
+ if (castHybridObject == nullptr) [[unlikely]] {
30
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridRiveFontConfigSpec!");
31
+ }
32
+ return castHybridObject;
34
33
  }
35
34
 
36
- size_t JHybridRiveFontConfigSpec::getExternalMemorySize() noexcept {
37
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
38
- return method(_javaPart);
35
+ jni::local_ref<JHybridRiveFontConfigSpec::CxxPart::jhybriddata> JHybridRiveFontConfigSpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
36
+ return makeCxxInstance(jThis);
39
37
  }
40
38
 
41
- bool JHybridRiveFontConfigSpec::equals(const std::shared_ptr<HybridObject>& other) {
42
- if (auto otherCast = std::dynamic_pointer_cast<JHybridRiveFontConfigSpec>(other)) {
43
- return _javaPart == otherCast->_javaPart;
39
+ std::shared_ptr<JHybridObject> JHybridRiveFontConfigSpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
40
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridRiveFontConfigSpec::JavaPart>(javaPart);
41
+ if (castJavaPart == nullptr) [[unlikely]] {
42
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridRiveFontConfigSpec::JavaPart!");
44
43
  }
45
- return false;
46
- }
47
-
48
- void JHybridRiveFontConfigSpec::dispose() noexcept {
49
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
50
- method(_javaPart);
44
+ return std::make_shared<JHybridRiveFontConfigSpec>(castJavaPart);
51
45
  }
52
46
 
53
- std::string JHybridRiveFontConfigSpec::toString() {
54
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
55
- auto javaString = method(_javaPart);
56
- return javaString->toStdString();
47
+ void JHybridRiveFontConfigSpec::CxxPart::registerNatives() {
48
+ registerHybrid({
49
+ makeNativeMethod("initHybrid", JHybridRiveFontConfigSpec::CxxPart::initHybrid),
50
+ });
57
51
  }
58
52
 
59
53
  // Properties
@@ -61,13 +55,13 @@ namespace margelo::nitro::rive {
61
55
 
62
56
  // Methods
63
57
  std::shared_ptr<Promise<std::shared_ptr<HybridFallbackFontSpec>>> JHybridRiveFontConfigSpec::loadFontFromURL(const std::string& url) {
64
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* url */)>("loadFontFromURL");
58
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* url */)>("loadFontFromURL");
65
59
  auto __result = method(_javaPart, jni::make_jstring(url));
66
60
  return [&]() {
67
61
  auto __promise = Promise<std::shared_ptr<HybridFallbackFontSpec>>::create();
68
62
  __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
69
- auto __result = jni::static_ref_cast<JHybridFallbackFontSpec::javaobject>(__boxedResult);
70
- __promise->resolve(__result->cthis()->shared_cast<JHybridFallbackFontSpec>());
63
+ auto __result = jni::static_ref_cast<JHybridFallbackFontSpec::JavaPart>(__boxedResult);
64
+ __promise->resolve(__result->getJHybridFallbackFontSpec());
71
65
  });
72
66
  __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
73
67
  jni::JniException __jniError(__throwable);
@@ -77,40 +71,40 @@ namespace margelo::nitro::rive {
77
71
  }();
78
72
  }
79
73
  std::shared_ptr<HybridFallbackFontSpec> JHybridRiveFontConfigSpec::loadFontFromResource(const std::string& resource) {
80
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridFallbackFontSpec::javaobject>(jni::alias_ref<jni::JString> /* resource */)>("loadFontFromResource");
74
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridFallbackFontSpec::JavaPart>(jni::alias_ref<jni::JString> /* resource */)>("loadFontFromResource");
81
75
  auto __result = method(_javaPart, jni::make_jstring(resource));
82
- return __result->cthis()->shared_cast<JHybridFallbackFontSpec>();
76
+ return __result->getJHybridFallbackFontSpec();
83
77
  }
84
78
  std::shared_ptr<HybridFallbackFontSpec> JHybridRiveFontConfigSpec::loadFontFromBytes(const std::shared_ptr<ArrayBuffer>& bytes) {
85
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridFallbackFontSpec::javaobject>(jni::alias_ref<JArrayBuffer::javaobject> /* bytes */)>("loadFontFromBytes");
79
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridFallbackFontSpec::JavaPart>(jni::alias_ref<JArrayBuffer::javaobject> /* bytes */)>("loadFontFromBytes");
86
80
  auto __result = method(_javaPart, JArrayBuffer::wrap(bytes));
87
- return __result->cthis()->shared_cast<JHybridFallbackFontSpec>();
81
+ return __result->getJHybridFallbackFontSpec();
88
82
  }
89
83
  std::shared_ptr<HybridFallbackFontSpec> JHybridRiveFontConfigSpec::loadFontByName(const std::string& name) {
90
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridFallbackFontSpec::javaobject>(jni::alias_ref<jni::JString> /* name */)>("loadFontByName");
84
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridFallbackFontSpec::JavaPart>(jni::alias_ref<jni::JString> /* name */)>("loadFontByName");
91
85
  auto __result = method(_javaPart, jni::make_jstring(name));
92
- return __result->cthis()->shared_cast<JHybridFallbackFontSpec>();
86
+ return __result->getJHybridFallbackFontSpec();
93
87
  }
94
88
  std::shared_ptr<HybridFallbackFontSpec> JHybridRiveFontConfigSpec::getSystemDefaultFont() {
95
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridFallbackFontSpec::javaobject>()>("getSystemDefaultFont");
89
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridFallbackFontSpec::JavaPart>()>("getSystemDefaultFont");
96
90
  auto __result = method(_javaPart);
97
- return __result->cthis()->shared_cast<JHybridFallbackFontSpec>();
91
+ return __result->getJHybridFallbackFontSpec();
98
92
  }
99
93
  void JHybridRiveFontConfigSpec::setFontsForWeight(double weight, const std::vector<std::shared_ptr<HybridFallbackFontSpec>>& fonts) {
100
- static const auto method = javaClassStatic()->getMethod<void(double /* weight */, jni::alias_ref<jni::JArrayClass<JHybridFallbackFontSpec::javaobject>> /* fonts */)>("setFontsForWeight");
94
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* weight */, jni::alias_ref<jni::JArrayClass<JHybridFallbackFontSpec::JavaPart>> /* fonts */)>("setFontsForWeight");
101
95
  method(_javaPart, weight, [&]() {
102
96
  size_t __size = fonts.size();
103
- jni::local_ref<jni::JArrayClass<JHybridFallbackFontSpec::javaobject>> __array = jni::JArrayClass<JHybridFallbackFontSpec::javaobject>::newArray(__size);
97
+ jni::local_ref<jni::JArrayClass<JHybridFallbackFontSpec::JavaPart>> __array = jni::JArrayClass<JHybridFallbackFontSpec::JavaPart>::newArray(__size);
104
98
  for (size_t __i = 0; __i < __size; __i++) {
105
99
  const auto& __element = fonts[__i];
106
100
  auto __elementJni = std::dynamic_pointer_cast<JHybridFallbackFontSpec>(__element)->getJavaPart();
107
- __array->setElement(__i, __elementJni.get());
101
+ __array->setElement(__i, *__elementJni);
108
102
  }
109
103
  return __array;
110
104
  }());
111
105
  }
112
106
  std::shared_ptr<Promise<void>> JHybridRiveFontConfigSpec::applyFallbackFonts() {
113
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("applyFallbackFonts");
107
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("applyFallbackFonts");
114
108
  auto __result = method(_javaPart);
115
109
  return [&]() {
116
110
  auto __promise = Promise<void>::create();
@@ -125,7 +119,7 @@ namespace margelo::nitro::rive {
125
119
  }();
126
120
  }
127
121
  std::shared_ptr<Promise<void>> JHybridRiveFontConfigSpec::clearFallbackFonts() {
128
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("clearFallbackFonts");
122
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("clearFallbackFonts");
129
123
  auto __result = method(_javaPart);
130
124
  return [&]() {
131
125
  auto __promise = Promise<void>::create();
@@ -18,34 +18,33 @@ namespace margelo::nitro::rive {
18
18
 
19
19
  using namespace facebook;
20
20
 
21
- class JHybridRiveFontConfigSpec: public jni::HybridClass<JHybridRiveFontConfigSpec, JHybridObject>,
22
- public virtual HybridRiveFontConfigSpec {
21
+ class JHybridRiveFontConfigSpec: public virtual HybridRiveFontConfigSpec, public virtual JHybridObject {
23
22
  public:
24
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveFontConfigSpec;";
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 JHybridRiveFontConfigSpec(jni::alias_ref<jhybridobject> jThis) :
31
- HybridObject(HybridRiveFontConfigSpec::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/HybridRiveFontConfigSpec;";
25
+ std::shared_ptr<JHybridRiveFontConfigSpec> getJHybridRiveFontConfigSpec();
26
+ };
27
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridObject::CxxPart> {
28
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveFontConfigSpec$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 JHybridRiveFontConfigSpec(const jni::local_ref<JHybridRiveFontConfigSpec::JavaPart>& javaPart):
38
+ HybridObject(HybridRiveFontConfigSpec::TAG),
39
+ JHybridObject(javaPart),
40
+ _javaPart(jni::make_global(javaPart)) {}
36
41
  ~JHybridRiveFontConfigSpec() 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<JHybridRiveFontConfigSpec::javaobject>& getJavaPart() const noexcept {
47
+ inline const jni::global_ref<JHybridRiveFontConfigSpec::JavaPart>& getJavaPart() const noexcept {
49
48
  return _javaPart;
50
49
  }
51
50
 
@@ -65,9 +64,7 @@ namespace margelo::nitro::rive {
65
64
  std::shared_ptr<Promise<void>> clearFallbackFonts() override;
66
65
 
67
66
  private:
68
- friend HybridBase;
69
- using HybridBase::HybridBase;
70
- jni::global_ref<JHybridRiveFontConfigSpec::javaobject> _javaPart;
67
+ jni::global_ref<JHybridRiveFontConfigSpec::JavaPart> _javaPart;
71
68
  };
72
69
 
73
70
  } // namespace margelo::nitro::rive
@@ -21,37 +21,31 @@ namespace margelo::nitro::rive { class HybridRiveImageSpec; }
21
21
 
22
22
  namespace margelo::nitro::rive {
23
23
 
24
- jni::local_ref<JHybridRiveImageFactorySpec::jhybriddata> JHybridRiveImageFactorySpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
25
- return makeCxxInstance(jThis);
26
- }
27
-
28
- void JHybridRiveImageFactorySpec::registerNatives() {
29
- registerHybrid({
30
- makeNativeMethod("initHybrid", JHybridRiveImageFactorySpec::initHybrid),
31
- });
24
+ std::shared_ptr<JHybridRiveImageFactorySpec> JHybridRiveImageFactorySpec::JavaPart::getJHybridRiveImageFactorySpec() {
25
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
26
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridRiveImageFactorySpec>(hybridObject);
27
+ if (castHybridObject == nullptr) [[unlikely]] {
28
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridRiveImageFactorySpec!");
29
+ }
30
+ return castHybridObject;
32
31
  }
33
32
 
34
- size_t JHybridRiveImageFactorySpec::getExternalMemorySize() noexcept {
35
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
36
- return method(_javaPart);
33
+ jni::local_ref<JHybridRiveImageFactorySpec::CxxPart::jhybriddata> JHybridRiveImageFactorySpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
34
+ return makeCxxInstance(jThis);
37
35
  }
38
36
 
39
- bool JHybridRiveImageFactorySpec::equals(const std::shared_ptr<HybridObject>& other) {
40
- if (auto otherCast = std::dynamic_pointer_cast<JHybridRiveImageFactorySpec>(other)) {
41
- return _javaPart == otherCast->_javaPart;
37
+ std::shared_ptr<JHybridObject> JHybridRiveImageFactorySpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
38
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridRiveImageFactorySpec::JavaPart>(javaPart);
39
+ if (castJavaPart == nullptr) [[unlikely]] {
40
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridRiveImageFactorySpec::JavaPart!");
42
41
  }
43
- return false;
44
- }
45
-
46
- void JHybridRiveImageFactorySpec::dispose() noexcept {
47
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
48
- method(_javaPart);
42
+ return std::make_shared<JHybridRiveImageFactorySpec>(castJavaPart);
49
43
  }
50
44
 
51
- std::string JHybridRiveImageFactorySpec::toString() {
52
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
53
- auto javaString = method(_javaPart);
54
- return javaString->toStdString();
45
+ void JHybridRiveImageFactorySpec::CxxPart::registerNatives() {
46
+ registerHybrid({
47
+ makeNativeMethod("initHybrid", JHybridRiveImageFactorySpec::CxxPart::initHybrid),
48
+ });
55
49
  }
56
50
 
57
51
  // Properties
@@ -59,13 +53,13 @@ namespace margelo::nitro::rive {
59
53
 
60
54
  // Methods
61
55
  std::shared_ptr<Promise<std::shared_ptr<HybridRiveImageSpec>>> JHybridRiveImageFactorySpec::loadFromURLAsync(const std::string& url) {
62
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* url */)>("loadFromURLAsync");
56
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* url */)>("loadFromURLAsync");
63
57
  auto __result = method(_javaPart, jni::make_jstring(url));
64
58
  return [&]() {
65
59
  auto __promise = Promise<std::shared_ptr<HybridRiveImageSpec>>::create();
66
60
  __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
67
- auto __result = jni::static_ref_cast<JHybridRiveImageSpec::javaobject>(__boxedResult);
68
- __promise->resolve(__result->cthis()->shared_cast<JHybridRiveImageSpec>());
61
+ auto __result = jni::static_ref_cast<JHybridRiveImageSpec::JavaPart>(__boxedResult);
62
+ __promise->resolve(__result->getJHybridRiveImageSpec());
69
63
  });
70
64
  __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
71
65
  jni::JniException __jniError(__throwable);
@@ -75,13 +69,13 @@ namespace margelo::nitro::rive {
75
69
  }();
76
70
  }
77
71
  std::shared_ptr<Promise<std::shared_ptr<HybridRiveImageSpec>>> JHybridRiveImageFactorySpec::loadFromResourceAsync(const std::string& resource) {
78
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* resource */)>("loadFromResourceAsync");
72
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* resource */)>("loadFromResourceAsync");
79
73
  auto __result = method(_javaPart, jni::make_jstring(resource));
80
74
  return [&]() {
81
75
  auto __promise = Promise<std::shared_ptr<HybridRiveImageSpec>>::create();
82
76
  __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
83
- auto __result = jni::static_ref_cast<JHybridRiveImageSpec::javaobject>(__boxedResult);
84
- __promise->resolve(__result->cthis()->shared_cast<JHybridRiveImageSpec>());
77
+ auto __result = jni::static_ref_cast<JHybridRiveImageSpec::JavaPart>(__boxedResult);
78
+ __promise->resolve(__result->getJHybridRiveImageSpec());
85
79
  });
86
80
  __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
87
81
  jni::JniException __jniError(__throwable);
@@ -91,13 +85,13 @@ namespace margelo::nitro::rive {
91
85
  }();
92
86
  }
93
87
  std::shared_ptr<Promise<std::shared_ptr<HybridRiveImageSpec>>> JHybridRiveImageFactorySpec::loadFromBytesAsync(const std::shared_ptr<ArrayBuffer>& bytes) {
94
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<JArrayBuffer::javaobject> /* bytes */)>("loadFromBytesAsync");
88
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<JArrayBuffer::javaobject> /* bytes */)>("loadFromBytesAsync");
95
89
  auto __result = method(_javaPart, JArrayBuffer::wrap(bytes));
96
90
  return [&]() {
97
91
  auto __promise = Promise<std::shared_ptr<HybridRiveImageSpec>>::create();
98
92
  __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
99
- auto __result = jni::static_ref_cast<JHybridRiveImageSpec::javaobject>(__boxedResult);
100
- __promise->resolve(__result->cthis()->shared_cast<JHybridRiveImageSpec>());
93
+ auto __result = jni::static_ref_cast<JHybridRiveImageSpec::JavaPart>(__boxedResult);
94
+ __promise->resolve(__result->getJHybridRiveImageSpec());
101
95
  });
102
96
  __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
103
97
  jni::JniException __jniError(__throwable);
@@ -18,34 +18,33 @@ namespace margelo::nitro::rive {
18
18
 
19
19
  using namespace facebook;
20
20
 
21
- class JHybridRiveImageFactorySpec: public jni::HybridClass<JHybridRiveImageFactorySpec, JHybridObject>,
22
- public virtual HybridRiveImageFactorySpec {
21
+ class JHybridRiveImageFactorySpec: public virtual HybridRiveImageFactorySpec, public virtual JHybridObject {
23
22
  public:
24
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveImageFactorySpec;";
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 JHybridRiveImageFactorySpec(jni::alias_ref<jhybridobject> jThis) :
31
- HybridObject(HybridRiveImageFactorySpec::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/HybridRiveImageFactorySpec;";
25
+ std::shared_ptr<JHybridRiveImageFactorySpec> getJHybridRiveImageFactorySpec();
26
+ };
27
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridObject::CxxPart> {
28
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveImageFactorySpec$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 JHybridRiveImageFactorySpec(const jni::local_ref<JHybridRiveImageFactorySpec::JavaPart>& javaPart):
38
+ HybridObject(HybridRiveImageFactorySpec::TAG),
39
+ JHybridObject(javaPart),
40
+ _javaPart(jni::make_global(javaPart)) {}
36
41
  ~JHybridRiveImageFactorySpec() 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<JHybridRiveImageFactorySpec::javaobject>& getJavaPart() const noexcept {
47
+ inline const jni::global_ref<JHybridRiveImageFactorySpec::JavaPart>& getJavaPart() const noexcept {
49
48
  return _javaPart;
50
49
  }
51
50
 
@@ -60,9 +59,7 @@ namespace margelo::nitro::rive {
60
59
  std::shared_ptr<Promise<std::shared_ptr<HybridRiveImageSpec>>> loadFromBytesAsync(const std::shared_ptr<ArrayBuffer>& bytes) override;
61
60
 
62
61
  private:
63
- friend HybridBase;
64
- using HybridBase::HybridBase;
65
- jni::global_ref<JHybridRiveImageFactorySpec::javaobject> _javaPart;
62
+ jni::global_ref<JHybridRiveImageFactorySpec::JavaPart> _javaPart;
66
63
  };
67
64
 
68
65
  } // namespace margelo::nitro::rive
@@ -13,42 +13,36 @@
13
13
 
14
14
  namespace margelo::nitro::rive {
15
15
 
16
- jni::local_ref<JHybridRiveImageSpec::jhybriddata> JHybridRiveImageSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
17
- return makeCxxInstance(jThis);
18
- }
19
-
20
- void JHybridRiveImageSpec::registerNatives() {
21
- registerHybrid({
22
- makeNativeMethod("initHybrid", JHybridRiveImageSpec::initHybrid),
23
- });
16
+ std::shared_ptr<JHybridRiveImageSpec> JHybridRiveImageSpec::JavaPart::getJHybridRiveImageSpec() {
17
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
18
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridRiveImageSpec>(hybridObject);
19
+ if (castHybridObject == nullptr) [[unlikely]] {
20
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridRiveImageSpec!");
21
+ }
22
+ return castHybridObject;
24
23
  }
25
24
 
26
- size_t JHybridRiveImageSpec::getExternalMemorySize() noexcept {
27
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
28
- return method(_javaPart);
25
+ jni::local_ref<JHybridRiveImageSpec::CxxPart::jhybriddata> JHybridRiveImageSpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
26
+ return makeCxxInstance(jThis);
29
27
  }
30
28
 
31
- bool JHybridRiveImageSpec::equals(const std::shared_ptr<HybridObject>& other) {
32
- if (auto otherCast = std::dynamic_pointer_cast<JHybridRiveImageSpec>(other)) {
33
- return _javaPart == otherCast->_javaPart;
29
+ std::shared_ptr<JHybridObject> JHybridRiveImageSpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
30
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridRiveImageSpec::JavaPart>(javaPart);
31
+ if (castJavaPart == nullptr) [[unlikely]] {
32
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridRiveImageSpec::JavaPart!");
34
33
  }
35
- return false;
36
- }
37
-
38
- void JHybridRiveImageSpec::dispose() noexcept {
39
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
40
- method(_javaPart);
34
+ return std::make_shared<JHybridRiveImageSpec>(castJavaPart);
41
35
  }
42
36
 
43
- std::string JHybridRiveImageSpec::toString() {
44
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
45
- auto javaString = method(_javaPart);
46
- return javaString->toStdString();
37
+ void JHybridRiveImageSpec::CxxPart::registerNatives() {
38
+ registerHybrid({
39
+ makeNativeMethod("initHybrid", JHybridRiveImageSpec::CxxPart::initHybrid),
40
+ });
47
41
  }
48
42
 
49
43
  // Properties
50
44
  double JHybridRiveImageSpec::getByteSize() {
51
- static const auto method = javaClassStatic()->getMethod<double()>("getByteSize");
45
+ static const auto method = _javaPart->javaClassStatic()->getMethod<double()>("getByteSize");
52
46
  auto __result = method(_javaPart);
53
47
  return __result;
54
48
  }
@@ -18,34 +18,33 @@ namespace margelo::nitro::rive {
18
18
 
19
19
  using namespace facebook;
20
20
 
21
- class JHybridRiveImageSpec: public jni::HybridClass<JHybridRiveImageSpec, JHybridObject>,
22
- public virtual HybridRiveImageSpec {
21
+ class JHybridRiveImageSpec: public virtual HybridRiveImageSpec, public virtual JHybridObject {
23
22
  public:
24
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveImageSpec;";
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 JHybridRiveImageSpec(jni::alias_ref<jhybridobject> jThis) :
31
- HybridObject(HybridRiveImageSpec::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/HybridRiveImageSpec;";
25
+ std::shared_ptr<JHybridRiveImageSpec> getJHybridRiveImageSpec();
26
+ };
27
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridObject::CxxPart> {
28
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveImageSpec$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 JHybridRiveImageSpec(const jni::local_ref<JHybridRiveImageSpec::JavaPart>& javaPart):
38
+ HybridObject(HybridRiveImageSpec::TAG),
39
+ JHybridObject(javaPart),
40
+ _javaPart(jni::make_global(javaPart)) {}
36
41
  ~JHybridRiveImageSpec() 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<JHybridRiveImageSpec::javaobject>& getJavaPart() const noexcept {
47
+ inline const jni::global_ref<JHybridRiveImageSpec::JavaPart>& getJavaPart() const noexcept {
49
48
  return _javaPart;
50
49
  }
51
50
 
@@ -58,9 +57,7 @@ namespace margelo::nitro::rive {
58
57
 
59
58
 
60
59
  private:
61
- friend HybridBase;
62
- using HybridBase::HybridBase;
63
- jni::global_ref<JHybridRiveImageSpec::javaobject> _javaPart;
60
+ jni::global_ref<JHybridRiveImageSpec::JavaPart> _javaPart;
64
61
  };
65
62
 
66
63
  } // namespace margelo::nitro::rive