-
-
Notifications
You must be signed in to change notification settings - Fork 33
Expand file tree
/
Copy pathJHybridWebImageFactorySpec.cpp
More file actions
100 lines (89 loc) · 5.22 KB
/
Copy pathJHybridWebImageFactorySpec.cpp
File metadata and controls
100 lines (89 loc) · 5.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
///
/// JHybridWebImageFactorySpec.cpp
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
/// https://github.com/mrousavy/nitro
/// Copyright © Marc Rousavy @ Margelo
///
#include "JHybridWebImageFactorySpec.hpp"
// Forward declaration of `HybridImageLoaderSpec` to properly resolve imports.
namespace margelo::nitro::image { class HybridImageLoaderSpec; }
// Forward declaration of `HybridImageSpec` to properly resolve imports.
namespace margelo::nitro::image { class HybridImageSpec; }
// Forward declaration of `AsyncImageLoadOptions` to properly resolve imports.
namespace margelo::nitro::web::image { struct AsyncImageLoadOptions; }
// Forward declaration of `AsyncImagePriority` to properly resolve imports.
namespace margelo::nitro::web::image { enum class AsyncImagePriority; }
#include <memory>
#include <NitroImage/HybridImageLoaderSpec.hpp>
#include <NitroImage/JHybridImageLoaderSpec.hpp>
#include <NitroImage/HybridImageSpec.hpp>
#include <NitroModules/Promise.hpp>
#include <NitroModules/JPromise.hpp>
#include <NitroImage/JHybridImageSpec.hpp>
#include <string>
#include "AsyncImageLoadOptions.hpp"
#include <optional>
#include "JAsyncImageLoadOptions.hpp"
#include "AsyncImagePriority.hpp"
#include "JAsyncImagePriority.hpp"
namespace margelo::nitro::web::image {
std::shared_ptr<JHybridWebImageFactorySpec> JHybridWebImageFactorySpec::JavaPart::getJHybridWebImageFactorySpec() {
auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
auto castHybridObject = std::dynamic_pointer_cast<JHybridWebImageFactorySpec>(hybridObject);
if (castHybridObject == nullptr) [[unlikely]] {
throw std::runtime_error("Failed to downcast JHybridObject to JHybridWebImageFactorySpec!");
}
return castHybridObject;
}
jni::local_ref<JHybridWebImageFactorySpec::CxxPart::jhybriddata> JHybridWebImageFactorySpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
return makeCxxInstance(jThis);
}
std::shared_ptr<JHybridObject> JHybridWebImageFactorySpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
auto castJavaPart = jni::dynamic_ref_cast<JHybridWebImageFactorySpec::JavaPart>(javaPart);
if (castJavaPart == nullptr) [[unlikely]] {
throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridWebImageFactorySpec::JavaPart!");
}
return std::make_shared<JHybridWebImageFactorySpec>(castJavaPart);
}
void JHybridWebImageFactorySpec::CxxPart::registerNatives() {
registerHybrid({
makeNativeMethod("initHybrid", JHybridWebImageFactorySpec::CxxPart::initHybrid),
});
}
// Properties
double JHybridWebImageFactorySpec::getMaxMemoryBytes() {
static const auto method = _javaPart->javaClassStatic()->getMethod<double()>("getMaxMemoryBytes");
auto __result = method(_javaPart);
return __result;
}
void JHybridWebImageFactorySpec::setMaxMemoryBytes(double maxMemoryBytes) {
static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* maxMemoryBytes */)>("setMaxMemoryBytes");
method(_javaPart, maxMemoryBytes);
}
// Methods
std::shared_ptr<margelo::nitro::image::HybridImageLoaderSpec> JHybridWebImageFactorySpec::createWebImageLoader(const std::string& url, const std::optional<AsyncImageLoadOptions>& options) {
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<margelo::nitro::image::JHybridImageLoaderSpec::JavaPart>(jni::alias_ref<jni::JString> /* url */, jni::alias_ref<JAsyncImageLoadOptions> /* options */)>("createWebImageLoader");
auto __result = method(_javaPart, jni::make_jstring(url), options.has_value() ? JAsyncImageLoadOptions::fromCpp(options.value()) : nullptr);
return __result->getJHybridImageLoaderSpec();
}
std::shared_ptr<Promise<std::shared_ptr<margelo::nitro::image::HybridImageSpec>>> JHybridWebImageFactorySpec::loadFromURLAsync(const std::string& url, const std::optional<AsyncImageLoadOptions>& options) {
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JString> /* url */, jni::alias_ref<JAsyncImageLoadOptions> /* options */)>("loadFromURLAsync");
auto __result = method(_javaPart, jni::make_jstring(url), options.has_value() ? JAsyncImageLoadOptions::fromCpp(options.value()) : nullptr);
return [&]() {
auto __promise = Promise<std::shared_ptr<margelo::nitro::image::HybridImageSpec>>::create();
__result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
auto __result = jni::static_ref_cast<margelo::nitro::image::JHybridImageSpec::JavaPart>(__boxedResult);
__promise->resolve(__result->getJHybridImageSpec());
});
__result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
jni::JniException __jniError(__throwable);
__promise->reject(std::make_exception_ptr(__jniError));
});
return __promise;
}();
}
void JHybridWebImageFactorySpec::preload(const std::string& url) {
static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* url */)>("preload");
method(_javaPart, jni::make_jstring(url));
}
} // namespace margelo::nitro::web::image