@amazon-devices/expo-image 2.0.9000000000 → 3.0.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.
- package/CMakeLists.txt +80 -58
- package/README.kepler.md +1 -0
- package/build/ExpoImageModules.kepler.d.ts.map +1 -1
- package/build/ExpoImageModules.kepler.js +1 -1
- package/build/ExpoImageModules.kepler.js.map +1 -1
- package/build/ImageViewNativeComponent.js +1 -1
- package/build/ImageViewNativeComponent.js.map +1 -1
- package/kepler/AutoLinkInit.cpp +17 -0
- package/kepler/Constants.h +21 -0
- package/kepler/ExpoImage/ExpoImageTurboModule.cpp +148 -0
- package/kepler/ExpoImage/ExpoImageTurboModule.h +41 -0
- package/kepler/ExpoImage/PrefetchListener.cpp +45 -0
- package/kepler/ExpoImage/PrefetchListener.h +40 -0
- package/kepler/ExpoImageComponent/AccessibilityDelegate.cpp +33 -0
- package/kepler/ExpoImageComponent/AccessibilityDelegate.h +30 -0
- package/kepler/ExpoImageComponent/ExpoImageComponentViewManager.cpp +132 -0
- package/kepler/ExpoImageComponent/ExpoImageComponentViewManager.h +66 -0
- package/kepler/ExpoImageComponent/ExpoImageStore.h +102 -0
- package/kepler/ExpoImageComponent/ExpoImageView.cpp +556 -0
- package/kepler/ExpoImageComponent/ExpoImageView.h +186 -0
- package/kepler/ExpoImageComponent/HashImageDecoder.cpp +91 -0
- package/kepler/ExpoImageComponent/HashImageDecoder.h +18 -0
- package/kepler/ExpoImageComponent/ImageLoadListeners.cpp +73 -0
- package/kepler/ExpoImageComponent/ImageLoadListeners.h +52 -0
- package/kepler/ExpoImageComponent/TransitionAnimator.cpp +113 -0
- package/kepler/ExpoImageComponent/TransitionAnimator.h +32 -0
- package/kepler/ImageSourceInfo.h +21 -0
- package/kepler/ViewManagerFactory.cpp +36 -0
- package/kepler/ViewManagerFactory.h +29 -0
- package/kepler/blurhash/common.h +11 -10
- package/kepler/blurhash/decode.cpp +26 -16
- package/kepler/contentposition/ImageContentPosition.cpp +50 -69
- package/kepler/contentposition/ImageContentPosition.h +36 -26
- package/kepler/enums/ImageContentFit.h +47 -15
- package/kepler/enums/ImagePriority.h +12 -13
- package/kepler/test/blurhash/decode.cpp +36 -27
- package/kepler/test/contentposition/ImageContentPosition.cpp +70 -76
- package/kepler/test/thumbhash/decode.cpp +18 -10
- package/kepler/test/utils/Base64.cpp +73 -0
- package/kepler/test/utils/ColorUtils.cpp +53 -0
- package/kepler/test/utils/SourceSelection.cpp +87 -0
- package/kepler/thumbhash/decode.cpp +7 -16
- package/kepler/utils/Base64.cpp +85 -0
- package/kepler/utils/Base64.h +36 -0
- package/kepler/utils/ColorUtils.h +26 -0
- package/kepler/utils/SourceSelection.cpp +80 -0
- package/kepler/utils/SourceSelection.h +65 -0
- package/lib/aarch64-release/com.amazon.kepler.uitoolkit.react.expoimageapp.so +0 -0
- package/lib/aarch64-release/libexpo-image-3.so +0 -0
- package/lib/armv7-release/com.amazon.kepler.uitoolkit.react.expoimageapp.so +0 -0
- package/lib/armv7-release/libexpo-image-3.so +0 -0
- package/lib/x86_64-release/com.amazon.kepler.uitoolkit.react.expoimageapp.so +0 -0
- package/lib/x86_64-release/libexpo-image-3.so +0 -0
- package/package.json +1 -1
- package/react-native.config.js +12 -4
- package/src/ExpoImageModules.kepler.ts +1 -1
- package/src/ImageViewNativeComponent.ts +1 -1
- package/kepler/ExpoImage.cpp +0 -63
- package/kepler/ExpoImage.h +0 -29
- package/kepler/ExpoImageCacheHandler.cpp +0 -15
- package/kepler/ExpoImageCacheHandler.h +0 -28
- package/kepler/ExpoImageComponent.cpp +0 -579
- package/kepler/ExpoImageComponent.h +0 -199
- package/kepler/ImageWrapper/BlurhashImageWrapper.cpp +0 -37
- package/kepler/ImageWrapper/BlurhashImageWrapper.h +0 -23
- package/kepler/ImageWrapper/CacheImageWrapper.cpp +0 -80
- package/kepler/ImageWrapper/CacheImageWrapper.h +0 -41
- package/kepler/ImageWrapper/HashImageWrapper.cpp +0 -21
- package/kepler/ImageWrapper/HashImageWrapper.h +0 -22
- package/kepler/ImageWrapper/ImageWrapper.cpp +0 -24
- package/kepler/ImageWrapper/ImageWrapper.h +0 -33
- package/kepler/ImageWrapper/LocalImageWrapper.cpp +0 -61
- package/kepler/ImageWrapper/LocalImageWrapper.h +0 -30
- package/kepler/ImageWrapper/ThumbhashImageWrapper.cpp +0 -33
- package/kepler/ImageWrapper/ThumbhashImageWrapper.h +0 -20
- package/kepler/KeplerImageViewComponent.h +0 -64
- package/kepler/KeplerInit.cpp +0 -35
- package/kepler/managers/ExpoImageManager.cpp +0 -38
- package/kepler/managers/ExpoImageManager.h +0 -23
- package/kepler/test/ExpoImage.cpp +0 -73
- package/kepler/test/ExpoImageComponent.cpp +0 -304
- package/kepler/test/managers/ExpoImageManager.cpp +0 -39
- package/kepler/test/utils/LoaderDelegate.cpp +0 -130
- package/kepler/utils/PlaceholderImageLoaderDelegate.cpp +0 -26
- package/kepler/utils/PlaceholderImageLoaderDelegate.h +0 -26
- package/kepler/utils/PrefetchImageLoaderDelegate.cpp +0 -55
- package/kepler/utils/PrefetchImageLoaderDelegate.h +0 -35
- package/kepler/utils/SourceImageLoaderDelegate.cpp +0 -47
- package/kepler/utils/SourceImageLoaderDelegate.h +0 -42
- package/kepler/utils/SourceImageLoaderDelegateEmitter.cpp +0 -15
- package/kepler/utils/SourceImageLoaderDelegateEmitter.h +0 -28
- package/kepler-compatibility.json +0 -6
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
*
|
|
4
|
+
* PROPRIETARY/CONFIDENTIAL
|
|
5
|
+
* Use is subject to license terms.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#include "SourceSelection.h"
|
|
9
|
+
#include "../Constants.h"
|
|
10
|
+
|
|
11
|
+
#include <apmf/iface/com/amazon/kepler/uitoolkit/react/JsType.h>
|
|
12
|
+
|
|
13
|
+
#include <cmath>
|
|
14
|
+
#include <limits>
|
|
15
|
+
|
|
16
|
+
namespace expoimage {
|
|
17
|
+
|
|
18
|
+
using apmf::iface::com::amazon::kepler::uitoolkit::react::JsType;
|
|
19
|
+
|
|
20
|
+
std::string uriDecode(const std::string& input) {
|
|
21
|
+
std::string result;
|
|
22
|
+
result.reserve(input.size());
|
|
23
|
+
for (size_t i = 0; i < input.size(); ++i) {
|
|
24
|
+
if (input[i] == '%' && i + 2 < input.size()) {
|
|
25
|
+
auto hexVal = [](char c) -> int {
|
|
26
|
+
if (c >= '0' && c <= '9') return c - '0';
|
|
27
|
+
if (c >= 'A' && c <= 'F') return c - 'A' + 10;
|
|
28
|
+
if (c >= 'a' && c <= 'f') return c - 'a' + 10;
|
|
29
|
+
return -1;
|
|
30
|
+
};
|
|
31
|
+
int h = hexVal(input[i + 1]), l = hexVal(input[i + 2]);
|
|
32
|
+
if (h >= 0 && l >= 0) {
|
|
33
|
+
result += static_cast<char>(h * 16 + l);
|
|
34
|
+
i += 2;
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
result += input[i];
|
|
39
|
+
}
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
namespace {
|
|
44
|
+
|
|
45
|
+
float readFloatField(View<IJsObject> elem, const Array<String>& keys, std::string_view name) {
|
|
46
|
+
if (!hasKey(keys, name)) return 0.0f;
|
|
47
|
+
auto type = elem->getElementValueType(name);
|
|
48
|
+
if (type.value == JsType::DOUBLE.value) return static_cast<float>(elem->getDouble(name));
|
|
49
|
+
if (type.value == JsType::INT.value) return static_cast<float>(elem->getInt(name));
|
|
50
|
+
return 0.0f;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
} // anonymous namespace
|
|
54
|
+
|
|
55
|
+
ImageSourceInfo parseImageSource(View<IJsObject> elem) {
|
|
56
|
+
ImageSourceInfo info;
|
|
57
|
+
auto keys = elem->getAllKeys();
|
|
58
|
+
if (hasKey(keys, kUri)) info.uri = uriDecode(elem->getString(kUri));
|
|
59
|
+
info.width = readFloatField(elem, keys, kWidth);
|
|
60
|
+
info.height = readFloatField(elem, keys, kHeight);
|
|
61
|
+
return info;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
std::optional<ImageSourceInfo> getBestSource(
|
|
65
|
+
const std::vector<ImageSourceInfo>& sources,
|
|
66
|
+
apmf::iface::com::amazon::kepler::uitoolkit::graphics::Size viewSize) {
|
|
67
|
+
if (sources.empty()) return std::nullopt;
|
|
68
|
+
if (sources.size() == 1) return sources.front();
|
|
69
|
+
float targetPx = viewSize.width * viewSize.height;
|
|
70
|
+
if (targetPx == 0) return std::nullopt;
|
|
71
|
+
const ImageSourceInfo* best = nullptr;
|
|
72
|
+
double bestFit = std::numeric_limits<double>::max();
|
|
73
|
+
for (const auto& s : sources) {
|
|
74
|
+
double fit = std::abs(1.0 - (double(s.width * s.height) / targetPx));
|
|
75
|
+
if (fit < bestFit) { bestFit = fit; best = &s; }
|
|
76
|
+
}
|
|
77
|
+
return best ? std::optional(*best) : std::nullopt;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
} // namespace expoimage
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
*
|
|
4
|
+
* PROPRIETARY/CONFIDENTIAL
|
|
5
|
+
* Use is subject to license terms.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <apmf/array.h>
|
|
11
|
+
#include <apmf/iface/com/amazon/kepler/uitoolkit/graphics/Size.h>
|
|
12
|
+
#include <apmf/iface/com/amazon/kepler/uitoolkit/react/IJsObject.h>
|
|
13
|
+
#include <apmf/string.h>
|
|
14
|
+
|
|
15
|
+
#include "../ImageSourceInfo.h"
|
|
16
|
+
|
|
17
|
+
#include <optional>
|
|
18
|
+
#include <string>
|
|
19
|
+
#include <string_view>
|
|
20
|
+
#include <vector>
|
|
21
|
+
|
|
22
|
+
namespace expoimage {
|
|
23
|
+
|
|
24
|
+
using apmf::detail::View;
|
|
25
|
+
using apmf::String;
|
|
26
|
+
template <typename T>
|
|
27
|
+
using Array = apmf::Array<T>;
|
|
28
|
+
using apmf::iface::com::amazon::kepler::uitoolkit::react::IJsObject;
|
|
29
|
+
|
|
30
|
+
/** Returns true if the key exists in the array of strings. */
|
|
31
|
+
inline bool hasKey(const Array<String>& keys, std::string_view target) {
|
|
32
|
+
return std::any_of(keys.begin(), keys.end(), [&](const auto& k) {
|
|
33
|
+
return std::string_view(k) == target;
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
inline bool startsWith(const std::string& str, const std::string& prefix) {
|
|
38
|
+
if (str.size() < prefix.size()) return false;
|
|
39
|
+
for (size_t i = 0; i < prefix.size(); ++i) {
|
|
40
|
+
char a = str[i];
|
|
41
|
+
char b = prefix[i];
|
|
42
|
+
if (a >= 'A' && a <= 'Z') a += 32;
|
|
43
|
+
if (b >= 'A' && b <= 'Z') b += 32;
|
|
44
|
+
if (a != b) return false;
|
|
45
|
+
}
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** Decodes percent-encoded characters in a URI string (e.g., %5E → ^). */
|
|
50
|
+
std::string uriDecode(const std::string& input);
|
|
51
|
+
|
|
52
|
+
/** Returns true if the uri is a blurhash or thumbhash URI (locally decoded, no network). */
|
|
53
|
+
inline bool isHashUri(const std::string& uri) {
|
|
54
|
+
return startsWith(uri, "blurhash") || startsWith(uri, "thumbhash");
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/** Parses an IJsObject into an ImageSourceInfo (uri, width, height). */
|
|
58
|
+
ImageSourceInfo parseImageSource(View<IJsObject> elem);
|
|
59
|
+
|
|
60
|
+
/** Selects the best source from a list based on pixel count vs view size. */
|
|
61
|
+
std::optional<ImageSourceInfo> getBestSource(
|
|
62
|
+
const std::vector<ImageSourceInfo>& sources,
|
|
63
|
+
apmf::iface::com::amazon::kepler::uitoolkit::graphics::Size viewSize);
|
|
64
|
+
|
|
65
|
+
} // namespace expoimage
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name": "@amazon-devices/expo-image", "title": "Expo Image", "version": "
|
|
1
|
+
{"name": "@amazon-devices/expo-image", "title": "Expo Image", "version": "3.0.0+1.6.0", "description": "A cross-platform, performant image component for React Native and Expo with Web support", "main": "build/index.js", "types": "build/index.d.ts", "sideEffects": false, "scripts": {"build": "expo-module build", "clean": "expo-module clean", "lint": "expo-module lint", "test": "expo-module test", "prepublishOnly": "expo-module prepublishOnly", "expo-module": "expo-module"}, "homepage": "https://docs.expo.dev/versions/latest/sdk/image/", "repository": {"type": "git", "url": "https://github.com/expo/expo.git", "directory": "packages/expo-image"}, "kepler": {"temporary-alias-for-package": {"name": "expo-image", "version": "1.6.0"}}, "keywords": ["react-native"], "author": "650 Industries, Inc.", "license": "See license in LICENSE", "dependencies": {"@amazon-devices/keplerscript-turbomodule-api": "^1.0.0"}, "devDependencies": {"expo-module-scripts": "^3.0.0"}, "peerDependencies": {"expo": "^50.0.0-alpha.1"}}
|
package/react-native.config.js
CHANGED
|
@@ -10,10 +10,18 @@ module.exports = {
|
|
|
10
10
|
platforms: {
|
|
11
11
|
kepler: {
|
|
12
12
|
autolink: {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
ExpoImageTMAppLib: {
|
|
14
|
+
libraryName: 'libexpo-image-3.so',
|
|
15
|
+
linkDynamic: true,
|
|
16
|
+
turbomodules: ['ExpoImageAppTM'],
|
|
17
|
+
provider: 'application',
|
|
18
|
+
},
|
|
19
|
+
ExpoImageViewAppLib: {
|
|
20
|
+
uiComponentName: '/com.amazon.kepler.uitoolkit.react.expoimageapp',
|
|
21
|
+
linkDynamic: true,
|
|
22
|
+
components: ['ExpoImageAppComponent'],
|
|
23
|
+
turbomodules: [],
|
|
24
|
+
provider: 'application',
|
|
17
25
|
},
|
|
18
26
|
},
|
|
19
27
|
},
|
|
@@ -4,4 +4,4 @@ import ExpoImageComponent from './ImageViewNativeComponent';
|
|
|
4
4
|
|
|
5
5
|
type Spec = KeplerTurboModule;
|
|
6
6
|
export const NativeExpoImage = ExpoImageComponent;
|
|
7
|
-
export const ExpoImageModule = TurboModuleRegistry.getEnforcing<Spec>('
|
|
7
|
+
export const ExpoImageModule = TurboModuleRegistry.getEnforcing<Spec>('ExpoImageAppTM') as Spec;
|
|
@@ -25,7 +25,7 @@ export type ImageViewNativeComponentProps = Omit<ImageNativeProps, 'tintColor' |
|
|
|
25
25
|
onProgress: (event: NativeSyntheticEvent<ImageProgressEventData>) => void;
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
-
const ImageViewNativeComponent = registerNativeComponent<ImageViewNativeComponentProps>('
|
|
28
|
+
const ImageViewNativeComponent = registerNativeComponent<ImageViewNativeComponentProps>('ExpoImageAppComponent', {
|
|
29
29
|
validAttributes: {
|
|
30
30
|
placeholder: true,
|
|
31
31
|
pointerEvents: true,
|
package/kepler/ExpoImage.cpp
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
-
*
|
|
4
|
-
* PROPRIETARY/CONFIDENTIAL
|
|
5
|
-
*
|
|
6
|
-
* Use is subject to license terms.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
#include "ExpoImage.h"
|
|
10
|
-
|
|
11
|
-
#include <KeplerScript/appinit/KeplerScriptApplication.h>
|
|
12
|
-
#include <KeplerScript/components/ImageSourceBuilder.h>
|
|
13
|
-
#include <KeplerScript/logger/KPLog.h>
|
|
14
|
-
#include <KeplerScript/utils/image/KeplerScriptImageLoaderDelegate.h>
|
|
15
|
-
|
|
16
|
-
#include "utils/PrefetchImageLoaderDelegate.h"
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
ExpoImage::ExpoImage(std::shared_ptr<IExpoImageCacheHandler> handler) : volta::react::KeplerTurboModule("ExpoImage") {
|
|
20
|
-
volta::react::KPLog.debug("ExpoImage constructor {}", name());
|
|
21
|
-
|
|
22
|
-
if (handler) {
|
|
23
|
-
cacheHandler = std::move(handler);
|
|
24
|
-
} else {
|
|
25
|
-
cacheHandler = std::make_shared<ExpoImageCacheHandler>();
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
void ExpoImage::aggregateMethods(
|
|
30
|
-
volta::react::MethodAggregator<volta::react::KeplerTurboModule>& methodAggregator) const noexcept {
|
|
31
|
-
methodAggregator.addMethod("prefetch", 1, &ExpoImage::prefetch);
|
|
32
|
-
methodAggregator.addMethod("clearMemoryCache", 0, &ExpoImage::clearMemoryCache);
|
|
33
|
-
methodAggregator.addMethod("clearDiskCache", 0, &ExpoImage::clearDiskCache);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
volta::react::Promise ExpoImage::prefetch(const std::vector<std::string> urls) {
|
|
37
|
-
volta::react::KPLog.debug("ExpoImage :: prefetch ");
|
|
38
|
-
return volta::react::Promise([handler = cacheHandler, urls = urls](std::shared_ptr<volta::react::Promise> promise) {
|
|
39
|
-
auto delegate = std::make_shared<PrefetchImageLoaderDelegate>(urls.size(), [promise](bool success) {
|
|
40
|
-
promise->resolve(success);
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
for (const auto& url : urls) {
|
|
44
|
-
// KeplerScriptImageCacheHandler::prefetch does not emit any events to `delegate`
|
|
45
|
-
// As a workaround `load` is used, but sometimes does not keep image in cache
|
|
46
|
-
const volta::ImageSource imageSourceUrl = volta::react::buildImageSource(url);
|
|
47
|
-
volta::ImageDetails details(imageSourceUrl, volta::ImageOptions{}, static_cast<uint8_t>(0));
|
|
48
|
-
handler->load(details, delegate);
|
|
49
|
-
// cacheHandler.prefetch(url, 1, delegate);
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
void ExpoImage::clearMemoryCache() {
|
|
56
|
-
volta::react::KPLog.debug("ExpoImage :: clearMemoryCache");
|
|
57
|
-
cacheHandler->clearMemoryCache();
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
void ExpoImage::clearDiskCache() {
|
|
61
|
-
volta::react::KPLog.debug("ExpoImage :: clearDiskCache");
|
|
62
|
-
cacheHandler->clearDiskCache();
|
|
63
|
-
}
|
package/kepler/ExpoImage.h
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
-
*
|
|
4
|
-
* PROPRIETARY/CONFIDENTIAL
|
|
5
|
-
*
|
|
6
|
-
* Use is subject to license terms.
|
|
7
|
-
*/
|
|
8
|
-
#pragma once
|
|
9
|
-
|
|
10
|
-
#include <KeplerScript/modules/KeplerTurboModule.h>
|
|
11
|
-
#include "ExpoImageCacheHandler.h"
|
|
12
|
-
#include <string>
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class ExpoImage : public volta::react::KeplerTurboModule {
|
|
16
|
-
public:
|
|
17
|
-
explicit ExpoImage(std::shared_ptr<IExpoImageCacheHandler> cacheHandler = nullptr);
|
|
18
|
-
|
|
19
|
-
volta::react::Promise prefetch(const std::vector<std::string> urls);
|
|
20
|
-
void clearMemoryCache();
|
|
21
|
-
void clearDiskCache();
|
|
22
|
-
|
|
23
|
-
protected:
|
|
24
|
-
void aggregateMethods(
|
|
25
|
-
volta::react::MethodAggregator<volta::react::KeplerTurboModule>& methodAggregator) const noexcept override;
|
|
26
|
-
|
|
27
|
-
private:
|
|
28
|
-
std::shared_ptr<IExpoImageCacheHandler> cacheHandler = nullptr;
|
|
29
|
-
};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
#include "ExpoImageCacheHandler.h"
|
|
2
|
-
|
|
3
|
-
void ExpoImageCacheHandler::clearMemoryCache() {
|
|
4
|
-
cacheHandler.clearMemoryCache();
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
void ExpoImageCacheHandler::clearDiskCache() {
|
|
8
|
-
cacheHandler.clearPersistentCache();
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
void ExpoImageCacheHandler::load(
|
|
12
|
-
volta::ImageDetails& imageDetails,
|
|
13
|
-
const volta::react::KeplerScriptImageLoaderDelegate::Shared& delegate) {
|
|
14
|
-
cacheHandler.load(imageDetails, delegate);
|
|
15
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <KeplerScript/utils/image/KeplerScriptImageCacheHandler.h>
|
|
4
|
-
#include <Volta/cache/image/ImageUtil.h>
|
|
5
|
-
|
|
6
|
-
class IExpoImageCacheHandler {
|
|
7
|
-
public:
|
|
8
|
-
virtual ~IExpoImageCacheHandler() = default;
|
|
9
|
-
|
|
10
|
-
virtual void clearMemoryCache() = 0;
|
|
11
|
-
virtual void clearDiskCache() = 0;
|
|
12
|
-
|
|
13
|
-
virtual void load(
|
|
14
|
-
volta::ImageDetails& imageDetails,
|
|
15
|
-
const volta::react::KeplerScriptImageLoaderDelegate::Shared& keplerScriptImageLoaderDelegate) = 0;
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
class ExpoImageCacheHandler : public IExpoImageCacheHandler {
|
|
19
|
-
public:
|
|
20
|
-
void clearMemoryCache() override;
|
|
21
|
-
void clearDiskCache() override;
|
|
22
|
-
void load(
|
|
23
|
-
volta::ImageDetails& imageDetails,
|
|
24
|
-
const volta::react::KeplerScriptImageLoaderDelegate::Shared& keplerScriptImageLoaderDelegate) override;
|
|
25
|
-
|
|
26
|
-
private:
|
|
27
|
-
volta::react::KeplerScriptImageCacheHandler cacheHandler;
|
|
28
|
-
};
|