@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
package/RNRive.podspec CHANGED
@@ -30,6 +30,28 @@ end
30
30
 
31
31
  Pod::UI.puts "@rive-app/react-native: Rive iOS SDK #{rive_ios_version}"
32
32
 
33
+ # Xcode 26 workaround: strip .Swift Clang submodule from RiveRuntime's prebuilt
34
+ # modulemaps to prevent ODR conflicts with locally-compiled Swift C++ interop.
35
+ # See: https://github.com/rive-app/rive-nitro-react-native/issues/173
36
+ if defined?(Pod::Installer)
37
+ module RiveXcode26SwiftModuleFix
38
+ def run_podfile_pre_install_hooks
39
+ rive_dir = File.join(sandbox.root.to_s, 'RiveRuntime')
40
+ if Dir.exist?(rive_dir)
41
+ Dir.glob(File.join(rive_dir, '**', 'module.modulemap')).each do |path|
42
+ content = File.read(path)
43
+ next unless content.include?('RiveRuntime.Swift')
44
+ cleaned = content.gsub(/\nmodule RiveRuntime\.Swift \{[^}]*\}\n?/m, "\n")
45
+ File.write(path, cleaned)
46
+ end
47
+ end
48
+ super
49
+ end
50
+ end
51
+
52
+ Pod::Installer.prepend(RiveXcode26SwiftModuleFix)
53
+ end
54
+
33
55
  Pod::Spec.new do |s|
34
56
  s.name = "RNRive"
35
57
  s.version = package["version"]
@@ -24,7 +24,7 @@ enum DataSource {
24
24
  return .bundle(resource: name, extension: ext.isEmpty ? nil : ext)
25
25
  }
26
26
 
27
- static func bytes(from buffer: ArrayBufferHolder) -> DataSource {
27
+ static func bytes(from buffer: ArrayBuffer) -> DataSource {
28
28
  return .bytes(data: buffer.toData(copyIfNeeded: false))
29
29
  }
30
30
 
@@ -145,7 +145,7 @@ final class HybridRiveFileFactory: HybridRiveFileFactorySpec, @unchecked Sendabl
145
145
  return try fromResource(resource: resource, loadCdn: loadCdn, referencedAssets: nil)
146
146
  }
147
147
 
148
- func fromBytes(bytes: ArrayBufferHolder, loadCdn: Bool, referencedAssets: ReferencedAssetsType?)
148
+ func fromBytes(bytes: ArrayBuffer, loadCdn: Bool, referencedAssets: ReferencedAssetsType?)
149
149
  throws -> Promise<
150
150
  (any HybridRiveFileSpec)
