react-native-image-stitcher 0.1.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/CHANGELOG.md +96 -0
- package/LICENSE +201 -0
- package/NOTICE +21 -0
- package/README.md +189 -0
- package/RNImageStitcher.podspec +76 -0
- package/android/build.gradle +224 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/cpp/CMakeLists.txt +124 -0
- package/android/src/main/cpp/image_stitcher_jni.cpp +145 -0
- package/android/src/main/cpp/keyframe_gate_jni.cpp +204 -0
- package/android/src/main/java/io/imagestitcher/rn/BatchStitcher.kt +426 -0
- package/android/src/main/java/io/imagestitcher/rn/IncrementalFirstwinsEngine.kt +960 -0
- package/android/src/main/java/io/imagestitcher/rn/IncrementalStitcher.kt +2371 -0
- package/android/src/main/java/io/imagestitcher/rn/KeyframeGate.kt +256 -0
- package/android/src/main/java/io/imagestitcher/rn/QualityChecker.kt +167 -0
- package/android/src/main/java/io/imagestitcher/rn/RNImageStitcherPackage.kt +39 -0
- package/android/src/main/java/io/imagestitcher/rn/RNSARCameraView.kt +558 -0
- package/android/src/main/java/io/imagestitcher/rn/RNSARCameraViewManager.kt +35 -0
- package/android/src/main/java/io/imagestitcher/rn/RNSARSession.kt +784 -0
- package/android/src/main/java/io/imagestitcher/rn/ar/BackgroundRenderer.kt +176 -0
- package/android/src/main/java/io/imagestitcher/rn/ar/ShaderUtil.kt +67 -0
- package/android/src/main/java/io/imagestitcher/rn/ar/YuvImageConverter.kt +201 -0
- package/cpp/ar_frame_pose.h +63 -0
- package/cpp/keyframe_gate.cpp +927 -0
- package/cpp/keyframe_gate.hpp +240 -0
- package/cpp/stitcher.cpp +2207 -0
- package/cpp/stitcher.hpp +275 -0
- package/dist/ar/useARSession.d.ts +102 -0
- package/dist/ar/useARSession.js +133 -0
- package/dist/camera/ARCameraView.d.ts +93 -0
- package/dist/camera/ARCameraView.js +170 -0
- package/dist/camera/Camera.d.ts +134 -0
- package/dist/camera/Camera.js +688 -0
- package/dist/camera/CameraShutter.d.ts +80 -0
- package/dist/camera/CameraShutter.js +237 -0
- package/dist/camera/CameraView.d.ts +65 -0
- package/dist/camera/CameraView.js +117 -0
- package/dist/camera/CaptureControlsBar.d.ts +87 -0
- package/dist/camera/CaptureControlsBar.js +82 -0
- package/dist/camera/CaptureHeader.d.ts +62 -0
- package/dist/camera/CaptureHeader.js +81 -0
- package/dist/camera/CapturePreview.d.ts +70 -0
- package/dist/camera/CapturePreview.js +188 -0
- package/dist/camera/CaptureStatusOverlay.d.ts +75 -0
- package/dist/camera/CaptureStatusOverlay.js +326 -0
- package/dist/camera/CaptureThumbnailStrip.d.ts +87 -0
- package/dist/camera/CaptureThumbnailStrip.js +177 -0
- package/dist/camera/IncrementalPanGuide.d.ts +83 -0
- package/dist/camera/IncrementalPanGuide.js +267 -0
- package/dist/camera/PanoramaBandOverlay.d.ts +107 -0
- package/dist/camera/PanoramaBandOverlay.js +399 -0
- package/dist/camera/PanoramaConfirmModal.d.ts +57 -0
- package/dist/camera/PanoramaConfirmModal.js +128 -0
- package/dist/camera/PanoramaGuidance.d.ts +79 -0
- package/dist/camera/PanoramaGuidance.js +246 -0
- package/dist/camera/PanoramaSettingsModal.d.ts +311 -0
- package/dist/camera/PanoramaSettingsModal.js +611 -0
- package/dist/camera/ViewportCropOverlay.d.ts +46 -0
- package/dist/camera/ViewportCropOverlay.js +67 -0
- package/dist/camera/useCapture.d.ts +111 -0
- package/dist/camera/useCapture.js +160 -0
- package/dist/camera/useDeviceOrientation.d.ts +48 -0
- package/dist/camera/useDeviceOrientation.js +131 -0
- package/dist/camera/useVideoCapture.d.ts +79 -0
- package/dist/camera/useVideoCapture.js +151 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.js +39 -0
- package/dist/quality/normaliseOrientation.d.ts +36 -0
- package/dist/quality/normaliseOrientation.js +62 -0
- package/dist/quality/runQualityCheck.d.ts +41 -0
- package/dist/quality/runQualityCheck.js +98 -0
- package/dist/sensors/useIMUTranslationGate.d.ts +70 -0
- package/dist/sensors/useIMUTranslationGate.js +235 -0
- package/dist/stitching/IncrementalStitcherView.d.ts +41 -0
- package/dist/stitching/IncrementalStitcherView.js +157 -0
- package/dist/stitching/incremental.d.ts +930 -0
- package/dist/stitching/incremental.js +133 -0
- package/dist/stitching/stitchFrames.d.ts +55 -0
- package/dist/stitching/stitchFrames.js +56 -0
- package/dist/stitching/stitchVideo.d.ts +119 -0
- package/dist/stitching/stitchVideo.js +57 -0
- package/dist/stitching/useIncrementalJSDriver.d.ts +74 -0
- package/dist/stitching/useIncrementalJSDriver.js +199 -0
- package/dist/stitching/useIncrementalStitcher.d.ts +58 -0
- package/dist/stitching/useIncrementalStitcher.js +172 -0
- package/dist/types.d.ts +58 -0
- package/dist/types.js +15 -0
- package/ios/Package.swift +72 -0
- package/ios/Sources/RNImageStitcher/ARCameraViewManager.m +33 -0
- package/ios/Sources/RNImageStitcher/ARCameraViewManager.swift +40 -0
- package/ios/Sources/RNImageStitcher/ARSessionBridge.m +55 -0
- package/ios/Sources/RNImageStitcher/ARSessionBridge.swift +149 -0
- package/ios/Sources/RNImageStitcher/IncrementalStitcher.swift +2727 -0
- package/ios/Sources/RNImageStitcher/IncrementalStitcherBridge.m +85 -0
- package/ios/Sources/RNImageStitcher/IncrementalStitcherBridge.swift +625 -0
- package/ios/Sources/RNImageStitcher/KeyframeGate.swift +328 -0
- package/ios/Sources/RNImageStitcher/KeyframeGateBridge.h +141 -0
- package/ios/Sources/RNImageStitcher/KeyframeGateBridge.mm +278 -0
- package/ios/Sources/RNImageStitcher/OpenCVIncrementalStitcher.h +473 -0
- package/ios/Sources/RNImageStitcher/OpenCVIncrementalStitcher.mm +1326 -0
- package/ios/Sources/RNImageStitcher/OpenCVKeyframeCollector.h +97 -0
- package/ios/Sources/RNImageStitcher/OpenCVKeyframeCollector.mm +296 -0
- package/ios/Sources/RNImageStitcher/OpenCVSlitScanStitcher.h +103 -0
- package/ios/Sources/RNImageStitcher/OpenCVSlitScanStitcher.mm +3285 -0
- package/ios/Sources/RNImageStitcher/OpenCVStitcher.h +238 -0
- package/ios/Sources/RNImageStitcher/OpenCVStitcher.mm +1880 -0
- package/ios/Sources/RNImageStitcher/QualityChecker.swift +252 -0
- package/ios/Sources/RNImageStitcher/QualityCheckerBridge.m +26 -0
- package/ios/Sources/RNImageStitcher/QualityCheckerBridge.swift +72 -0
- package/ios/Sources/RNImageStitcher/RNSARCameraView.swift +114 -0
- package/ios/Sources/RNImageStitcher/RNSARSession.swift +1111 -0
- package/ios/Sources/RNImageStitcher/Stitcher.swift +243 -0
- package/ios/Sources/RNImageStitcher/StitcherBridge.m +28 -0
- package/ios/Sources/RNImageStitcher/StitcherBridge.swift +246 -0
- package/package.json +73 -0
- package/react-native.config.js +34 -0
- package/scripts/opencv-version.txt +1 -0
- package/scripts/postinstall-fetch-binaries.js +286 -0
- package/src/ar/useARSession.ts +210 -0
- package/src/camera/.gitkeep +0 -0
- package/src/camera/ARCameraView.tsx +256 -0
- package/src/camera/Camera.tsx +1053 -0
- package/src/camera/CameraShutter.tsx +292 -0
- package/src/camera/CameraView.tsx +157 -0
- package/src/camera/CaptureControlsBar.tsx +204 -0
- package/src/camera/CaptureHeader.tsx +184 -0
- package/src/camera/CapturePreview.tsx +318 -0
- package/src/camera/CaptureStatusOverlay.tsx +391 -0
- package/src/camera/CaptureThumbnailStrip.tsx +277 -0
- package/src/camera/IncrementalPanGuide.tsx +328 -0
- package/src/camera/PanoramaBandOverlay.tsx +498 -0
- package/src/camera/PanoramaConfirmModal.tsx +206 -0
- package/src/camera/PanoramaGuidance.tsx +327 -0
- package/src/camera/PanoramaSettingsModal.tsx +1357 -0
- package/src/camera/ViewportCropOverlay.tsx +81 -0
- package/src/camera/useCapture.ts +279 -0
- package/src/camera/useDeviceOrientation.ts +140 -0
- package/src/camera/useVideoCapture.ts +236 -0
- package/src/index.ts +53 -0
- package/src/quality/.gitkeep +0 -0
- package/src/quality/normaliseOrientation.ts +79 -0
- package/src/quality/runQualityCheck.ts +131 -0
- package/src/sensors/useIMUTranslationGate.ts +347 -0
- package/src/stitching/.gitkeep +0 -0
- package/src/stitching/IncrementalStitcherView.tsx +198 -0
- package/src/stitching/incremental.ts +1021 -0
- package/src/stitching/stitchFrames.ts +88 -0
- package/src/stitching/stitchVideo.ts +153 -0
- package/src/stitching/useIncrementalJSDriver.ts +273 -0
- package/src/stitching/useIncrementalStitcher.ts +252 -0
- package/src/types.ts +78 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
//
|
|
3
|
+
// ObjC shim that registers IncrementalStitcherBridge as the
|
|
4
|
+
// "IncrementalStitcher" RN module. REMAP form, same
|
|
5
|
+
// rationale as ARSessionBridge.m: the Swift singleton already takes
|
|
6
|
+
// the @objc name "IncrementalStitcher" so attaching the
|
|
7
|
+
// bridge category to that class would shadow the singleton's
|
|
8
|
+
// methods. REMAP_MODULE keeps the JS-visible name stable while
|
|
9
|
+
// telling RN to instantiate the bridge class.
|
|
10
|
+
|
|
11
|
+
#import <React/RCTBridgeModule.h>
|
|
12
|
+
#import <React/RCTEventEmitter.h>
|
|
13
|
+
|
|
14
|
+
@interface RCT_EXTERN_REMAP_MODULE(
|
|
15
|
+
IncrementalStitcher,
|
|
16
|
+
IncrementalStitcherBridge,
|
|
17
|
+
RCTEventEmitter
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
RCT_EXTERN_METHOD(start:(NSDictionary *)options
|
|
21
|
+
resolver:(RCTPromiseResolveBlock)resolver
|
|
22
|
+
rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
23
|
+
|
|
24
|
+
RCT_EXTERN_METHOD(finalize:(NSDictionary *)options
|
|
25
|
+
resolver:(RCTPromiseResolveBlock)resolver
|
|
26
|
+
rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
27
|
+
|
|
28
|
+
RCT_EXTERN_METHOD(cancel:(RCTPromiseResolveBlock)resolver
|
|
29
|
+
rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
30
|
+
|
|
31
|
+
RCT_EXTERN_METHOD(getState:(RCTPromiseResolveBlock)resolver
|
|
32
|
+
rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
33
|
+
|
|
34
|
+
RCT_EXTERN_METHOD(appendDebugLog:(NSString *)message
|
|
35
|
+
resolver:(RCTPromiseResolveBlock)resolver
|
|
36
|
+
rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
37
|
+
|
|
38
|
+
// V15.0e — JS poll for ARKit plane detection state.
|
|
39
|
+
RCT_EXTERN_METHOD(getARPlaneStatus:(RCTPromiseResolveBlock)resolver
|
|
40
|
+
rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
41
|
+
|
|
42
|
+
// V15.0g — relatch the AR plane to the camera's current aim, picking
|
|
43
|
+
// the largest plane that passes the alignment threshold.
|
|
44
|
+
RCT_EXTERN_METHOD(relatchARPlane:(RCTPromiseResolveBlock)resolver
|
|
45
|
+
rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
46
|
+
|
|
47
|
+
// V16 — pose-based keyframe gate: arm the next ARFrame to be
|
|
48
|
+
// force-accepted, used on shutter release so the trailing edge of
|
|
49
|
+
// the scan isn't truncated.
|
|
50
|
+
RCT_EXTERN_METHOD(markNextFrameAsLastKeyframe:(RCTPromiseResolveBlock)resolver
|
|
51
|
+
rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
52
|
+
|
|
53
|
+
// V16 Phase 1b.fix2 — JS-callable poll for process phys_footprint MB.
|
|
54
|
+
// Backs the on-screen memory debug overlay; same metric iOS jetsam
|
|
55
|
+
// evaluates against.
|
|
56
|
+
RCT_EXTERN_METHOD(getMemoryFootprintMB:(RCTPromiseResolveBlock)resolver
|
|
57
|
+
rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
58
|
+
|
|
59
|
+
// 2026-05-16 — realtime+batch fusion (Option A "Replace on completion").
|
|
60
|
+
// Run the shared C++ stitcher over a caller-supplied list of keyframe
|
|
61
|
+
// JPEG paths and write a refined panorama to `outputPath`. See JS
|
|
62
|
+
// `IncrementalRefineOptions` / `IncrementalRefineResult` types and the
|
|
63
|
+
// design doc 2026-05-14-realtime-batch-fusion.md.
|
|
64
|
+
RCT_EXTERN_METHOD(refinePanorama:(NSDictionary *)options
|
|
65
|
+
resolver:(RCTPromiseResolveBlock)resolver
|
|
66
|
+
rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
67
|
+
|
|
68
|
+
// 2026-05-17 (Issue #2) — iOS non-AR frame ingestion. JS-side driver
|
|
69
|
+
// hands snapshot file paths + gyro-derived pose to the engine so the
|
|
70
|
+
// live band populates in non-AR mode (parity with Android). See JS
|
|
71
|
+
// `useIncrementalVisionCameraDriver`.
|
|
72
|
+
RCT_EXTERN_METHOD(processFrameAtPath:(NSDictionary *)options
|
|
73
|
+
resolver:(RCTPromiseResolveBlock)resolver
|
|
74
|
+
rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
75
|
+
|
|
76
|
+
// 2026-05-18 (Iss 3) — keyframe storage management. cleanupKeyframes
|
|
77
|
+
// GCs stale per-session directories under Library/Application Support/
|
|
78
|
+
// Captures; getKeyframeDir returns the active capture's session dir.
|
|
79
|
+
RCT_EXTERN_METHOD(cleanupKeyframes:(NSDictionary *)options
|
|
80
|
+
resolver:(RCTPromiseResolveBlock)resolver
|
|
81
|
+
rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
82
|
+
RCT_EXTERN_METHOD(getKeyframeDir:(RCTPromiseResolveBlock)resolver
|
|
83
|
+
rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
84
|
+
|
|
85
|
+
@end
|