151
151
  > {
@@ -20,7 +20,7 @@ final class HybridRiveImageFactory: HybridRiveImageFactorySpec {
20
20
  return loadFromDataSource(.bundle(nameWithExtension: resource))
21
21
  }
22
22
 
23
- func loadFromBytesAsync(bytes: ArrayBufferHolder) throws -> Promise<(any HybridRiveImageSpec)> {
23
+ func loadFromBytesAsync(bytes: ArrayBuffer) throws -> Promise<(any HybridRiveImageSpec)> {
24
24
  return loadFromDataSource(.bytes(from: bytes))
25
25
  }
26
26
  }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=nitrogen-postprocess.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nitrogen-postprocess.d.ts","sourceRoot":"","sources":["../../../scripts/nitrogen-postprocess.ts"],"names":[],"mappings":""}
@@ -13,42 +13,36 @@
13
13
 
14
14
  namespace margelo::nitro::rive {
15
15
 
16
- jni::local_ref<JHybridBindableArtboardSpec::jhybriddata> JHybridBindableArtboardSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
17
- return makeCxxInstance(jThis);
18
- }
19
-
20
- void JHybridBindableArtboardSpec::registerNatives() {
21
- registerHybrid({
22
- makeNativeMethod("initHybrid", JHybridBindableArtboardSpec::initHybrid),
23
- });
16
+ std::shared_ptr<JHybridBindableArtboardSpec> JHybridBindableArtboardSpec::JavaPart::getJHybridBindableArtboardSpec() {
17
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
18
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridBindableArtboardSpec>(hybridObject);
19
+ if (castHybridObject == nullptr) [[unlikely]] {
20
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridBindableArtboardSpec!");
21
+ }
22
+ return castHybridObject;
24
23
  }
25
24
 
26
- size_t JHybridBindableArtboardSpec::getExternalMemorySize() noexcept {
27
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
28
- return method(_javaPart);
25
+ jni::local_ref<JHybridBindableArtboardSpec::CxxPart::jhybriddata> JHybridBindableArtboardSpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
26
+ return makeCxxInstance(jThis);
29
27
  }
30
28
 
31
- bool JHybridBindableArtboardSpec::equals(const std::shared_ptr<HybridObject>& other) {
32
- if (auto otherCast = std::dynamic_pointer_cast<JHybridBindableArtboardSpec>(other)) {
33
- return _javaPart == otherCast->_javaPart;
29
+ std::shared_ptr<JHybridObject> JHybridBindableArtboardSpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
30
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridBindableArtboardSpec::JavaPart>(javaPart);
31
+ if (castJavaPart == nullptr) [[unlikely]] {
32
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridBindableArtboardSpec::JavaPart!");
34
33
  }
35
- return false;
36
- }
37
-
38
- void JHybridBindableArtboardSpec::dispose() noexcept {
39
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
40
- method(_javaPart);
34
+ return std::make_shared<JHybridBindableArtboardSpec>(castJavaPart);
41
35
  }
42
36
 
43
- std::string JHybridBindableArtboardSpec::toString() {
44
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
45
- auto javaString = method(_javaPart);
46
- return javaString->toStdString();
37
+ void JHybridBindableArtboardSpec::CxxPart::registerNatives() {
38
+ registerHybrid({
39
+ makeNativeMethod("initHybrid", JHybridBindableArtboardSpec::CxxPart::initHybrid),
40
+ });
47
41
  }
48
42
 
49
43
  // Properties
50
44
  std::string JHybridBindableArtboardSpec::getArtboardName() {
51
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getArtboardName");
45
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getArtboardName");
52
46
  auto __result = method(_javaPart);
53
47
  return __result->toStdString();
54
48
  }
@@ -18,34 +18,33 @@ namespace margelo::nitro::rive {
18
18
 
19
19
  using namespace facebook;
20
20
 
21
- class JHybridBindableArtboardSpec: public jni::HybridClass<JHybridBindableArtboardSpec, JHybridObject>,
22
- public virtual HybridBindableArtboardSpec {
21
+ class JHybridBindableArtboardSpec: public virtual HybridBindableArtboardSpec, public virtual JHybridObject {
23
22
  public:
24
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridBindableArtboardSpec;";
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 JHybridBindableArtboardSpec(jni::alias_ref<jhybridobject> jThis) :
31
- HybridObject(HybridBindableArtboardSpec::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/HybridBindableArtboardSpec;";
25
+ std::shared_ptr<JHybridBindableArtboardSpec> getJHybridBindableArtboardSpec();
26
+ };
27
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridObject::CxxPart> {
28
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridBindableArtboardSpec$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 JHybridBindableArtboardSpec(const jni::local_ref<JHybridBindableArtboardSpec::JavaPart>& javaPart):
38
+ HybridObject(HybridBindableArtboardSpec::TAG),
39
+ JHybridObject(javaPart),
40
+ _javaPart(jni::make_global(javaPart)) {}
36
41
  ~JHybridBindableArtboardSpec() 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<JHybridBindableArtboardSpec::javaobject>& getJavaPart() const noexcept {
47
+ inline const jni::global_ref<JHybridBindableArtboardSpec::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<JHybridBindableArtboardSpec::javaobject> _javaPart;
60
+ jni::global_ref<JHybridBindableArtboardSpec::JavaPart> _javaPart;
64
61
  };
65
62
 
66
63
  } // namespace margelo::nitro::rive
@@ -13,37 +13,31 @@
13
13
 
14
14
  namespace margelo::nitro::rive {
15
15
 
16
- jni::local_ref<JHybridFallbackFontSpec::jhybriddata> JHybridFallbackFontSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
17
- return makeCxxInstance(jThis);
18
- }
19
-
20
- void JHybridFallbackFontSpec::registerNatives() {
21
- registerHybrid({
22
- makeNativeMethod("initHybrid", JHybridFallbackFontSpec::initHybrid),
23
- });
16
+ std::shared_ptr<JHybridFallbackFontSpec> JHybridFallbackFontSpec::JavaPart::getJHybridFallbackFontSpec() {
17
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
18
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridFallbackFontSpec>(hybridObject);
19
+ if (castHybridObject == nullptr) [[unlikely]] {
20
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridFallbackFontSpec!");
21
+ }
22
+ return castHybridObject;
24
23
  }
25
24
 
26
- size_t JHybridFallbackFontSpec::getExternalMemorySize() noexcept {
27
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
28
- return method(_javaPart);
25
+ jni::local_ref<JHybridFallbackFontSpec::CxxPart::jhybriddata> JHybridFallbackFontSpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
26
+ return makeCxxInstance(jThis);
29
27
  }
30
28
 
31
- bool JHybridFallbackFontSpec::equals(const std::shared_ptr<HybridObject>& other) {
32
- if (auto otherCast = std::dynamic_pointer_cast<JHybridFallbackFontSpec>(other)) {
33
- return _javaPart == otherCast->_javaPart;
29
+ std::shared_ptr<JHybridObject> JHybridFallbackFontSpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
30
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridFallbackFontSpec::JavaPart>(javaPart);
31
+ if (castJavaPart == nullptr) [[unlikely]] {
32
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridFallbackFontSpec::JavaPart!");
34
33
  }
35
- return false;
36
- }
37
-
38
- void JHybridFallbackFontSpec::dispose() noexcept {
39
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
40
- method(_javaPart);
34
+ return std::make_shared<JHybridFallbackFontSpec>(castJavaPart);
41
35
  }
42
36
 
43
- std::string JHybridFallbackFontSpec::toString() {
44
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
45
- auto javaString = method(_javaPart);
46
- return javaString->toStdString();
37
+ void JHybridFallbackFontSpec::CxxPart::registerNatives() {
38
+ registerHybrid({
39
+ makeNativeMethod("initHybrid", JHybridFallbackFontSpec::CxxPart::initHybrid),
40
+ });
47
41
  }
48
42
 
49
43
  // Properties
@@ -18,34 +18,33 @@ namespace margelo::nitro::rive {
18
18
 
19
19
  using namespace facebook;
20
20
 
21
- class JHybridFallbackFontSpec: public jni::HybridClass<JHybridFallbackFontSpec, JHybridObject>,
22
- public virtual HybridFallbackFontSpec {
21
+ class JHybridFallbackFontSpec: public virtual HybridFallbackFontSpec, public virtual JHybridObject {
23
22
  public:
24
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridFallbackFontSpec;";
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 JHybridFallbackFontSpec(jni::alias_ref<jhybridobject> jThis) :
31
- HybridObject(HybridFallbackFontSpec::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/HybridFallbackFontSpec;";
25
+ std::shared_ptr<JHybridFallbackFontSpec> getJHybridFallbackFontSpec();
26
+ };
27
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridObject::CxxPart> {
28
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridFallbackFontSpec$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 JHybridFallbackFontSpec(const jni::local_ref<JHybridFallbackFontSpec::JavaPart>& javaPart):
38
+ HybridObject(HybridFallbackFontSpec::TAG),
39
+ JHybridObject(javaPart),
40
+ _javaPart(jni::make_global(javaPart)) {}
36
41
  ~JHybridFallbackFontSpec() 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<JHybridFallbackFontSpec::javaobject>& getJavaPart() const noexcept {
47
+ inline const jni::global_ref<JHybridFallbackFontSpec::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<JHybridFallbackFontSpec::javaobject> _javaPart;
60
+ jni::global_ref<JHybridFallbackFontSpec::JavaPart> _javaPart;
64
61
  };
65
62
 
66
63
  } // namespace margelo::nitro::rive
@@ -35,37 +35,31 @@ namespace margelo::nitro::rive { class HybridRiveImageSpec; }
35
35
 
36
36
  namespace margelo::nitro::rive {
37
37
 
38
- jni::local_ref<JHybridRiveFileFactorySpec::jhybriddata> JHybridRiveFileFactorySpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
39
- return makeCxxInstance(jThis);
40
- }
41
-
42
- void JHybridRiveFileFactorySpec::registerNatives() {
43
- registerHybrid({
44
- makeNativeMethod("initHybrid", JHybridRiveFileFactorySpec::initHybrid),
45
- });
38
+ std::shared_ptr<JHybridRiveFileFactorySpec> JHybridRiveFileFactorySpec::JavaPart::getJHybridRiveFileFactorySpec() {
39
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
40
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridRiveFileFactorySpec>(hybridObject);
41
+ if (castHybridObject == nullptr) [[unlikely]] {
42
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridRiveFileFactorySpec!");
43
+ }
44
+ return castHybridObject;
46
45
  }
47
46
 
48
- size_t JHybridRiveFileFactorySpec::getExternalMemorySize() noexcept {
49
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
50
- return method(_javaPart);
47
+ jni::local_ref<JHybridRiveFileFactorySpec::CxxPart::jhybriddata> JHybridRiveFileFactorySpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
48
+ return makeCxxInstance(jThis);
51
49
  }
52
50
 
53
- bool JHybridRiveFileFactorySpec::equals(const std::shared_ptr<HybridObject>& other) {
54
- if (auto otherCast = std::dynamic_pointer_cast<JHybridRiveFileFactorySpec>(other)) {
55
- return _javaPart == otherCast->_javaPart;
51
+ std::shared_ptr<JHybridObject> JHybridRiveFileFactorySpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
52
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridRiveFileFactorySpec::JavaPart>(javaPart);
53
+ if (castJavaPart == nullptr) [[unlikely]] {
54
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridRiveFileFactorySpec::JavaPart!");
56
55
  }
57
- return false;
58
- }
59
-
60
- void JHybridRiveFileFactorySpec::dispose() noexcept {
61
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
62
- method(_javaPart);
56
+ return std::make_shared<JHybridRiveFileFactorySpec>(castJavaPart);
63
57
  }
64
58
 
65
- std::string JHybridRiveFileFactorySpec::toString() {
66
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
67
- auto javaString = method(_javaPart);
68
- return javaString->toStdString();
59
+ void JHybridRiveFileFactorySpec::CxxPart::registerNatives() {
60
+ registerHybrid({
61
+ makeNativeMethod("initHybrid", JHybridRiveFileFactorySpec::CxxPart::initHybrid),
62
+ });
69
63
  }
70
64
 
71
65
  // Properties
@@ -73,13 +67,13 @@ namespace margelo::nitro::rive {
73
67
 
74
68
  // Methods
75
69
  std::shared_ptr<Promise<std::shared_ptr<HybridRiveFileSpec>>> JHybridRiveFileFactorySpec::fromURL(const std::string& url, bool loadCdn, const std::optional<ReferencedAssetsType>& referencedAssets) {
76
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* url */, jboolean /* loadCdn */, jni::alias_ref<JReferencedAssetsType> /* referencedAssets */)>("fromURL");
70
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* url */, jboolean /* loadCdn */, jni::alias_ref<JReferencedAssetsType> /* referencedAssets */)>("fromURL");
77
71
  auto __result = method(_javaPart, jni::make_jstring(url), loadCdn, referencedAssets.has_value() ? JReferencedAssetsType::fromCpp(referencedAssets.value()) : nullptr);
78
72
  return [&]() {
79
73
  auto __promise = Promise<std::shared_ptr<HybridRiveFileSpec>>::create();
80
74
  __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
81
- auto __result = jni::static_ref_cast<JHybridRiveFileSpec::javaobject>(__boxedResult);
82
- __promise->resolve(__result->cthis()->shared_cast<JHybridRiveFileSpec>());
75
+ auto __result = jni::static_ref_cast<JHybridRiveFileSpec::JavaPart>(__boxedResult);
76
+ __promise->resolve(__result->getJHybridRiveFileSpec());
83
77
  });
84
78
  __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
85
79
  jni::JniException __jniError(__throwable);
@@ -89,13 +83,13 @@ namespace margelo::nitro::rive {
89
83
  }();
90
84
  }
91
85
  std::shared_ptr<Promise<std::shared_ptr<HybridRiveFileSpec>>> JHybridRiveFileFactorySpec::fromFileURL(const std::string& fileURL, bool loadCdn, const std::optional<ReferencedAssetsType>& referencedAssets) {
92
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* fileURL */, jboolean /* loadCdn */, jni::alias_ref<JReferencedAssetsType> /* referencedAssets */)>("fromFileURL");
86
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* fileURL */, jboolean /* loadCdn */, jni::alias_ref<JReferencedAssetsType> /* referencedAssets */)>("fromFileURL");
93
87
  auto __result = method(_javaPart, jni::make_jstring(fileURL), loadCdn, referencedAssets.has_value() ? JReferencedAssetsType::fromCpp(referencedAssets.value()) : nullptr);
94
88
  return [&]() {
95
89
  auto __promise = Promise<std::shared_ptr<HybridRiveFileSpec>>::create();
96
90
  __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
97
- auto __result = jni::static_ref_cast<JHybridRiveFileSpec::javaobject>(__boxedResult);
98
- __promise->resolve(__result->cthis()->shared_cast<JHybridRiveFileSpec>());
91
+ auto __result = jni::static_ref_cast<JHybridRiveFileSpec::JavaPart>(__boxedResult);
92
+ __promise->resolve(__result->getJHybridRiveFileSpec());
99
93
  });
100
94
  __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
101
95
  jni::JniException __jniError(__throwable);
@@ -105,13 +99,13 @@ namespace margelo::nitro::rive {
105
99
  }();
106
100
  }
107
101
  std::shared_ptr<Promise<std::shared_ptr<HybridRiveFileSpec>>> JHybridRiveFileFactorySpec::fromResource(const std::string& resource, bool loadCdn, const std::optional<ReferencedAssetsType>& referencedAssets) {
108
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* resource */, jboolean /* loadCdn */, jni::alias_ref<JReferencedAssetsType> /* referencedAssets */)>("fromResource");
102
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* resource */, jboolean /* loadCdn */, jni::alias_ref<JReferencedAssetsType> /* referencedAssets */)>("fromResource");
109
103
  auto __result = method(_javaPart, jni::make_jstring(resource), loadCdn, referencedAssets.has_value() ? JReferencedAssetsType::fromCpp(referencedAssets.value()) : nullptr);
110
104
  return [&]() {
111
105
  auto __promise = Promise<std::shared_ptr<HybridRiveFileSpec>>::create();
112
106
  __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
113
- auto __result = jni::static_ref_cast<JHybridRiveFileSpec::javaobject>(__boxedResult);
114
- __promise->resolve(__result->cthis()->shared_cast<JHybridRiveFileSpec>());
107
+ auto __result = jni::static_ref_cast<JHybridRiveFileSpec::JavaPart>(__boxedResult);
108
+ __promise->resolve(__result->getJHybridRiveFileSpec());
115
109
  });
116
110
  __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
117
111
  jni::JniException __jniError(__throwable);
@@ -121,13 +115,13 @@ namespace margelo::nitro::rive {
121
115
  }();
122
116
  }
123
117
  std::shared_ptr<Promise<std::shared_ptr<HybridRiveFileSpec>>> JHybridRiveFileFactorySpec::fromBytes(const std::shared_ptr<ArrayBuffer>& bytes, bool loadCdn, const std::optional<ReferencedAssetsType>& referencedAssets) {
124
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<JArrayBuffer::javaobject> /* bytes */, jboolean /* loadCdn */, jni::alias_ref<JReferencedAssetsType> /* referencedAssets */)>("fromBytes");
118
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<JArrayBuffer::javaobject> /* bytes */, jboolean /* loadCdn */, jni::alias_ref<JReferencedAssetsType> /* referencedAssets */)>("fromBytes");
125
119
  auto __result = method(_javaPart, JArrayBuffer::wrap(bytes), loadCdn, referencedAssets.has_value() ? JReferencedAssetsType::fromCpp(referencedAssets.value()) : nullptr);
126
120
  return [&]() {
127
121
  auto __promise = Promise<std::shared_ptr<HybridRiveFileSpec>>::create();
128
122
  __result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
129
- auto __result = jni::static_ref_cast<JHybridRiveFileSpec::javaobject>(__boxedResult);
130
- __promise->resolve(__result->cthis()->shared_cast<JHybridRiveFileSpec>());
123
+ auto __result = jni::static_ref_cast<JHybridRiveFileSpec::JavaPart>(__boxedResult);
124
+ __promise->resolve(__result->getJHybridRiveFileSpec());
131
125
  });
132
126
  __result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
133
127
  jni::JniException __jniError(__throwable);
@@ -18,34 +18,33 @@ namespace margelo::nitro::rive {
18
18
 
19
19
  using namespace facebook;
20
20
 
21
- class JHybridRiveFileFactorySpec: public jni::HybridClass<JHybridRiveFileFactorySpec, JHybridObject>,
22
- public virtual HybridRiveFileFactorySpec {
21
+ class JHybridRiveFileFactorySpec: public virtual HybridRiveFileFactorySpec, public virtual JHybridObject {
23
22
  public:
24
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveFileFactorySpec;";
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 JHybridRiveFileFactorySpec(jni::alias_ref<jhybridobject> jThis) :
31
- HybridObject(HybridRiveFileFactorySpec::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/HybridRiveFileFactorySpec;";
25
+ std::shared_ptr<JHybridRiveFileFactorySpec> getJHybridRiveFileFactorySpec();
26
+ };
27
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridObject::CxxPart> {
28
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveFileFactorySpec$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 JHybridRiveFileFactorySpec(const jni::local_ref<JHybridRiveFileFactorySpec::JavaPart>& javaPart):
38
+ HybridObject(HybridRiveFileFactorySpec::TAG),
39
+ JHybridObject(javaPart),
40
+ _javaPart(jni::make_global(javaPart)) {}
36
41
  ~JHybridRiveFileFactorySpec() 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<JHybridRiveFileFactorySpec::javaobject>& getJavaPart() const noexcept {
47
+ inline const jni::global_ref<JHybridRiveFileFactorySpec::JavaPart>& getJavaPart() const noexcept {
49
48
  return _javaPart;
50
49
  }
51
50
 
@@ -61,9 +60,7 @@ namespace margelo::nitro::rive {
61
60
  std::shared_ptr<Promise<std::shared_ptr<HybridRiveFileSpec>>> fromBytes(const std::shared_ptr<ArrayBuffer>& bytes, bool loadCdn, const std::optional<ReferencedAssetsType>& referencedAssets) override;
62
61
 
63
62
  private:
64
- friend HybridBase;
65
- using HybridBase::HybridBase;
66
- jni::global_ref<JHybridRiveFileFactorySpec::javaobject> _javaPart;
63
+ jni::global_ref<JHybridRiveFileFactorySpec::JavaPart> _javaPart;
67
64
  };
68
65
 
69
66
  } // namespace margelo::nitro::rive
@@ -44,52 +44,46 @@ namespace margelo::nitro::rive { class HybridRiveImageSpec; }
44
44
 
45
45
  namespace margelo::nitro::rive {
46
46
 
47
- jni::local_ref<JHybridRiveFileSpec::jhybriddata> JHybridRiveFileSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
48
- return makeCxxInstance(jThis);
49
- }
50
-
51
- void JHybridRiveFileSpec::registerNatives() {
52
- registerHybrid({
53
- makeNativeMethod("initHybrid", JHybridRiveFileSpec::initHybrid),
54
- });
47
+ std::shared_ptr<JHybridRiveFileSpec> JHybridRiveFileSpec::JavaPart::getJHybridRiveFileSpec() {
48
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
49
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridRiveFileSpec>(hybridObject);
50
+ if (castHybridObject == nullptr) [[unlikely]] {
51
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridRiveFileSpec!");
52
+ }
53
+ return castHybridObject;
55
54
  }
56
55
 
57
- size_t JHybridRiveFileSpec::getExternalMemorySize() noexcept {
58
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
59
- return method(_javaPart);
56
+ jni::local_ref<JHybridRiveFileSpec::CxxPart::jhybriddata> JHybridRiveFileSpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
57
+ return makeCxxInstance(jThis);
60
58
  }
61
59
 
62
- bool JHybridRiveFileSpec::equals(const std::shared_ptr<HybridObject>& other) {
63
- if (auto otherCast = std::dynamic_pointer_cast<JHybridRiveFileSpec>(other)) {
64
- return _javaPart == otherCast->_javaPart;
60
+ std::shared_ptr<JHybridObject> JHybridRiveFileSpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
61
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridRiveFileSpec::JavaPart>(javaPart);
62
+ if (castJavaPart == nullptr) [[unlikely]] {
63
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridRiveFileSpec::JavaPart!");
65
64
  }
66
- return false;
67
- }
68
-
69
- void JHybridRiveFileSpec::dispose() noexcept {
70
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
71
- method(_javaPart);
65
+ return std::make_shared<JHybridRiveFileSpec>(castJavaPart);
72
66
  }
73
67
 
74
- std::string JHybridRiveFileSpec::toString() {
75
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
76
- auto javaString = method(_javaPart);
77
- return javaString->toStdString();
68
+ void JHybridRiveFileSpec::CxxPart::registerNatives() {
69
+ registerHybrid({
70
+ makeNativeMethod("initHybrid", JHybridRiveFileSpec::CxxPart::initHybrid),
71
+ });
78
72
  }
79
73
 
80
74
  // Properties
81
75
  std::optional<double> JHybridRiveFileSpec::getViewModelCount() {
82
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JDouble>()>("getViewModelCount");
76
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JDouble>()>("getViewModelCount");
83
77
  auto __result = method(_javaPart);
84
78
  return __result != nullptr ? std::make_optional(__result->value()) : std::nullopt;
85
79
  }
86
80
  double JHybridRiveFileSpec::getArtboardCount() {
87
- static const auto method = javaClassStatic()->getMethod<double()>("getArtboardCount");
81
+ static const auto method = _javaPart->javaClassStatic()->getMethod<double()>("getArtboardCount");
88
82
  auto __result = method(_javaPart);
89
83
  return __result;
90
84
  }
91
85
  std::vector<std::string> JHybridRiveFileSpec::getArtboardNames() {
92
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JArrayClass<jni::JString>>()>("getArtboardNames");
86
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JArrayClass<jni::JString>>()>("getArtboardNames");
93
87
  auto __result = method(_javaPart);
94
88
  return [&]() {
95
89
  size_t __size = __result->size();
@@ -105,28 +99,28 @@ namespace margelo::nitro::rive {
105
99
 
106
100
  // Methods
107
101
  std::optional<std::shared_ptr<HybridViewModelSpec>> JHybridRiveFileSpec::viewModelByIndex(double index) {
108
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelSpec::javaobject>(double /* index */)>("viewModelByIndex");
102
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelSpec::JavaPart>(double /* index */)>("viewModelByIndex");
109
103
  auto __result = method(_javaPart, index);
110
- return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast<JHybridViewModelSpec>()) : std::nullopt;
104
+ return __result != nullptr ? std::make_optional(__result->getJHybridViewModelSpec()) : std::nullopt;
111
105
  }
112
106
  std::optional<std::shared_ptr<HybridViewModelSpec>> JHybridRiveFileSpec::viewModelByName(const std::string& name) {
113
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelSpec::javaobject>(jni::alias_ref<jni::JString> /* name */)>("viewModelByName");
107
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelSpec::JavaPart>(jni::alias_ref<jni::JString> /* name */)>("viewModelByName");
114
108
  auto __result = method(_javaPart, jni::make_jstring(name));
115
- return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast<JHybridViewModelSpec>()) : std::nullopt;
109
+ return __result != nullptr ? std::make_optional(__result->getJHybridViewModelSpec()) : std::nullopt;
116
110
  }
117
111
  std::optional<std::shared_ptr<HybridViewModelSpec>> JHybridRiveFileSpec::defaultArtboardViewModel(const std::optional<ArtboardBy>& artboardBy) {
118
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelSpec::javaobject>(jni::alias_ref<JArtboardBy> /* artboardBy */)>("defaultArtboardViewModel");
112
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelSpec::JavaPart>(jni::alias_ref<JArtboardBy> /* artboardBy */)>("defaultArtboardViewModel");
119
113
  auto __result = method(_javaPart, artboardBy.has_value() ? JArtboardBy::fromCpp(artboardBy.value()) : nullptr);
120
- return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast<JHybridViewModelSpec>()) : std::nullopt;
114
+ return __result != nullptr ? std::make_optional(__result->getJHybridViewModelSpec()) : std::nullopt;
121
115
  }
122
116
  void JHybridRiveFileSpec::updateReferencedAssets(const ReferencedAssetsType& referencedAssets) {
123
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JReferencedAssetsType> /* referencedAssets */)>("updateReferencedAssets");
117
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JReferencedAssetsType> /* referencedAssets */)>("updateReferencedAssets");
124
118
  method(_javaPart, JReferencedAssetsType::fromCpp(referencedAssets));
125
119
  }
126
120
  std::shared_ptr<HybridBindableArtboardSpec> JHybridRiveFileSpec::getBindableArtboard(const std::string& name) {
127
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridBindableArtboardSpec::javaobject>(jni::alias_ref<jni::JString> /* name */)>("getBindableArtboard");
121
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridBindableArtboardSpec::JavaPart>(jni::alias_ref<jni::JString> /* name */)>("getBindableArtboard");
128
122
  auto __result = method(_javaPart, jni::make_jstring(name));
129
- return __result->cthis()->shared_cast<JHybridBindableArtboardSpec>();
123
+ return __result->getJHybridBindableArtboardSpec();
130
124
  }
131
125
 
132
126
  } // namespace margelo::nitro::rive