@photivra/engine 1.5.0 → 2.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 +414 -6
- package/CITATION.cff +1 -1
- package/NODE_SUPPORT.md +64 -12
- package/README.md +301 -182
- package/SECURITY.md +37 -28
- package/THIRD_PARTY.md +148 -4
- package/dist/camera/equivalent-focal-length.d.ts +13 -14
- package/dist/camera/equivalent-focal-length.js +15 -13
- package/dist/camera/equivalent-focal-length.js.map +1 -1
- package/dist/camera/field-of-view.d.ts +30 -19
- package/dist/camera/field-of-view.js +67 -18
- package/dist/camera/field-of-view.js.map +1 -1
- package/dist/camera/lens-projection.d.ts +170 -0
- package/dist/camera/lens-projection.js +444 -0
- package/dist/camera/lens-projection.js.map +1 -0
- package/dist/camera/projected-object-size.d.ts +10 -11
- package/dist/camera/projected-object-size.js +12 -10
- package/dist/camera/projected-object-size.js.map +1 -1
- package/dist/capture/capture-export-metadata.d.ts +9 -10
- package/dist/capture/capture-export-metadata.js +8 -5
- package/dist/capture/capture-export-metadata.js.map +1 -1
- package/dist/capture/dng-import.d.ts +91 -0
- package/dist/capture/dng-import.js +343 -0
- package/dist/capture/dng-import.js.map +1 -0
- package/dist/capture/environment-raw-producer.d.ts +37 -17
- package/dist/capture/environment-raw-producer.js +43 -19
- package/dist/capture/environment-raw-producer.js.map +1 -1
- package/dist/capture/export-jpeg.d.ts +35 -4
- package/dist/capture/export-jpeg.js +133 -47
- package/dist/capture/export-jpeg.js.map +1 -1
- package/dist/capture/export-tiff.d.ts +48 -24
- package/dist/capture/export-tiff.js +91 -31
- package/dist/capture/export-tiff.js.map +1 -1
- package/dist/capture/focus-control.d.ts +42 -65
- package/dist/capture/focus-control.js +56 -75
- package/dist/capture/focus-control.js.map +1 -1
- package/dist/capture/host-yield-cadence.d.ts +25 -0
- package/dist/capture/host-yield-cadence.js +25 -0
- package/dist/capture/host-yield-cadence.js.map +1 -0
- package/dist/capture/linear-encoding.d.ts +14 -12
- package/dist/capture/linear-encoding.js +14 -13
- package/dist/capture/linear-encoding.js.map +1 -1
- package/dist/capture/lossless-jpeg.d.ts +27 -0
- package/dist/capture/lossless-jpeg.js +237 -0
- package/dist/capture/lossless-jpeg.js.map +1 -0
- package/dist/capture/native-environment-lean.d.ts +227 -0
- package/dist/capture/native-environment-lean.js +974 -0
- package/dist/capture/native-environment-lean.js.map +1 -0
- package/dist/capture/native-environment-optical-stage.d.ts +97 -0
- package/dist/capture/native-environment-optical-stage.js +340 -0
- package/dist/capture/native-environment-optical-stage.js.map +1 -0
- package/dist/capture/native-environment-raw.d.ts +140 -6
- package/dist/capture/native-environment-raw.js +435 -34
- package/dist/capture/native-environment-raw.js.map +1 -1
- package/dist/capture/native-raw-development.d.ts +116 -9
- package/dist/capture/native-raw-development.js +221 -62
- package/dist/capture/native-raw-development.js.map +1 -1
- package/dist/capture/native-raw-dng.d.ts +60 -0
- package/dist/capture/native-raw-dng.js +167 -0
- package/dist/capture/native-raw-dng.js.map +1 -0
- package/dist/capture/native-raw.d.ts +65 -12
- package/dist/capture/native-raw.js +81 -19
- package/dist/capture/native-raw.js.map +1 -1
- package/dist/capture/packed-sensor-raw.d.ts +160 -0
- package/dist/capture/packed-sensor-raw.js +221 -0
- package/dist/capture/packed-sensor-raw.js.map +1 -0
- package/dist/capture/photographic-export.d.ts +58 -35
- package/dist/capture/photographic-export.js +177 -70
- package/dist/capture/photographic-export.js.map +1 -1
- package/dist/capture/raw-development-kernel.d.ts +52 -0
- package/dist/capture/raw-development-kernel.js +88 -0
- package/dist/capture/raw-development-kernel.js.map +1 -0
- package/dist/capture/raw-frame-limits.d.ts +7 -7
- package/dist/capture/raw-frame-limits.js +7 -6
- package/dist/capture/raw-frame-limits.js.map +1 -1
- package/dist/capture/raw-frame-reconstruction.d.ts +8 -9
- package/dist/capture/raw-frame-reconstruction.js +9 -8
- package/dist/capture/raw-frame-reconstruction.js.map +1 -1
- package/dist/capture/raw-white-level.d.ts +55 -0
- package/dist/capture/raw-white-level.js +165 -0
- package/dist/capture/raw-white-level.js.map +1 -0
- package/dist/capture/release-sequence.d.ts +5 -7
- package/dist/capture/release-sequence.js +15 -13
- package/dist/capture/release-sequence.js.map +1 -1
- package/dist/capture/sensor-raw-frame.d.ts +5 -6
- package/dist/capture/sensor-raw-frame.js +26 -9
- package/dist/capture/sensor-raw-frame.js.map +1 -1
- package/dist/capture/sensor-raw-producer.d.ts +21 -13
- package/dist/capture/sensor-raw-producer.js +86 -25
- package/dist/capture/sensor-raw-producer.js.map +1 -1
- package/dist/capture/simulated-capture.d.ts +15 -16
- package/dist/capture/simulated-capture.js +22 -12
- package/dist/capture/simulated-capture.js.map +1 -1
- package/dist/color/camera-color-matrix.d.ts +69 -0
- package/dist/color/camera-color-matrix.js +132 -0
- package/dist/color/camera-color-matrix.js.map +1 -0
- package/dist/color/capture-color.d.ts +17 -10
- package/dist/color/capture-color.js +50 -17
- package/dist/color/capture-color.js.map +1 -1
- package/dist/color/chromatic-adaptation.d.ts +63 -0
- package/dist/color/chromatic-adaptation.js +91 -0
- package/dist/color/chromatic-adaptation.js.map +1 -0
- package/dist/color/color-difference.d.ts +104 -0
- package/dist/color/color-difference.js +205 -0
- package/dist/color/color-difference.js.map +1 -0
- package/dist/color/color-matching-functions.d.ts +168 -0
- package/dist/color/color-matching-functions.js +309 -0
- package/dist/color/color-matching-functions.js.map +1 -0
- package/dist/color/colorimetry-math.d.ts +52 -0
- package/dist/color/colorimetry-math.js +144 -0
- package/dist/color/colorimetry-math.js.map +1 -0
- package/dist/color/gamut-mapping.d.ts +54 -0
- package/dist/color/gamut-mapping.js +107 -0
- package/dist/color/gamut-mapping.js.map +1 -0
- package/dist/color/illuminants.d.ts +182 -0
- package/dist/color/illuminants.js +434 -0
- package/dist/color/illuminants.js.map +1 -0
- package/dist/color/rgb-color-spaces.d.ts +79 -0
- package/dist/color/rgb-color-spaces.js +115 -0
- package/dist/color/rgb-color-spaces.js.map +1 -0
- package/dist/color/sensor-color-development.d.ts +33 -11
- package/dist/color/sensor-color-development.js +104 -30
- package/dist/color/sensor-color-development.js.map +1 -1
- package/dist/color/srgb-icc.d.ts +9 -2
- package/dist/color/srgb-icc.js +16 -5
- package/dist/color/srgb-icc.js.map +1 -1
- package/dist/color/srgb-transfer.d.ts +1 -2
- package/dist/color/srgb-transfer.js +1 -1
- package/dist/color/srgb-transfer.js.map +1 -1
- package/dist/color/white-balance.d.ts +68 -19
- package/dist/color/white-balance.js +168 -35
- package/dist/color/white-balance.js.map +1 -1
- package/dist/composition/image-formation-plan.d.ts +152 -128
- package/dist/composition/image-formation-plan.js +292 -138
- package/dist/composition/image-formation-plan.js.map +1 -1
- package/dist/composition/plan-consumer.d.ts +6 -7
- package/dist/composition/plan-consumer.js +14 -11
- package/dist/composition/plan-consumer.js.map +1 -1
- package/dist/core/calculation-result.d.ts +21 -14
- package/dist/core/calculation-result.js +209 -11
- package/dist/core/calculation-result.js.map +1 -1
- package/dist/core/canonical-json.d.ts +13 -8
- package/dist/core/canonical-json.js +34 -15
- package/dist/core/canonical-json.js.map +1 -1
- package/dist/core/configuration-error.d.ts +5 -4
- package/dist/core/configuration-error.js +5 -3
- package/dist/core/configuration-error.js.map +1 -1
- package/dist/core/evidence-provenance.d.ts +12 -12
- package/dist/core/evidence-provenance.js +10 -9
- package/dist/core/evidence-provenance.js.map +1 -1
- package/dist/core/image-formation.d.ts +11 -10
- package/dist/core/image-formation.js +11 -9
- package/dist/core/image-formation.js.map +1 -1
- package/dist/core/owned-data.d.ts +9 -17
- package/dist/core/owned-data.js +9 -16
- package/dist/core/owned-data.js.map +1 -1
- package/dist/core/portable-math.d.ts +15 -0
- package/dist/core/portable-math.js +56 -0
- package/dist/core/portable-math.js.map +1 -0
- package/dist/core/record-validation.d.ts +48 -9
- package/dist/core/record-validation.js +93 -19
- package/dist/core/record-validation.js.map +1 -1
- package/dist/core/scientific-assurance.d.ts +16 -14
- package/dist/core/scientific-assurance.js +22 -18
- package/dist/core/scientific-assurance.js.map +1 -1
- package/dist/core/spectral-composition.d.ts +13 -14
- package/dist/core/spectral-composition.js +30 -27
- package/dist/core/spectral-composition.js.map +1 -1
- package/dist/core/spectral.d.ts +5 -6
- package/dist/core/spectral.js +9 -7
- package/dist/core/spectral.js.map +1 -1
- package/dist/core/validation.d.ts +3 -6
- package/dist/core/validation.js +3 -5
- package/dist/core/validation.js.map +1 -1
- package/dist/core/version.d.ts +6 -6
- package/dist/core/version.js +6 -5
- package/dist/core/version.js.map +1 -1
- package/dist/equipment/exposure-capabilities.d.ts +10 -10
- package/dist/equipment/exposure-capabilities.js +40 -30
- package/dist/equipment/exposure-capabilities.js.map +1 -1
- package/dist/equipment/generic-tier-assets.d.ts +13 -6
- package/dist/equipment/generic-tier-assets.js +34 -15
- package/dist/equipment/generic-tier-assets.js.map +1 -1
- package/dist/equipment/generic-tier-presets.d.ts +5 -6
- package/dist/equipment/generic-tier-presets.js +15 -13
- package/dist/equipment/generic-tier-presets.js.map +1 -1
- package/dist/equipment/iso-capabilities.d.ts +21 -22
- package/dist/equipment/iso-capabilities.js +49 -44
- package/dist/equipment/iso-capabilities.js.map +1 -1
- package/dist/equipment/metering-capabilities.d.ts +5 -6
- package/dist/equipment/metering-capabilities.js +22 -19
- package/dist/equipment/metering-capabilities.js.map +1 -1
- package/dist/equipment/release-capabilities.d.ts +3 -4
- package/dist/equipment/release-capabilities.js +18 -14
- package/dist/equipment/release-capabilities.js.map +1 -1
- package/dist/exposure/exposure-duration-control.d.ts +19 -17
- package/dist/exposure/exposure-duration-control.js +27 -23
- package/dist/exposure/exposure-duration-control.js.map +1 -1
- package/dist/exposure/exposure-mode-resolver.d.ts +42 -39
- package/dist/exposure/exposure-mode-resolver.js +127 -82
- package/dist/exposure/exposure-mode-resolver.js.map +1 -1
- package/dist/exposure/exposure.d.ts +17 -16
- package/dist/exposure/exposure.js +22 -15
- package/dist/exposure/exposure.js.map +1 -1
- package/dist/exposure/flash-ttl.d.ts +135 -0
- package/dist/exposure/flash-ttl.js +193 -0
- package/dist/exposure/flash-ttl.js.map +1 -0
- package/dist/exposure/flash.d.ts +144 -36
- package/dist/exposure/flash.js +259 -59
- package/dist/exposure/flash.js.map +1 -1
- package/dist/exposure/metering-scene-radiance.d.ts +10 -10
- package/dist/exposure/metering-scene-radiance.js +42 -23
- package/dist/exposure/metering-scene-radiance.js.map +1 -1
- package/dist/exposure/metering-target.d.ts +8 -8
- package/dist/exposure/metering-target.js +30 -20
- package/dist/exposure/metering-target.js.map +1 -1
- package/dist/exposure/metering-temporal.d.ts +16 -15
- package/dist/exposure/metering-temporal.js +41 -19
- package/dist/exposure/metering-temporal.js.map +1 -1
- package/dist/exposure/metering.d.ts +64 -17
- package/dist/exposure/metering.js +159 -30
- package/dist/exposure/metering.js.map +1 -1
- package/dist/exposure/program-line.d.ts +5 -5
- package/dist/exposure/program-line.js +20 -13
- package/dist/exposure/program-line.js.map +1 -1
- package/dist/facade/camera-preset.d.ts +8 -0
- package/dist/facade/camera-preset.js +102 -0
- package/dist/facade/camera-preset.js.map +1 -0
- package/dist/facade/chart-radiance-batch.d.ts +57 -0
- package/dist/facade/chart-radiance-batch.js +121 -0
- package/dist/facade/chart-radiance-batch.js.map +1 -0
- package/dist/facade/chart-scenes.d.ts +177 -0
- package/dist/facade/chart-scenes.js +232 -0
- package/dist/facade/chart-scenes.js.map +1 -0
- package/dist/facade/diffraction-provider.d.ts +30 -0
- package/dist/facade/diffraction-provider.js +127 -0
- package/dist/facade/diffraction-provider.js.map +1 -0
- package/dist/facade/host-yield.d.ts +7 -0
- package/dist/facade/host-yield.js +19 -0
- package/dist/facade/host-yield.js.map +1 -0
- package/dist/facade/scene-radiance.d.ts +117 -0
- package/dist/facade/scene-radiance.js +205 -0
- package/dist/facade/scene-radiance.js.map +1 -0
- package/dist/facade/simulate-capture.d.ts +363 -0
- package/dist/facade/simulate-capture.js +1281 -0
- package/dist/facade/simulate-capture.js.map +1 -0
- package/dist/gpu/chart-radiance-gpu.d.ts +17 -0
- package/dist/gpu/chart-radiance-gpu.js +176 -0
- package/dist/gpu/chart-radiance-gpu.js.map +1 -0
- package/dist/gpu/image-kernel-accelerator.d.ts +132 -0
- package/dist/gpu/image-kernel-accelerator.js +720 -0
- package/dist/gpu/image-kernel-accelerator.js.map +1 -0
- package/dist/gpu/image-kernel-execution.d.ts +92 -0
- package/dist/gpu/image-kernel-execution.js +84 -0
- package/dist/gpu/image-kernel-execution.js.map +1 -0
- package/dist/gpu/sensor-stage-gpu.d.ts +44 -0
- package/dist/gpu/sensor-stage-gpu.js +317 -0
- package/dist/gpu/sensor-stage-gpu.js.map +1 -0
- package/dist/gpu/temporal-sum-gpu.d.ts +23 -0
- package/dist/gpu/temporal-sum-gpu.js +150 -0
- package/dist/gpu/temporal-sum-gpu.js.map +1 -0
- package/dist/gpu/webgpu-runtime.d.ts +63 -0
- package/dist/gpu/webgpu-runtime.js +215 -0
- package/dist/gpu/webgpu-runtime.js.map +1 -0
- package/dist/gpu/wgsl-chart-kernel.d.ts +30 -0
- package/dist/gpu/wgsl-chart-kernel.js +165 -0
- package/dist/gpu/wgsl-chart-kernel.js.map +1 -0
- package/dist/gpu/wgsl-kernels.d.ts +53 -0
- package/dist/gpu/wgsl-kernels.js +365 -0
- package/dist/gpu/wgsl-kernels.js.map +1 -0
- package/dist/gpu/wgsl-sensor-kernel.d.ts +64 -0
- package/dist/gpu/wgsl-sensor-kernel.js +409 -0
- package/dist/gpu/wgsl-sensor-kernel.js.map +1 -0
- package/dist/index.d.ts +91 -25
- package/dist/index.js +60 -15
- package/dist/index.js.map +1 -1
- package/dist/motion/camera-rotation.d.ts +92 -40
- package/dist/motion/camera-rotation.js +84 -47
- package/dist/motion/camera-rotation.js.map +1 -1
- package/dist/motion/capture-rotation-inverse-mapping.d.ts +37 -34
- package/dist/motion/capture-rotation-inverse-mapping.js +32 -24
- package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -1
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts +39 -35
- package/dist/motion/capture-rotation-temporal-quadrature.js +37 -28
- package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -1
- package/dist/motion/capture-rotation-trajectory.d.ts +32 -28
- package/dist/motion/capture-rotation-trajectory.js +36 -26
- package/dist/motion/capture-rotation-trajectory.js.map +1 -1
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts +23 -21
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js +33 -14
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js.map +1 -1
- package/dist/motion/extended-object-projection.d.ts +19 -16
- package/dist/motion/extended-object-projection.js +38 -18
- package/dist/motion/extended-object-projection.js.map +1 -1
- package/dist/motion/projected-motion.d.ts +18 -17
- package/dist/motion/projected-motion.js +25 -17
- package/dist/motion/projected-motion.js.map +1 -1
- package/dist/motion/temporal-exposure-sum.d.ts +55 -0
- package/dist/motion/temporal-exposure-sum.js +141 -0
- package/dist/motion/temporal-exposure-sum.js.map +1 -0
- package/dist/motion/video-sequence.d.ts +111 -0
- package/dist/motion/video-sequence.js +179 -0
- package/dist/motion/video-sequence.js.map +1 -0
- package/dist/optics/aperture.d.ts +14 -15
- package/dist/optics/aperture.js +13 -11
- package/dist/optics/aperture.js.map +1 -1
- package/dist/optics/atmospheric-haze.d.ts +83 -0
- package/dist/optics/atmospheric-haze.js +113 -0
- package/dist/optics/atmospheric-haze.js.map +1 -0
- package/dist/optics/brown-conrady-distortion.d.ts +116 -0
- package/dist/optics/brown-conrady-distortion.js +291 -0
- package/dist/optics/brown-conrady-distortion.js.map +1 -0
- package/dist/optics/circle-of-confusion.d.ts +10 -10
- package/dist/optics/circle-of-confusion.js +15 -11
- package/dist/optics/circle-of-confusion.js.map +1 -1
- package/dist/optics/complex-pupil-psf.d.ts +64 -33
- package/dist/optics/complex-pupil-psf.js +190 -98
- package/dist/optics/complex-pupil-psf.js.map +1 -1
- package/dist/optics/depth-of-field.d.ts +25 -15
- package/dist/optics/depth-of-field.js +67 -27
- package/dist/optics/depth-of-field.js.map +1 -1
- package/dist/optics/diffraction-psf-profile.d.ts +118 -0
- package/dist/optics/diffraction-psf-profile.js +252 -0
- package/dist/optics/diffraction-psf-profile.js.map +1 -0
- package/dist/optics/diffraction.d.ts +14 -13
- package/dist/optics/diffraction.js +14 -10
- package/dist/optics/diffraction.js.map +1 -1
- package/dist/optics/focus-breathing.d.ts +88 -27
- package/dist/optics/focus-breathing.js +114 -23
- package/dist/optics/focus-breathing.js.map +1 -1
- package/dist/optics/focus-state.d.ts +18 -18
- package/dist/optics/focus-state.js +21 -15
- package/dist/optics/focus-state.js.map +1 -1
- package/dist/optics/front-of-lens-filter.d.ts +45 -14
- package/dist/optics/front-of-lens-filter.js +259 -88
- package/dist/optics/front-of-lens-filter.js.map +1 -1
- package/dist/optics/illumination-vignetting.d.ts +16 -17
- package/dist/optics/illumination-vignetting.js +40 -17
- package/dist/optics/illumination-vignetting.js.map +1 -1
- package/dist/optics/irradiance-convolution.d.ts +59 -0
- package/dist/optics/irradiance-convolution.js +138 -0
- package/dist/optics/irradiance-convolution.js.map +1 -0
- package/dist/optics/lateral-chromatic-aberration.d.ts +33 -30
- package/dist/optics/lateral-chromatic-aberration.js +33 -23
- package/dist/optics/lateral-chromatic-aberration.js.map +1 -1
- package/dist/optics/lens-psf-kernels.d.ts +89 -0
- package/dist/optics/lens-psf-kernels.js +175 -0
- package/dist/optics/lens-psf-kernels.js.map +1 -0
- package/dist/optics/lens-psf-profile.d.ts +78 -46
- package/dist/optics/lens-psf-profile.js +335 -124
- package/dist/optics/lens-psf-profile.js.map +1 -1
- package/dist/optics/longitudinal-chromatic-aberration.d.ts +102 -0
- package/dist/optics/longitudinal-chromatic-aberration.js +210 -0
- package/dist/optics/longitudinal-chromatic-aberration.js.map +1 -0
- package/dist/optics/polygon-diffraction.d.ts +80 -23
- package/dist/optics/polygon-diffraction.js +130 -25
- package/dist/optics/polygon-diffraction.js.map +1 -1
- package/dist/optics/profile-contract.d.ts +5 -6
- package/dist/optics/profile-contract.js +14 -11
- package/dist/optics/profile-contract.js.map +1 -1
- package/dist/optics/psf-foundation.d.ts +23 -23
- package/dist/optics/psf-foundation.js +24 -21
- package/dist/optics/psf-foundation.js.map +1 -1
- package/dist/optics/pupil-vignetting.d.ts +118 -0
- package/dist/optics/pupil-vignetting.js +264 -0
- package/dist/optics/pupil-vignetting.js.map +1 -0
- package/dist/optics/radial-distortion.d.ts +34 -33
- package/dist/optics/radial-distortion.js +37 -30
- package/dist/optics/radial-distortion.js.map +1 -1
- package/dist/optics/scene-to-sensor-irradiance.d.ts +47 -33
- package/dist/optics/scene-to-sensor-irradiance.js +73 -45
- package/dist/optics/scene-to-sensor-irradiance.js.map +1 -1
- package/dist/optics/scene-to-sensor-quadrature.d.ts +23 -18
- package/dist/optics/scene-to-sensor-quadrature.js +16 -11
- package/dist/optics/scene-to-sensor-quadrature.js.map +1 -1
- package/dist/optics/sensor-aperture-rays.d.ts +20 -4
- package/dist/optics/sensor-aperture-rays.js +32 -14
- package/dist/optics/sensor-aperture-rays.js.map +1 -1
- package/dist/optics/sensor-environment-query.d.ts +81 -16
- package/dist/optics/sensor-environment-query.js +145 -12
- package/dist/optics/sensor-environment-query.js.map +1 -1
- package/dist/optics/sensor-psf-quadrature.d.ts +12 -10
- package/dist/optics/sensor-psf-quadrature.js +18 -11
- package/dist/optics/sensor-psf-quadrature.js.map +1 -1
- package/dist/optics/sensor-psf-support.d.ts +8 -6
- package/dist/optics/sensor-psf-support.js +8 -5
- package/dist/optics/sensor-psf-support.js.map +1 -1
- package/dist/optics/stray-light.d.ts +22 -19
- package/dist/optics/stray-light.js +18 -12
- package/dist/optics/stray-light.js.map +1 -1
- package/dist/optics/thin-lens.d.ts +10 -9
- package/dist/optics/thin-lens.js +12 -8
- package/dist/optics/thin-lens.js.map +1 -1
- package/dist/optics/zernike-wavefront.d.ts +154 -0
- package/dist/optics/zernike-wavefront.js +352 -0
- package/dist/optics/zernike-wavefront.js.map +1 -0
- package/dist/output/capture-corrected-sdr.d.ts +16 -8
- package/dist/output/capture-corrected-sdr.js +16 -8
- package/dist/output/capture-corrected-sdr.js.map +1 -1
- package/dist/output/capture-geometry.d.ts +34 -36
- package/dist/output/capture-geometry.js +52 -32
- package/dist/output/capture-geometry.js.map +1 -1
- package/dist/output/capture-sdr.d.ts +7 -6
- package/dist/output/capture-sdr.js +11 -8
- package/dist/output/capture-sdr.js.map +1 -1
- package/dist/output/crop.d.ts +22 -6
- package/dist/output/crop.js +40 -6
- package/dist/output/crop.js.map +1 -1
- package/dist/output/geometric-transforms.d.ts +60 -23
- package/dist/output/geometric-transforms.js +111 -24
- package/dist/output/geometric-transforms.js.map +1 -1
- package/dist/output/lens-corrections.d.ts +27 -19
- package/dist/output/lens-corrections.js +29 -13
- package/dist/output/lens-corrections.js.map +1 -1
- package/dist/output/native-capture-sdr.d.ts +71 -16
- package/dist/output/native-capture-sdr.js +190 -33
- package/dist/output/native-capture-sdr.js.map +1 -1
- package/dist/output/png-encoder.d.ts +65 -0
- package/dist/output/png-encoder.js +461 -0
- package/dist/output/png-encoder.js.map +1 -0
- package/dist/output/print-contrast-reference.d.ts +10 -9
- package/dist/output/print-contrast-reference.js +10 -8
- package/dist/output/print-contrast-reference.js.map +1 -1
- package/dist/output/print-detail.d.ts +18 -17
- package/dist/output/print-detail.js +12 -10
- package/dist/output/print-detail.js.map +1 -1
- package/dist/output/print-jpeg.d.ts +26 -5
- package/dist/output/print-jpeg.js +117 -50
- package/dist/output/print-jpeg.js.map +1 -1
- package/dist/output/print-plan.d.ts +19 -19
- package/dist/output/print-plan.js +11 -10
- package/dist/output/print-plan.js.map +1 -1
- package/dist/output/print-region-statistics.d.ts +14 -15
- package/dist/output/print-region-statistics.js +11 -11
- package/dist/output/print-region-statistics.js.map +1 -1
- package/dist/output/sdr-rendering.d.ts +48 -10
- package/dist/output/sdr-rendering.js +114 -25
- package/dist/output/sdr-rendering.js.map +1 -1
- package/dist/output/subject-framing-crop.d.ts +6 -10
- package/dist/output/subject-framing-crop.js +23 -13
- package/dist/output/subject-framing-crop.js.map +1 -1
- package/dist/processing/demosaic.d.ts +90 -0
- package/dist/processing/demosaic.js +275 -0
- package/dist/processing/demosaic.js.map +1 -0
- package/dist/processing/denoise.d.ts +68 -0
- package/dist/processing/denoise.js +214 -0
- package/dist/processing/denoise.js.map +1 -0
- package/dist/processing/focus-stacking.d.ts +17 -0
- package/dist/processing/focus-stacking.js +80 -0
- package/dist/processing/focus-stacking.js.map +1 -0
- package/dist/processing/hdr.d.ts +54 -0
- package/dist/processing/hdr.js +172 -0
- package/dist/processing/hdr.js.map +1 -0
- package/dist/processing/image-ops.d.ts +66 -0
- package/dist/processing/image-ops.js +192 -0
- package/dist/processing/image-ops.js.map +1 -0
- package/dist/processing/panorama.d.ts +51 -0
- package/dist/processing/panorama.js +305 -0
- package/dist/processing/panorama.js.map +1 -0
- package/dist/processing/processing-task.d.ts +85 -0
- package/dist/processing/processing-task.js +164 -0
- package/dist/processing/processing-task.js.map +1 -0
- package/dist/processing/tone-mapping.d.ts +69 -0
- package/dist/processing/tone-mapping.js +310 -0
- package/dist/processing/tone-mapping.js.map +1 -0
- package/dist/schema/camera.d.ts +5 -4
- package/dist/schema/illumination-spectral.d.ts +13 -19
- package/dist/schema/illumination-spectral.js +23 -19
- package/dist/schema/illumination-spectral.js.map +1 -1
- package/dist/schema/illumination-temporal.d.ts +12 -15
- package/dist/schema/illumination-temporal.js +43 -28
- package/dist/schema/illumination-temporal.js.map +1 -1
- package/dist/schema/illumination.d.ts +5 -4
- package/dist/schema/illumination.js +55 -20
- package/dist/schema/illumination.js.map +1 -1
- package/dist/schema/scene-radiance-temporal.d.ts +9 -11
- package/dist/schema/scene-radiance-temporal.js +26 -23
- package/dist/schema/scene-radiance-temporal.js.map +1 -1
- package/dist/schema/scene-radiance.d.ts +17 -17
- package/dist/schema/scene-radiance.js +56 -34
- package/dist/schema/scene-radiance.js.map +1 -1
- package/dist/schema/scene.d.ts +14 -13
- package/dist/schema/validation.d.ts +0 -1
- package/dist/schema/validation.js +17 -15
- package/dist/schema/validation.js.map +1 -1
- package/dist/sensor/accumulated-charge.d.ts +45 -64
- package/dist/sensor/accumulated-charge.js +41 -47
- package/dist/sensor/accumulated-charge.js.map +1 -1
- package/dist/sensor/architecture.d.ts +22 -25
- package/dist/sensor/architecture.js +17 -16
- package/dist/sensor/architecture.js.map +1 -1
- package/dist/sensor/camera-saturation-capacity.d.ts +21 -28
- package/dist/sensor/camera-saturation-capacity.js +36 -34
- package/dist/sensor/camera-saturation-capacity.js.map +1 -1
- package/dist/sensor/capture-color-sampling-binding.d.ts +46 -51
- package/dist/sensor/capture-color-sampling-binding.js +39 -41
- package/dist/sensor/capture-color-sampling-binding.js.map +1 -1
- package/dist/sensor/capture-mode-timing.d.ts +8 -9
- package/dist/sensor/capture-mode-timing.js +24 -21
- package/dist/sensor/capture-mode-timing.js.map +1 -1
- package/dist/sensor/capture-mode.d.ts +28 -30
- package/dist/sensor/capture-mode.js +33 -31
- package/dist/sensor/capture-mode.js.map +1 -1
- package/dist/sensor/color-sampling.d.ts +30 -33
- package/dist/sensor/color-sampling.js +32 -37
- package/dist/sensor/color-sampling.js.map +1 -1
- package/dist/sensor/constant-rate-temporal-integration.d.ts +19 -23
- package/dist/sensor/constant-rate-temporal-integration.js +28 -26
- package/dist/sensor/constant-rate-temporal-integration.js.map +1 -1
- package/dist/sensor/dark-current.d.ts +53 -49
- package/dist/sensor/dark-current.js +87 -46
- package/dist/sensor/dark-current.js.map +1 -1
- package/dist/sensor/environment-photo-signal.d.ts +71 -30
- package/dist/sensor/environment-photo-signal.js +127 -46
- package/dist/sensor/environment-photo-signal.js.map +1 -1
- package/dist/sensor/eqe-electron-rate.d.ts +14 -13
- package/dist/sensor/eqe-electron-rate.js +34 -14
- package/dist/sensor/eqe-electron-rate.js.map +1 -1
- package/dist/sensor/eqe-local-exposure.d.ts +24 -24
- package/dist/sensor/eqe-local-exposure.js +15 -11
- package/dist/sensor/eqe-local-exposure.js.map +1 -1
- package/dist/sensor/eqe-temporal-exposure.d.ts +11 -11
- package/dist/sensor/eqe-temporal-exposure.js +15 -10
- package/dist/sensor/eqe-temporal-exposure.js.map +1 -1
- package/dist/sensor/exposure-window.d.ts +48 -34
- package/dist/sensor/exposure-window.js +77 -36
- package/dist/sensor/exposure-window.js.map +1 -1
- package/dist/sensor/fixed-pattern-noise.d.ts +108 -0
- package/dist/sensor/fixed-pattern-noise.js +166 -0
- package/dist/sensor/fixed-pattern-noise.js.map +1 -0
- package/dist/sensor/iso-gain.d.ts +44 -0
- package/dist/sensor/iso-gain.js +119 -0
- package/dist/sensor/iso-gain.js.map +1 -0
- package/dist/sensor/iso-signal-chain.d.ts +25 -48
- package/dist/sensor/iso-signal-chain.js +52 -66
- package/dist/sensor/iso-signal-chain.js.map +1 -1
- package/dist/sensor/local-exposure-binding.d.ts +21 -21
- package/dist/sensor/local-exposure-binding.js +22 -18
- package/dist/sensor/local-exposure-binding.js.map +1 -1
- package/dist/sensor/optical-stack.d.ts +36 -40
- package/dist/sensor/optical-stack.js +34 -37
- package/dist/sensor/optical-stack.js.map +1 -1
- package/dist/sensor/photon-energy.d.ts +22 -28
- package/dist/sensor/photon-energy.js +42 -34
- package/dist/sensor/photon-energy.js.map +1 -1
- package/dist/sensor/physical-charge-capacity.d.ts +20 -30
- package/dist/sensor/physical-charge-capacity.js +35 -36
- package/dist/sensor/physical-charge-capacity.js.map +1 -1
- package/dist/sensor/pixel-pitch.d.ts +2 -3
- package/dist/sensor/pixel-pitch.js +4 -2
- package/dist/sensor/pixel-pitch.js.map +1 -1
- package/dist/sensor/radiometry-readiness.d.ts +13 -15
- package/dist/sensor/radiometry-readiness.js +20 -17
- package/dist/sensor/radiometry-readiness.js.map +1 -1
- package/dist/sensor/raw-readout.d.ts +173 -83
- package/dist/sensor/raw-readout.js +425 -160
- package/dist/sensor/raw-readout.js.map +1 -1
- package/dist/sensor/raw-reconstruction.d.ts +112 -44
- package/dist/sensor/raw-reconstruction.js +200 -47
- package/dist/sensor/raw-reconstruction.js.map +1 -1
- package/dist/sensor/readout-exposure-linkage.d.ts +103 -34
- package/dist/sensor/readout-exposure-linkage.js +125 -27
- package/dist/sensor/readout-exposure-linkage.js.map +1 -1
- package/dist/sensor/readout-timing.d.ts +43 -44
- package/dist/sensor/readout-timing.js +38 -30
- package/dist/sensor/readout-timing.js.map +1 -1
- package/dist/sensor/response-application-compatibility.d.ts +21 -28
- package/dist/sensor/response-application-compatibility.js +35 -34
- package/dist/sensor/response-application-compatibility.js.map +1 -1
- package/dist/sensor/response-operating-range.d.ts +26 -35
- package/dist/sensor/response-operating-range.js +40 -39
- package/dist/sensor/response-operating-range.js.map +1 -1
- package/dist/sensor/responsivity-photocurrent.d.ts +21 -29
- package/dist/sensor/responsivity-photocurrent.js +57 -40
- package/dist/sensor/responsivity-photocurrent.js.map +1 -1
- package/dist/sensor/sampling-aperture.d.ts +21 -25
- package/dist/sensor/sampling-aperture.js +29 -28
- package/dist/sensor/sampling-aperture.js.map +1 -1
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts +14 -12
- package/dist/sensor/scene-eqe-temporal-exposure.js +13 -8
- package/dist/sensor/scene-eqe-temporal-exposure.js.map +1 -1
- package/dist/sensor/sensor-geometry.d.ts +28 -32
- package/dist/sensor/sensor-geometry.js +35 -20
- package/dist/sensor/sensor-geometry.js.map +1 -1
- package/dist/sensor/signal-noise.d.ts +14 -16
- package/dist/sensor/signal-noise.js +15 -13
- package/dist/sensor/signal-noise.js.map +1 -1
- package/dist/sensor/spatial-sample-reduction.d.ts +45 -60
- package/dist/sensor/spatial-sample-reduction.js +39 -48
- package/dist/sensor/spatial-sample-reduction.js.map +1 -1
- package/dist/sensor/spatial-sampling-quadrature.d.ts +46 -54
- package/dist/sensor/spatial-sampling-quadrature.js +31 -36
- package/dist/sensor/spatial-sampling-quadrature.js.map +1 -1
- package/dist/sensor/spatio-spectral-reduction.d.ts +32 -42
- package/dist/sensor/spatio-spectral-reduction.js +24 -29
- package/dist/sensor/spatio-spectral-reduction.js.map +1 -1
- package/dist/sensor/spectral-coverage.d.ts +6 -9
- package/dist/sensor/spectral-coverage.js +9 -6
- package/dist/sensor/spectral-coverage.js.map +1 -1
- package/dist/sensor/spectral-quadrature.d.ts +46 -60
- package/dist/sensor/spectral-quadrature.js +38 -48
- package/dist/sensor/spectral-quadrature.js.map +1 -1
- package/dist/sensor/spectral-response.d.ts +53 -41
- package/dist/sensor/spectral-response.js +80 -47
- package/dist/sensor/spectral-response.js.map +1 -1
- package/dist/sensor/stochastic-seed.d.ts +50 -0
- package/dist/sensor/stochastic-seed.js +123 -0
- package/dist/sensor/stochastic-seed.js.map +1 -0
- package/dist/sensor/temporal-eqe-sum.d.ts +2 -4
- package/dist/sensor/temporal-eqe-sum.js +5 -6
- package/dist/sensor/temporal-eqe-sum.js.map +1 -1
- package/dist/sensor/temporal-photo-signal.d.ts +5 -6
- package/dist/sensor/temporal-photo-signal.js +11 -10
- package/dist/sensor/temporal-photo-signal.js.map +1 -1
- package/dist/sensor/temporal-sample-binding.d.ts +1 -2
- package/dist/sensor/temporal-sample-binding.js +3 -3
- package/dist/sensor/temporal-sample-binding.js.map +1 -1
- package/dist/simulation/poc-simulation.d.ts +16 -16
- package/dist/simulation/poc-simulation.js +20 -15
- package/dist/simulation/poc-simulation.js.map +1 -1
- package/dist/stabilization/camera-shake.d.ts +42 -18
- package/dist/stabilization/camera-shake.js +43 -20
- package/dist/stabilization/camera-shake.js.map +1 -1
- package/dist/stabilization/system.d.ts +44 -41
- package/dist/stabilization/system.js +196 -108
- package/dist/stabilization/system.js.map +1 -1
- package/docs/AGENT_GUIDE.md +183 -0
- package/docs/API_REFERENCE.md +777 -2
- package/docs/QUICK_START.md +663 -0
- package/docs/USAGE.md +1719 -714
- package/docs/api/camera-equivalent-focal-length.md +6 -7
- package/docs/api/camera-field-of-view.md +16 -8
- package/docs/api/camera-lens-projection.md +246 -0
- package/docs/api/camera-projected-object-size.md +6 -5
- package/docs/api/capture-capture-export-metadata.md +10 -10
- package/docs/api/capture-dng-import.md +134 -0
- package/docs/api/capture-environment-raw-producer.md +17 -11
- package/docs/api/capture-export-jpeg.md +16 -0
- package/docs/api/capture-focus-control.md +25 -47
- package/docs/api/capture-linear-encoding.md +21 -12
- package/docs/api/capture-lossless-jpeg.md +49 -0
- package/docs/api/capture-native-environment-optical-stage.md +75 -0
- package/docs/api/capture-native-environment-raw.md +161 -4
- package/docs/api/capture-native-raw-development.md +69 -8
- package/docs/api/capture-native-raw-dng.md +84 -0
- package/docs/api/capture-native-raw.md +21 -10
- package/docs/api/capture-packed-sensor-raw.md +156 -0
- package/docs/api/capture-photographic-export.md +69 -31
- package/docs/api/capture-raw-frame-reconstruction.md +8 -8
- package/docs/api/capture-raw-white-level.md +37 -0
- package/docs/api/capture-release-sequence.md +6 -7
- package/docs/api/capture-sensor-raw-frame.md +6 -6
- package/docs/api/capture-sensor-raw-producer.md +17 -11
- package/docs/api/capture-simulated-capture.md +15 -15
- package/docs/api/color-camera-color-matrix.md +103 -0
- package/docs/api/color-capture-color.md +22 -11
- package/docs/api/color-chromatic-adaptation.md +82 -0
- package/docs/api/color-color-difference.md +134 -0
- package/docs/api/color-color-matching-functions.md +259 -0
- package/docs/api/color-colorimetry-math.md +54 -0
- package/docs/api/color-gamut-mapping.md +72 -0
- package/docs/api/color-illuminants.md +280 -0
- package/docs/api/color-rgb-color-spaces.md +151 -0
- package/docs/api/color-sensor-color-development.md +27 -0
- package/docs/api/color-srgb-icc.md +2 -4
- package/docs/api/color-white-balance.md +95 -19
- package/docs/api/composition-image-formation-plan.md +124 -95
- package/docs/api/composition-plan-consumer.md +7 -7
- package/docs/api/core-calculation-result.md +18 -14
- package/docs/api/core-configuration-error.md +1 -1
- package/docs/api/core-image-formation.md +7 -7
- package/docs/api/core-scientific-assurance.md +12 -10
- package/docs/api/core-spectral-composition.md +14 -14
- package/docs/api/core-spectral.md +6 -6
- package/docs/api/core-validation.md +3 -3
- package/docs/api/core-version.md +7 -6
- package/docs/api/equipment-exposure-capabilities.md +11 -10
- package/docs/api/equipment-generic-tier-assets.md +7 -2
- package/docs/api/equipment-generic-tier-presets.md +6 -6
- package/docs/api/equipment-iso-capabilities.md +18 -18
- package/docs/api/equipment-metering-capabilities.md +6 -6
- package/docs/api/equipment-release-capabilities.md +4 -4
- package/docs/api/exports.json +2253 -3
- package/docs/api/exposure-exposure-duration-control.md +9 -9
- package/docs/api/exposure-exposure-mode-resolver.md +35 -31
- package/docs/api/exposure-exposure.md +10 -10
- package/docs/api/exposure-flash-ttl.md +182 -0
- package/docs/api/exposure-flash.md +183 -28
- package/docs/api/exposure-metering-scene-radiance.md +11 -10
- package/docs/api/exposure-metering-target.md +9 -8
- package/docs/api/exposure-metering-temporal.md +8 -8
- package/docs/api/exposure-metering.md +69 -9
- package/docs/api/exposure-program-line.md +6 -5
- package/docs/api/facade-chart-radiance-batch.md +96 -0
- package/docs/api/facade-chart-scenes.md +240 -0
- package/docs/api/facade-scene-radiance.md +122 -0
- package/docs/api/facade-simulate-capture.md +397 -0
- package/docs/api/gpu-image-kernel-accelerator.md +157 -0
- package/docs/api/gpu-image-kernel-execution.md +152 -0
- package/docs/api/motion-camera-rotation.md +43 -26
- package/docs/api/motion-capture-rotation-inverse-mapping.md +24 -23
- package/docs/api/motion-capture-rotation-temporal-quadrature.md +22 -22
- package/docs/api/motion-capture-rotation-trajectory.md +15 -15
- package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +15 -14
- package/docs/api/motion-extended-object-projection.md +10 -8
- package/docs/api/motion-projected-motion.md +8 -8
- package/docs/api/motion-temporal-exposure-sum.md +98 -0
- package/docs/api/motion-video-sequence.md +159 -0
- package/docs/api/optics-aperture.md +8 -8
- package/docs/api/optics-atmospheric-haze.md +104 -0
- package/docs/api/optics-brown-conrady-distortion.md +123 -0
- package/docs/api/optics-circle-of-confusion.md +5 -4
- package/docs/api/optics-complex-pupil-psf.md +57 -16
- package/docs/api/optics-depth-of-field.md +12 -6
- package/docs/api/optics-diffraction-psf-profile.md +96 -0
- package/docs/api/optics-diffraction.md +8 -7
- package/docs/api/optics-focus-breathing.md +104 -16
- package/docs/api/optics-focus-state.md +9 -10
- package/docs/api/optics-front-of-lens-filter.md +72 -14
- package/docs/api/optics-illumination-vignetting.md +10 -10
- package/docs/api/optics-irradiance-convolution.md +95 -0
- package/docs/api/optics-lateral-chromatic-aberration.md +22 -21
- package/docs/api/optics-lens-psf-kernels.md +72 -0
- package/docs/api/optics-lens-psf-profile.md +48 -26
- package/docs/api/optics-longitudinal-chromatic-aberration.md +128 -0
- package/docs/api/optics-polygon-diffraction.md +78 -13
- package/docs/api/optics-profile-contract.md +4 -4
- package/docs/api/optics-psf-foundation.md +12 -12
- package/docs/api/optics-pupil-vignetting.md +132 -0
- package/docs/api/optics-radial-distortion.md +12 -12
- package/docs/api/optics-scene-to-sensor-irradiance.md +25 -14
- package/docs/api/optics-scene-to-sensor-quadrature.md +15 -12
- package/docs/api/optics-sensor-aperture-rays.md +3 -2
- package/docs/api/optics-sensor-environment-query.md +52 -9
- package/docs/api/optics-sensor-psf-quadrature.md +13 -10
- package/docs/api/optics-stray-light.md +12 -11
- package/docs/api/optics-thin-lens.md +4 -3
- package/docs/api/optics-zernike-wavefront.md +229 -0
- package/docs/api/output-capture-corrected-sdr.md +10 -7
- package/docs/api/output-capture-geometry.md +35 -36
- package/docs/api/output-capture-sdr.md +4 -4
- package/docs/api/output-crop.md +7 -4
- package/docs/api/output-geometric-transforms.md +65 -19
- package/docs/api/output-lens-corrections.md +17 -15
- package/docs/api/output-native-capture-sdr.md +26 -13
- package/docs/api/output-png-encoder.md +105 -0
- package/docs/api/output-print-contrast-reference.md +8 -8
- package/docs/api/output-print-detail.md +14 -14
- package/docs/api/output-print-jpeg.md +22 -5
- package/docs/api/output-print-plan.md +18 -18
- package/docs/api/output-print-region-statistics.md +14 -14
- package/docs/api/output-sdr-rendering.md +52 -10
- package/docs/api/output-subject-framing-crop.md +5 -6
- package/docs/api/processing-demosaic.md +120 -0
- package/docs/api/processing-denoise.md +148 -0
- package/docs/api/processing-focus-stacking.md +41 -0
- package/docs/api/processing-hdr.md +113 -0
- package/docs/api/processing-panorama.md +82 -0
- package/docs/api/processing-processing-task.md +107 -0
- package/docs/api/processing-tone-mapping.md +142 -0
- package/docs/api/schema-camera.md +6 -4
- package/docs/api/schema-illumination-spectral.md +10 -11
- package/docs/api/schema-illumination-temporal.md +13 -15
- package/docs/api/schema-illumination.md +4 -4
- package/docs/api/schema-scene-radiance-temporal.md +10 -11
- package/docs/api/schema-scene-radiance.md +18 -17
- package/docs/api/schema-scene.md +9 -9
- package/docs/api/schema-validation.md +1 -1
- package/docs/api/sensor-accumulated-charge.md +12 -20
- package/docs/api/sensor-architecture.md +15 -16
- package/docs/api/sensor-camera-saturation-capacity.md +9 -11
- package/docs/api/sensor-capture-color-sampling-binding.md +47 -51
- package/docs/api/sensor-capture-mode-timing.md +9 -9
- package/docs/api/sensor-capture-mode.md +29 -30
- package/docs/api/sensor-color-sampling.md +31 -33
- package/docs/api/sensor-constant-rate-temporal-integration.md +10 -11
- package/docs/api/sensor-dark-current.md +30 -14
- package/docs/api/sensor-environment-photo-signal.md +13 -6
- package/docs/api/sensor-eqe-electron-rate.md +9 -8
- package/docs/api/sensor-eqe-local-exposure.md +18 -17
- package/docs/api/sensor-eqe-temporal-exposure.md +12 -11
- package/docs/api/sensor-exposure-window.md +24 -24
- package/docs/api/sensor-fixed-pattern-noise.md +104 -0
- package/docs/api/sensor-iso-gain.md +63 -0
- package/docs/api/sensor-iso-signal-chain.md +13 -22
- package/docs/api/sensor-local-exposure-binding.md +12 -13
- package/docs/api/sensor-optical-stack.md +37 -40
- package/docs/api/sensor-photon-energy.md +10 -11
- package/docs/api/sensor-physical-charge-capacity.md +8 -13
- package/docs/api/sensor-pixel-pitch.md +1 -1
- package/docs/api/sensor-radiometry-readiness.md +9 -9
- package/docs/api/sensor-raw-readout.md +118 -52
- package/docs/api/sensor-raw-reconstruction.md +97 -20
- package/docs/api/sensor-readout-exposure-linkage.md +120 -24
- package/docs/api/sensor-readout-timing.md +33 -35
- package/docs/api/sensor-response-application-compatibility.md +9 -11
- package/docs/api/sensor-response-operating-range.md +14 -18
- package/docs/api/sensor-responsivity-photocurrent.md +9 -12
- package/docs/api/sensor-sampling-aperture.md +22 -25
- package/docs/api/sensor-scene-eqe-temporal-exposure.md +9 -8
- package/docs/api/sensor-sensor-geometry.md +23 -24
- package/docs/api/sensor-signal-noise.md +10 -10
- package/docs/api/sensor-spatial-sample-reduction.md +27 -30
- package/docs/api/sensor-spatial-sampling-quadrature.md +37 -39
- package/docs/api/sensor-spatio-spectral-reduction.md +27 -29
- package/docs/api/sensor-spectral-coverage.md +5 -5
- package/docs/api/sensor-spectral-quadrature.md +33 -35
- package/docs/api/sensor-spectral-response.md +28 -16
- package/docs/api/sensor-temporal-photo-signal.md +6 -6
- package/docs/api/simulation-poc-simulation.md +17 -16
- package/docs/api/stabilization-camera-shake.md +29 -10
- package/docs/api/stabilization-system.md +25 -21
- package/docs/examples/production-request.json +3821 -2157
- package/docs/examples/simulate-capture.mjs +14 -0
- package/llms.txt +35 -0
- package/package.json +32 -11
- package/AGENTS.md +0 -674
- package/CONTRIBUTING.md +0 -76
- package/DCO +0 -33
- package/dist/camera/equivalent-focal-length.d.ts.map +0 -1
- package/dist/camera/field-of-view.d.ts.map +0 -1
- package/dist/camera/projected-object-size.d.ts.map +0 -1
- package/dist/capture/capture-export-metadata.d.ts.map +0 -1
- package/dist/capture/environment-raw-producer.d.ts.map +0 -1
- package/dist/capture/export-jpeg.d.ts.map +0 -1
- package/dist/capture/export-tiff.d.ts.map +0 -1
- package/dist/capture/focus-control.d.ts.map +0 -1
- package/dist/capture/linear-encoding.d.ts.map +0 -1
- package/dist/capture/native-environment-raw.d.ts.map +0 -1
- package/dist/capture/native-raw-development.d.ts.map +0 -1
- package/dist/capture/native-raw.d.ts.map +0 -1
- package/dist/capture/photographic-export.d.ts.map +0 -1
- package/dist/capture/raw-frame-limits.d.ts.map +0 -1
- package/dist/capture/raw-frame-reconstruction.d.ts.map +0 -1
- package/dist/capture/release-sequence.d.ts.map +0 -1
- package/dist/capture/sensor-raw-frame.d.ts.map +0 -1
- package/dist/capture/sensor-raw-producer.d.ts.map +0 -1
- package/dist/capture/simulated-capture.d.ts.map +0 -1
- package/dist/color/capture-color.d.ts.map +0 -1
- package/dist/color/sensor-color-development.d.ts.map +0 -1
- package/dist/color/srgb-icc.d.ts.map +0 -1
- package/dist/color/srgb-transfer.d.ts.map +0 -1
- package/dist/color/white-balance.d.ts.map +0 -1
- package/dist/composition/image-formation-plan.d.ts.map +0 -1
- package/dist/composition/plan-consumer.d.ts.map +0 -1
- package/dist/core/calculation-result.d.ts.map +0 -1
- package/dist/core/canonical-json.d.ts.map +0 -1
- package/dist/core/configuration-error.d.ts.map +0 -1
- package/dist/core/evidence-provenance.d.ts.map +0 -1
- package/dist/core/image-formation.d.ts.map +0 -1
- package/dist/core/owned-data.d.ts.map +0 -1
- package/dist/core/record-validation.d.ts.map +0 -1
- package/dist/core/scientific-assurance.d.ts.map +0 -1
- package/dist/core/spectral-composition.d.ts.map +0 -1
- package/dist/core/spectral.d.ts.map +0 -1
- package/dist/core/validation.d.ts.map +0 -1
- package/dist/core/version.d.ts.map +0 -1
- package/dist/equipment/exposure-capabilities.d.ts.map +0 -1
- package/dist/equipment/generic-tier-assets.d.ts.map +0 -1
- package/dist/equipment/generic-tier-presets.d.ts.map +0 -1
- package/dist/equipment/iso-capabilities.d.ts.map +0 -1
- package/dist/equipment/metering-capabilities.d.ts.map +0 -1
- package/dist/equipment/release-capabilities.d.ts.map +0 -1
- package/dist/exposure/exposure-duration-control.d.ts.map +0 -1
- package/dist/exposure/exposure-mode-resolver.d.ts.map +0 -1
- package/dist/exposure/exposure.d.ts.map +0 -1
- package/dist/exposure/flash.d.ts.map +0 -1
- package/dist/exposure/metering-scene-radiance.d.ts.map +0 -1
- package/dist/exposure/metering-target.d.ts.map +0 -1
- package/dist/exposure/metering-temporal.d.ts.map +0 -1
- package/dist/exposure/metering.d.ts.map +0 -1
- package/dist/exposure/program-line.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/motion/camera-rotation.d.ts.map +0 -1
- package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +0 -1
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +0 -1
- package/dist/motion/capture-rotation-trajectory.d.ts.map +0 -1
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts.map +0 -1
- package/dist/motion/extended-object-projection.d.ts.map +0 -1
- package/dist/motion/projected-motion.d.ts.map +0 -1
- package/dist/optics/aperture.d.ts.map +0 -1
- package/dist/optics/circle-of-confusion.d.ts.map +0 -1
- package/dist/optics/complex-pupil-psf.d.ts.map +0 -1
- package/dist/optics/depth-of-field.d.ts.map +0 -1
- package/dist/optics/diffraction.d.ts.map +0 -1
- package/dist/optics/focus-breathing.d.ts.map +0 -1
- package/dist/optics/focus-state.d.ts.map +0 -1
- package/dist/optics/front-of-lens-filter.d.ts.map +0 -1
- package/dist/optics/illumination-vignetting.d.ts.map +0 -1
- package/dist/optics/lateral-chromatic-aberration.d.ts.map +0 -1
- package/dist/optics/lens-psf-profile.d.ts.map +0 -1
- package/dist/optics/polygon-diffraction.d.ts.map +0 -1
- package/dist/optics/profile-contract.d.ts.map +0 -1
- package/dist/optics/psf-foundation.d.ts.map +0 -1
- package/dist/optics/radial-distortion.d.ts.map +0 -1
- package/dist/optics/scene-to-sensor-irradiance.d.ts.map +0 -1
- package/dist/optics/scene-to-sensor-quadrature.d.ts.map +0 -1
- package/dist/optics/sensor-aperture-rays.d.ts.map +0 -1
- package/dist/optics/sensor-environment-query.d.ts.map +0 -1
- package/dist/optics/sensor-psf-quadrature.d.ts.map +0 -1
- package/dist/optics/sensor-psf-support.d.ts.map +0 -1
- package/dist/optics/stray-light.d.ts.map +0 -1
- package/dist/optics/thin-lens.d.ts.map +0 -1
- package/dist/output/capture-corrected-sdr.d.ts.map +0 -1
- package/dist/output/capture-geometry.d.ts.map +0 -1
- package/dist/output/capture-sdr.d.ts.map +0 -1
- package/dist/output/crop.d.ts.map +0 -1
- package/dist/output/geometric-transforms.d.ts.map +0 -1
- package/dist/output/lens-corrections.d.ts.map +0 -1
- package/dist/output/native-capture-sdr.d.ts.map +0 -1
- package/dist/output/print-contrast-reference.d.ts.map +0 -1
- package/dist/output/print-detail.d.ts.map +0 -1
- package/dist/output/print-jpeg.d.ts.map +0 -1
- package/dist/output/print-plan.d.ts.map +0 -1
- package/dist/output/print-region-statistics.d.ts.map +0 -1
- package/dist/output/sdr-rendering.d.ts.map +0 -1
- package/dist/output/subject-framing-crop.d.ts.map +0 -1
- package/dist/schema/camera.d.ts.map +0 -1
- package/dist/schema/camera.js +0 -3
- package/dist/schema/camera.js.map +0 -1
- package/dist/schema/illumination-spectral.d.ts.map +0 -1
- package/dist/schema/illumination-temporal.d.ts.map +0 -1
- package/dist/schema/illumination.d.ts.map +0 -1
- package/dist/schema/scene-radiance-temporal.d.ts.map +0 -1
- package/dist/schema/scene-radiance.d.ts.map +0 -1
- package/dist/schema/scene.d.ts.map +0 -1
- package/dist/schema/scene.js +0 -3
- package/dist/schema/scene.js.map +0 -1
- package/dist/schema/validation.d.ts.map +0 -1
- package/dist/sensor/accumulated-charge.d.ts.map +0 -1
- package/dist/sensor/architecture.d.ts.map +0 -1
- package/dist/sensor/camera-saturation-capacity.d.ts.map +0 -1
- package/dist/sensor/capture-color-sampling-binding.d.ts.map +0 -1
- package/dist/sensor/capture-mode-timing.d.ts.map +0 -1
- package/dist/sensor/capture-mode.d.ts.map +0 -1
- package/dist/sensor/color-sampling.d.ts.map +0 -1
- package/dist/sensor/constant-rate-temporal-integration.d.ts.map +0 -1
- package/dist/sensor/dark-current.d.ts.map +0 -1
- package/dist/sensor/environment-photo-signal.d.ts.map +0 -1
- package/dist/sensor/eqe-electron-rate.d.ts.map +0 -1
- package/dist/sensor/eqe-local-exposure.d.ts.map +0 -1
- package/dist/sensor/eqe-temporal-exposure.d.ts.map +0 -1
- package/dist/sensor/exposure-window.d.ts.map +0 -1
- package/dist/sensor/iso-signal-chain.d.ts.map +0 -1
- package/dist/sensor/local-exposure-binding.d.ts.map +0 -1
- package/dist/sensor/optical-stack.d.ts.map +0 -1
- package/dist/sensor/photon-energy.d.ts.map +0 -1
- package/dist/sensor/physical-charge-capacity.d.ts.map +0 -1
- package/dist/sensor/pixel-pitch.d.ts.map +0 -1
- package/dist/sensor/radiometry-readiness.d.ts.map +0 -1
- package/dist/sensor/raw-readout.d.ts.map +0 -1
- package/dist/sensor/raw-reconstruction.d.ts.map +0 -1
- package/dist/sensor/readout-exposure-linkage.d.ts.map +0 -1
- package/dist/sensor/readout-timing.d.ts.map +0 -1
- package/dist/sensor/response-application-compatibility.d.ts.map +0 -1
- package/dist/sensor/response-operating-range.d.ts.map +0 -1
- package/dist/sensor/responsivity-photocurrent.d.ts.map +0 -1
- package/dist/sensor/sampling-aperture.d.ts.map +0 -1
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts.map +0 -1
- package/dist/sensor/sensor-geometry.d.ts.map +0 -1
- package/dist/sensor/signal-noise.d.ts.map +0 -1
- package/dist/sensor/spatial-sample-reduction.d.ts.map +0 -1
- package/dist/sensor/spatial-sampling-quadrature.d.ts.map +0 -1
- package/dist/sensor/spatio-spectral-reduction.d.ts.map +0 -1
- package/dist/sensor/spectral-coverage.d.ts.map +0 -1
- package/dist/sensor/spectral-quadrature.d.ts.map +0 -1
- package/dist/sensor/spectral-response.d.ts.map +0 -1
- package/dist/sensor/temporal-eqe-sum.d.ts.map +0 -1
- package/dist/sensor/temporal-photo-signal.d.ts.map +0 -1
- package/dist/sensor/temporal-sample-binding.d.ts.map +0 -1
- package/dist/simulation/poc-simulation.d.ts.map +0 -1
- package/dist/stabilization/camera-shake.d.ts.map +0 -1
- package/dist/stabilization/system.d.ts.map +0 -1
- package/docs/API_STYLE.md +0 -235
- package/docs/ARCHITECTURE.md +0 -356
- package/docs/AUTOMATION_COORDINATION.md +0 -190
- package/docs/CAPTURE_COLOR.md +0 -25
- package/docs/CAPTURE_CORRECTED_SDR.md +0 -25
- package/docs/CAPTURE_EXPORT_METADATA.md +0 -27
- package/docs/CAPTURE_SDR.md +0 -22
- package/docs/DENSE_PUPIL_QUALIFICATION.md +0 -121
- package/docs/DEVELOPERS.md +0 -68
- package/docs/DIGITAL_OPTICS_FOUNDATION.md +0 -69
- package/docs/ENVIRONMENT_RAW_CAPTURE.md +0 -208
- package/docs/EXPORT_ACCEPTANCE.md +0 -133
- package/docs/GENERIC_TIER_PRESETS.md +0 -269
- package/docs/GEOMETRIC_PREPARATION_REUSE.md +0 -141
- package/docs/IMAGE_FORMATION.md +0 -247
- package/docs/LINEAR_CAPTURE_ENCODING.md +0 -25
- package/docs/MOTION_AND_SIGNAL.md +0 -250
- package/docs/NATIVE_CAPTURE_SDR.md +0 -70
- package/docs/NATIVE_CAPTURE_SDR_REVIEW.md +0 -37
- package/docs/NATIVE_CAPTURE_SDR_VALIDATION.md +0 -34
- package/docs/NATIVE_RAW_AND_PRINT.md +0 -54
- package/docs/NUMERICAL_CORRECTNESS.md +0 -191
- package/docs/PERFORMANCE_BASELINE.md +0 -56
- package/docs/PHOTOGRAPHIC_EXPORT.md +0 -206
- package/docs/PHYSICS_FOUNDATION.md +0 -426
- package/docs/POC_API.md +0 -278
- package/docs/POC_PROJECTION_PLATFORM_REFERENCE.md +0 -12
- package/docs/POC_PROJECTION_REUSE.md +0 -124
- package/docs/PRINT_195_196_REVIEW.md +0 -93
- package/docs/PRINT_196_ENGINE_ACCEPTANCE.md +0 -45
- package/docs/PRINT_CONTRAST_REFERENCE.md +0 -43
- package/docs/PRINT_DETAIL_ASSESSMENT.md +0 -81
- package/docs/PRINT_DETAIL_JPEG_EVIDENCE.md +0 -36
- package/docs/PRINT_DETAIL_SDR_EVIDENCE.md +0 -29
- package/docs/PRINT_DETAIL_VALIDATION.md +0 -36
- package/docs/PRINT_PLANNING.md +0 -75
- package/docs/PRINT_REGION_STATISTICS.md +0 -38
- package/docs/PROCESSED_OUTPUT.md +0 -157
- package/docs/PRODUCTION_COMPOSITION.md +0 -373
- package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +0 -131
- package/docs/PROVENANCE.md +0 -115
- package/docs/PSF_FOUNDATION.md +0 -165
- package/docs/RAW_FRAME_ENVELOPE.md +0 -56
- package/docs/RAW_FRAME_RECONSTRUCTION.md +0 -30
- package/docs/RELEASE_1_0.md +0 -66
- package/docs/RELEASE_1_0_1.md +0 -61
- package/docs/RELEASE_1_1_0.md +0 -25
- package/docs/RELEASE_1_2_0.md +0 -51
- package/docs/RELEASE_1_3_0.md +0 -15
- package/docs/RELEASE_1_4_0.md +0 -23
- package/docs/RELEASE_1_5_0.md +0 -105
- package/docs/RELEASE_AUDIT.md +0 -39
- package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +0 -298
- package/docs/SCENE_SENSOR_QUADRATURE.md +0 -98
- package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +0 -86
- package/docs/SCIENTIFIC_ASSURANCE.md +0 -280
- package/docs/SCIENTIFIC_CONFORMANCE.md +0 -83
- package/docs/SDR_RENDERING.md +0 -33
- package/docs/SENSOR_APERTURE_RAYS.md +0 -23
- package/docs/SENSOR_ENVIRONMENT_QUERY.md +0 -86
- package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +0 -104
- package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +0 -74
- package/docs/SENSOR_PSF_QUADRATURE.md +0 -90
- package/docs/SENSOR_RAW_FRAME.md +0 -20
- package/docs/SENSOR_RAW_PRODUCER.md +0 -77
- package/docs/SEPARABLE_EMISSION_DRAFT.md +0 -103
- package/docs/SIGNAL_CONFORMANCE.md +0 -23
- package/docs/SIMULATED_CAPTURE.md +0 -65
- package/docs/STABILIZATION.md +0 -234
- package/docs/TEMPORAL_PHOTO_RAW.md +0 -83
- package/docs/TIER_ACCEPTANCE.md +0 -129
- package/docs/TIER_PRESET_ACCEPTANCE.md +0 -59
- package/docs/V1_COMPOSITION_MAP.md +0 -123
- package/docs/V1_HELPER_REUSE_REVIEW.md +0 -60
- package/docs/V1_PERFORMANCE_DISPOSITION.md +0 -88
- package/docs/benchmarks/2026-10-01-main-baseline.json +0 -694
- package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +0 -2190
- package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +0 -2423
- package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +0 -210
- package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +0 -187
- package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +0 -756
- package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +0 -711
- package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +0 -711
- package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +0 -885
- package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +0 -868
- package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +0 -868
- package/docs/licenses/castleCSF-MIT.txt +0 -21
- package/docs/validation/dense-pupil-2026-10-06/pilot.jsonl +0 -6
- package/docs/validation/documentation-fragments.json +0 -212
- package/docs/validation/native-capture-sdr-darwin-arm64-node26-review.jsonl +0 -4
- package/docs/validation/native-capture-sdr-darwin-arm64.jsonl +0 -3
- package/docs/validation/native-raw-print-2026-10-04/fractional-asymmetric-crop.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/gray-ramp.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/linear-area-checker.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/manifest.json +0 -218
- package/docs/validation/native-raw-print-2026-10-04/megapixel-native.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/native-color.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel-validation.json +0 -9
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json +0 -29
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.codes.u16le.gz +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.rgb.gz +0 -0
- package/docs/validation/native-raw-print-2026-10-04/srgb.icc +0 -0
- package/docs/validation/native-raw-print-2026-10-04/validation.json +0 -41
- package/docs/validation/print-196-candidate-capabilities.json +0 -28
- package/docs/validation/print-196-candidate-evidence.json +0 -356
- package/docs/validation/print-196-engine-acceptance.json +0 -81
- package/docs/validation/print-detail-capabilities.json +0 -103
- package/docs/validation/print-detail-jpeg-evidence.json +0 -116
- package/docs/validation/print-detail-sdr-evidence.json +0 -81
- package/docs/validation/release-audit-inventory.json +0 -1306
- package/docs/validation/tier-acceptance-report-v1.json +0 -2538
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iso-capabilities.js","sourceRoot":"","sources":["../../src/equipment/iso-capabilities.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EACL,iBAAiB,EAElB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAQpE,MAAM,CAAC,MAAM,qCAAqC,GAChD,OAAgB,CAAC;AA0InB,SAAS,aAAa,CACpB,KAAc,EACd,IAAY;IAEZ,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EACpB,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,IAAI,GAAG,qBAAqB,CAC7B,CAAC;IACJ,CAAC;IACD,OAAO,KAAsB,CAAC;AAChC,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAAc,EACd,IAAY;IAEZ,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EACzB,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,IAAI;YACF,8BAA8B,CACjC,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAAc,EACd,IAAY;IAEZ,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QACvB,KAAK,IAAI,CAAC,EACV,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,IAAI;YACF,wCAAwC,CAC3C,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CACjB,KAAc,EACd,IAAY;IAEZ,MAAM,MAAM,GACV,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7B,MAAM,OAAO,GACX,qBAAqB,CACnB,MAAM,CAAC,OAAO,EACd,IAAI,GAAG,UAAU,CAClB,CAAC;IACJ,MAAM,OAAO,GACX,qBAAqB,CACnB,MAAM,CAAC,OAAO,EACd,IAAI,GAAG,UAAU,CAClB,CAAC;IACJ,IAAI,OAAO,GAAG,OAAO,EAAE,CAAC;QACtB,MAAM,IAAI,yBAAyB,CACjC,IAAI;YACF,iDAAiD,CACpD,CAAC;IACJ,CAAC;IACD,OAAO;QACL,OAAO;QACP,OAAO;KACR,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAClB,KACuB,EACvB,KACuB;IAEvB,OAAO,CACL,KAAK,CAAC,OAAO;QACX,KAAK,CAAC,OAAO;QACf,KAAK,CAAC,OAAO;YACX,KAAK,CAAC,OAAO,CAChB,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAChB,KAAc,EACd,KACuB,EACvB,IAAY;IAEZ,MAAM,MAAM,GACV,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7B,IACE,MAAM,CAAC,IAAI;QACX,yBAAyB,EACzB,CAAC;QACD,OAAO;YACL,IAAI,EACF,yBAAyB;SAC5B,CAAC;IACJ,CAAC;IACD,IACE,MAAM,CAAC,IAAI;QACX,iBAAiB,EACjB,CAAC;QACD,IACE,CAAC,KAAK,CAAC,OAAO,CACZ,MAAM,CAAC,MAAM,CACd;YACD,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAC1B,CAAC;YACD,MAAM,IAAI,yBAAyB,CACjC,IAAI;gBACF,oCAAoC,CACvC,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,GACV,MAAM,CAAC,iBAAiB,CAAC;QAC3B,MAAM,MAAM,GACV,MAAM,CAAC,MAAM,CAAC,GAAG,CACf,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACf,MAAM,MAAM,GACV,qBAAqB,CACnB,KAAK,EACL,IAAI;gBACF,UAAU;gBACV,KAAK;gBACL,GAAG,CACN,CAAC;YACJ,IACE,MAAM,IAAI,QAAQ,EAClB,CAAC;gBACD,MAAM,IAAI,yBAAyB,CACjC,IAAI;oBACF,sCAAsC,CACzC,CAAC;YACJ,CAAC;YACD,IACE,MAAM;gBACJ,KAAK,CAAC,OAAO;gBACf,MAAM;oBACJ,KAAK,CAAC,OAAO,EACf,CAAC;gBACD,MAAM,IAAI,yBAAyB,CACjC,IAAI;oBACF,oDAAoD,CACvD,CAAC;YACJ,CAAC;YACD,QAAQ,GAAG,MAAM,CAAC;YAClB,OAAO,MAAM,CAAC;QAChB,CAAC,CACF,CAAC;QACJ,IACE,MAAM,CAAC,CAAC,CAAC;YACP,KAAK,CAAC,OAAO;YACf,MAAM,CACJ,MAAM,CAAC,MAAM,GAAG,CAAC,CAClB,KAAK,KAAK,CAAC,OAAO,EACnB,CAAC;YACD,MAAM,IAAI,yBAAyB,CACjC,IAAI;gBACF,0DAA0D,CAC7D,CAAC;QACJ,CAAC;QACD,OAAO;YACL,IAAI,EACF,iBAAiB;YACnB,MAAM;SACP,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,yBAAyB,CACjC,IAAI,GAAG,mBAAmB,CAC3B,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,KAAc,EACd,IAAY;IAEZ,IACE,KAAK,KAAK,WAAW;QACrB,KAAK,KAAK,aAAa;QACvB,KAAK,KAAK,SAAS,EACnB,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,IAAI,GAAG,cAAc,CACtB,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CACnB,KAAc,EACd,aACuB,EACvB,IAAY;IAEZ,MAAM,MAAM,GACV,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7B,MAAM,YAAY,GAChB,iBAAiB,CACf,MAAM,CAAC,YAAY,EACnB,IAAI,GAAG,eAAe,CACvB,CAAC;IACJ,MAAM,QAAQ,GACZ,iBAAiB,CACf,MAAM,CAAC,QAAQ,EACf,IAAI,GAAG,WAAW,CACnB,CAAC;IAEJ,IACE,YAAY;QACZ,WAAW,EACX,CAAC;QACD,MAAM,SAAS,GACb,UAAU,CACR,MAAM;aACH,0BAA0B,EAC7B,IAAI;YACF,6BAA6B,CAChC,CAAC;QACJ,IACE,CAAC,WAAW,CACV,SAAS,EACT,aAAa,CACd,EACD,CAAC;YACD,MAAM,IAAI,yBAAyB,CACjC,IAAI;gBACF,qEAAqE,CACxE,CAAC;QACJ,CAAC;QACD,OAAO;YACL,YAAY,EACV,WAAW;YACb,0BAA0B,EACxB,SAAS;YACX,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,IACE,MAAM;SACH,0BAA0B;QAC7B,SAAS,EACT,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,IAAI;YACF,2EAA2E,CAC9E,CAAC;IACJ,CAAC;IAED,OAAO;QACL,YAAY;QACZ,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAc,EACd,aACuB,EACvB,IAAY;IAEZ,MAAM,MAAM,GACV,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7B,MAAM,SAAS,GACb,MAAM,CAAC,SAAS,CAAC;IACnB,IACE,SAAS,KAAK,KAAK;QACnB,SAAS,KAAK,MAAM,EACpB,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,IAAI;YACF,iCAAiC,CACpC,CAAC;IACJ,CAAC;IACD,MAAM,uBAAuB,GAC3B,qBAAqB,CACnB,MAAM;SACH,uBAAuB,EAC1B,IAAI;QACF,0BAA0B,CAC7B,CAAC;IACJ,IACE,CACE,SAAS,KAAK,KAAK;QACnB,uBAAuB;YACrB,aAAa,CAAC,OAAO,CACxB;QACD,CACE,SAAS,KAAK,MAAM;YACpB,uBAAuB;gBACrB,aAAa,CAAC,OAAO,CACxB,EACD,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,IAAI;YACF,yFAAyF,CAC5F,CAAC;IACJ,CAAC;IACD,IACE,OAAO,MAAM,CAAC,eAAe;QAC7B,SAAS,EACT,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,IAAI;YACF,mCAAmC,CACtC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS,EACP,qBAAqB,CACnB,MAAM,CAAC,SAAS,EAChB,IAAI,GAAG,YAAY,CACpB;QACH,KAAK,EACH,qBAAqB,CACnB,MAAM,CAAC,KAAK,EACZ,IAAI,GAAG,QAAQ,CAChB;QACH,SAAS;QACT,uBAAuB;QACvB,eAAe,EACb,MAAM,CAAC,eAAe;QACxB,QAAQ,EACN,iBAAiB,CACf,MAAM,CAAC,QAAQ,EACf,IAAI,GAAG,WAAW,CACnB;KACJ,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,KAAc,EACd,aACuB,EACvB,WACqB,EACrB,IAAY;IAEZ,MAAM,MAAM,GACV,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7B,MAAM,SAAS,GACb,UAAU,CACR,MAAM;SACH,0BAA0B,EAC7B,IAAI;QACF,6BAA6B,CAChC,CAAC;IACJ,IACE,CAAC,WAAW,CACV,SAAS,EACT,aAAa,CACd,EACD,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,IAAI;YACF,wEAAwE,CAC3E,CAAC;IACJ,CAAC;IACD,IACE,CAAC,KAAK,CAAC,OAAO,CACZ,MAAM,CAAC,kBAAkB,CAC1B,EACD,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,IAAI;YACF,uCAAuC,CAC1C,CAAC;IACJ,CAAC;IACD,MAAM,kBAAkB,GACtB,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAC3B,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACf,MAAM,EAAE,GACN,qBAAqB,CACnB,KAAK,EACL,IAAI;YACF,sBAAsB;YACtB,KAAK;YACL,GAAG,CACN,CAAC;QACJ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,yBAAyB,CACjC,IAAI;gBACF,oDAAoD,CACvD,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CACF,CAAC;IACJ,IACE,IAAI,GAAG,CACL,kBAAkB,CACnB,CAAC,IAAI;QACN,kBAAkB,CAAC,MAAM,EACzB,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,IAAI;YACF,kDAAkD,CACrD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,aAAa,EACX,qBAAqB,CACnB,MAAM,CAAC,aAAa,EACpB,IAAI,GAAG,gBAAgB,CACxB;QACH,0BAA0B,EACxB,SAAS;QACX,kBAAkB;QAClB,OAAO,EACL,YAAY,CACV,MAAM,CAAC,OAAO,EACd,SAAS,EACT,IAAI,GAAG,UAAU,CAClB;QACH,QAAQ,EACN,iBAAiB,CACf,MAAM,CAAC,QAAQ,EACf,IAAI,GAAG,WAAW,CACnB;KACJ,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAc;IAEd,MAAM,MAAM,GACV,aAAa,CACX,KAAK,EACL,sBAAsB,CACvB,CAAC;IACJ,IACE,MAAM,CAAC,aAAa;QACpB,qCAAqC,EACrC,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,8CAA8C;YAC5C,qCAAqC;YACrC,IAAI,CACP,CAAC;IACJ,CAAC;IACD,IACE,MAAM,CAAC,iBAAiB;QACxB,sDAAsD,EACtD,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,oDAAoD,CACrD,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GACZ,aAAa,CACX,MAAM,CAAC,QAAQ,EACf,+BAA+B,CAChC,CAAC;IACJ,MAAM,aAAa,GACjB,UAAU,CACR,QAAQ;SACL,kBAAkB,EACrB,kDAAkD,CACnD,CAAC;IACJ,MAAM,WAAW,GACf,SAAS,CACP,QAAQ,CAAC,WAAW,EACpB,aAAa,EACb,2CAA2C,CAC5C,CAAC;IAEJ,IACE,CAAC,KAAK,CAAC,OAAO,CACZ,MAAM,CAAC,gBAAgB,CACxB,EACD,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IACD,MAAM,gBAAgB,GACpB,MAAM,CAAC,gBAAgB,CAAC,GAAG,CACzB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CACf,oBAAoB,CAClB,KAAK,EACL,aAAa,EACb,wCAAwC;QACtC,KAAK;QACL,GAAG,CACN,CACJ,CAAC;IACJ,MAAM,WAAW,GACf,gBAAgB,CAAC,GAAG,CAClB,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,SAAS,CAClB,CAAC;IACJ,IACE,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI;QACzB,WAAW,CAAC,MAAM,EAClB,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,oFAAoF,CACrF,CAAC;IACJ,CAAC;IACD,MAAM,aAAa,GACjB,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;IAEvB,IACE,CAAC,KAAK,CAAC,OAAO,CACZ,MAAM,CAAC,mBAAmB,CAC3B,EACD,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IACD,MAAM,mBAAmB,GACvB,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAC5B,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CACf,sBAAsB,CACpB,KAAK,EACL,aAAa,EACb,aAAa,EACb,2CAA2C;QACzC,KAAK;QACL,GAAG,CACN,CACJ,CAAC;IACJ,MAAM,OAAO,GACX,mBAAmB,CAAC,GAAG,CACrB,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,aAAa,CACtB,CAAC;IACJ,IACE,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI;QACrB,OAAO,CAAC,MAAM,EACd,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,2FAA2F,CAC5F,CAAC;IACJ,CAAC;IAED,OAAO;QACL,aAAa,EACX,qCAAqC;QACvC,SAAS,EACP,qBAAqB,CACnB,MAAM,CAAC,SAAS,EAChB,gCAAgC,CACjC;QACH,cAAc,EACZ,qBAAqB,CACnB,MAAM,CAAC,cAAc,EACrB,qCAAqC,CACtC;QACH,iBAAiB,EACf,sDAAsD;QACxD,QAAQ,EAAE;YACR,kBAAkB,EAChB,aAAa;YACf,WAAW;SACZ;QACD,gBAAgB;QAChB,OAAO,EACL,YAAY,CACV,MAAM,CAAC,OAAO,EACd,aAAa,EACb,8BAA8B,CAC/B;QACH,mBAAmB;QACnB,QAAQ,EACN,iBAAiB,CACf,MAAM,CAAC,QAAQ,EACf,+BAA+B,CAChC;KACJ,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,KAAa,EACb,KACuB,EACvB,IACwB;IAExB,IACE,KAAK,GAAG,KAAK,CAAC,OAAO;QACrB,KAAK,GAAG,KAAK,CAAC,OAAO,EACrB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CACL,IAAI,CAAC,IAAI;QACP,yBAAyB;QAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,OACsB,EACtB,aACoB;IASpB,IACE,aAAa;QACb,SAAS,EACT,CAAC;QACD,OAAO;YACL,KAAK,EACH,OAAO,CAAC,QAAQ;iBACb,kBAAkB;YACvB,kBAAkB,EAChB,IAAI,GAAG,CACL,OAAO;iBACJ,gBAAgB;iBAChB,GAAG,CACF,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,SAAS,CAClB,CACJ;YACH,OAAO,EACL,OAAO,CAAC,OAAO;SAClB,CAAC;IACJ,CAAC;IACD,IACE,aAAa,CAAC,IAAI,EAAE;SACjB,MAAM,KAAK,CAAC,EACf,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GACV,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAC9B,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,aAAa;QACnB,aAAa,CAChB,CAAC;IACJ,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO;YACL,KAAK,EACH,OAAO,CAAC,QAAQ;iBACb,kBAAkB;YACvB,kBAAkB,EAChB,IAAI,GAAG,CACL,OAAO;iBACJ,gBAAgB;iBAChB,GAAG,CACF,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,SAAS,CAClB,CACJ;YACH,OAAO,EACL,OAAO,CAAC,OAAO;SAClB,CAAC;IACJ,CAAC;IACD,OAAO;QACL,KAAK,EACH,MAAM;aACH,0BAA0B;QAC/B,kBAAkB,EAChB,IAAI,GAAG,CACL,MAAM;aACH,kBAAkB,CACtB;QACH,OAAO,EACL,MAAM,CAAC,OAAO;KACjB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAC2B;IAE3B,MAAM,OAAO,GACX,yBAAyB,CACvB,KAAK,CAAC,OAAO,CACd,CAAC;IACJ,MAAM,UAAU,GACd,iBAAiB,CACf,OAAO,EACP,KAAK,CAAC,aAAa,CACpB,CAAC;IAEJ,IACE,KAAK,CAAC,OAAO,CAAC,IAAI;QAClB,UAAU,EACV,CAAC;QACD,IACE,OAAO,KAAK,CAAC,OAAO;aACjB,aAAa;YACd,QAAQ;YACV,CAAC,MAAM,CAAC,QAAQ,CACd,KAAK,CAAC,OAAO;iBACV,aAAa,CACjB;YACD,KAAK,CAAC,OAAO;iBACV,aAAa,IAAI,CAAC,EACrB,CAAC;YACD,MAAM,IAAI,2BAA2B,CACnC,8DAA8D,CAC/D,CAAC;QACJ,CAAC;QACD,IACE,CAAC,wBAAwB,CACvB,KAAK,CAAC,OAAO;aACV,aAAa,EAChB,UAAU,CAAC,KAAK,EAChB,OAAO,CAAC,QAAQ;aACb,WAAW,CACf,EACD,CAAC;YACD,MAAM,IAAI,2BAA2B,CACnC,yFAAyF,CAC1F,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAChB,UAAU,CAAC,OAAO;aACf,YAAY;YACb,WAAW;YACb,KAAK,CAAC,OAAO;iBACV,aAAa;gBACd,UAAU,CAAC,OAAO;qBACf,0BAA0B;qBAC1B,OAAO;YACZ,KAAK,CAAC,OAAO;iBACV,aAAa;gBACd,UAAU,CAAC,OAAO;qBACf,0BAA0B;qBAC1B,OAAO,CAAC;QAEf,OAAO;YACL,SAAS,EACP,OAAO,CAAC,SAAS;YACnB,cAAc,EACZ,OAAO,CAAC,cAAc;YACxB,aAAa,EACX,KAAK,CAAC,aAAa;gBACnB,IAAI;YACN,OAAO,EAAE;gBACP,IAAI,EAAE,UAAU;gBAChB,aAAa,EACX,KAAK,CAAC,OAAO;qBACV,aAAa;aACnB;YACD,qBAAqB,EACnB,KAAK,CAAC,OAAO;iBACV,aAAa;YAClB,eAAe,EAAE,KAAK;YACtB,eAAe,EACb,YAAY;YACd,0BAA0B,EAAE;gBAC1B,GAAG,UAAU,CAAC,KAAK;aACpB;YACD,mBAAmB,EACjB,OAAO,CAAC,QAAQ;iBACb,WAAW,CAAC,IAAI;gBACjB,yBAAyB;gBACzB,CAAC,CAAC;oBACE,IAAI,EACF,yBAAyB;iBAC5B;gBACH,CAAC,CAAC;oBACE,IAAI,EACF,iBAAiB;oBACnB,MAAM,EAAE;wBACN,GAAG,OAAO,CAAC,QAAQ;6BAChB,WAAW;6BACX,MAAM;qBACV;iBACF;YACP,OAAO,EACL,UAAU,CAAC,OAAO;YACpB,iCAAiC,EAC/B,KAAK;YACP,iCAAiC,EAC/B,KAAK;YACP,oBAAoB,EAClB,KAAK;YACP,sBAAsB,EACpB,KAAK;YACP,iBAAiB,EACf,KAAK;YACP,kBAAkB,EAChB,KAAK;YACP,oCAAoC,EAClC,KAAK;SACR,CAAC;IACJ,CAAC;IAED,IACE,KAAK,CAAC,OAAO,CAAC,IAAI;QAClB,UAAU,EACV,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,2DAA2D,CAC5D,CAAC;IACJ,CAAC;IACD,MAAM,iBAAiB,GACrB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1B,IACE,OAAO,iBAAiB;QACtB,QAAQ;QACV,iBAAiB,CAAC,IAAI,EAAE;aACrB,MAAM,KAAK,CAAC,EACf,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,2DAA2D,CAC5D,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GACX,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAC3B,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,SAAS;QACf,iBAAiB,CACpB,CAAC;IACJ,IACE,OAAO,KAAK,SAAS;QACrB,CAAC,UAAU;aACR,kBAAkB;aAClB,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EACzB,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,sFAAsF,CACvF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS,EACP,OAAO,CAAC,SAAS;QACnB,cAAc,EACZ,OAAO,CAAC,cAAc;QACxB,aAAa,EACX,KAAK,CAAC,aAAa;YACnB,IAAI;QACN,OAAO,EAAE;YACP,IAAI,EAAE,UAAU;YAChB,SAAS,EACP,OAAO,CAAC,SAAS;YACnB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,SAAS,EACP,OAAO,CAAC,SAAS;YACnB,uBAAuB,EACrB,OAAO;iBACJ,uBAAuB;SAC7B;QACD,qBAAqB,EACnB,OAAO;aACJ,uBAAuB;QAC5B,eAAe,EAAE,IAAI;QACrB,eAAe,EACb,UAAU,CAAC,OAAO;aACf,YAAY;YACb,WAAW;YACb,OAAO,CAAC,eAAe;QACzB,0BAA0B,EAAE;YAC1B,GAAG,UAAU,CAAC,KAAK;SACpB;QACD,mBAAmB,EACjB,OAAO,CAAC,QAAQ;aACb,WAAW,CAAC,IAAI;YACjB,yBAAyB;YACzB,CAAC,CAAC;gBACE,IAAI,EACF,yBAAyB;aAC5B;YACH,CAAC,CAAC;gBACE,IAAI,EACF,iBAAiB;gBACnB,MAAM,EAAE;oBACN,GAAG,OAAO,CAAC,QAAQ;yBAChB,WAAW,CAAC,MAAM;iBACtB;aACF;QACP,OAAO,EACL,UAAU,CAAC,OAAO;QACpB,iCAAiC,EAC/B,KAAK;QACP,iCAAiC,EAC/B,KAAK;QACP,oBAAoB,EAClB,KAAK;QACP,sBAAsB,EACpB,KAAK;QACP,iBAAiB,EAAE,KAAK;QACxB,kBAAkB,EAAE,KAAK;QACzB,oCAAoC,EAClC,KAAK;KACR,CAAC;AACJ,CAAC;AAuBD,SAAS,gBAAgB,CACvB,QAC4B,EAC5B,QACwB;IAExB,IACE,QAAQ,CAAC,IAAI;QACb,QAAQ,CAAC,IAAI,EACb,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IACE,QAAQ,CAAC,IAAI;QACX,yBAAyB;QAC3B,QAAQ,CAAC,IAAI;YACX,yBAAyB,EAC3B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CACL,QAAQ,CAAC,MAAM,CAAC,MAAM;QACpB,QAAQ,CAAC,MAAM,CAAC,MAAM;QACxB,QAAQ,CAAC,MAAM,CAAC,KAAK,CACnB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CACf,KAAK;YACL,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CACzB,CACF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,IAC4B,EAC5B,KACuB;IAEvB,IACE,IAAI,CAAC,IAAI;QACT,yBAAyB,EACzB,CAAC;QACD,OAAO;YACL,IAAI,EACF,yBAAyB;SAC5B,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GACV,IAAI,CAAC,MAAM,CAAC,MAAM,CAChB,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,IAAI,KAAK,CAAC,OAAO;QACtB,KAAK,IAAI,KAAK,CAAC,OAAO,CACzB,CAAC;IACJ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,2BAA2B,CACnC,0FAA0F,CAC3F,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,uCAAuC,CACrD,KAC8C;IAE9C,MAAM,OAAO,GACX,yBAAyB,CACvB,KAAK,CAAC,oBAAoB,CAC3B,CAAC;IACJ,MAAM,MAAM,GACV,KAAK,CAAC,qBAAqB,CAAC;IAE9B,IACE,MAAM,CAAC,GAAG,CAAC,OAAO;QAChB,OAAO,CAAC,QAAQ;aACb,kBAAkB;aAClB,OAAO;QACZ,MAAM,CAAC,GAAG,CAAC,OAAO;YAChB,OAAO,CAAC,QAAQ;iBACb,kBAAkB;iBAClB,OAAO;QACZ,CAAC,gBAAgB,CACf,MAAM,CAAC,GAAG,CAAC,WAAW,EACtB,OAAO,CAAC,QAAQ;aACb,WAAW,CACf,EACD,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,gHAAgH,CACjH,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GACd,iBAAiB,CACf,OAAO,EACP,KAAK,CAAC,aAAa,CACpB,CAAC;IACJ,MAAM,WAAW,GACf,eAAe,CACb,MAAM,CAAC,GAAG,CAAC,WAAW,EACtB,UAAU,CAAC,KAAK,CACjB,CAAC;IAEJ,MAAM,GAAG,GACP,UAAU,CAAC,OAAO;SACf,YAAY;QACb,WAAW;QACX,CAAC,CAAC;YACE,OAAO,EACL,UAAU,CAAC,KAAK,CAAC,OAAO;YAC1B,OAAO,EACL,UAAU,CAAC,KAAK,CAAC,OAAO;YAC1B,WAAW;YACX,mBAAmB,EACjB,WAAoB;YACtB,cAAc,EACZ,UAAU,CAAC,OAAO;iBACf,0BAA0B;iBAC1B,OAAO;YACZ,cAAc,EACZ,UAAU,CAAC,OAAO;iBACf,0BAA0B;iBAC1B,OAAO;SACb;QACH,CAAC,CAAC;YACE,OAAO,EACL,UAAU,CAAC,KAAK,CAAC,OAAO;YAC1B,OAAO,EACL,UAAU,CAAC,KAAK,CAAC,OAAO;YAC1B,WAAW;YACX,mBAAmB,EACjB,UAAU,CAAC,OAAO;iBACf,YAAY;SAClB,CAAC;IAER,OAAO;QACL,sBAAsB,EACpB,OAAO,CAAC,SAAS;QACnB,2BAA2B,EACzB,OAAO,CAAC,cAAc;QACxB,aAAa,EACX,KAAK,CAAC,aAAa;YACnB,IAAI;QACN,YAAY,EAAE;YACZ,GAAG,MAAM;YACT,GAAG;SACJ;QACD,+CAA+C,EAC7C,IAAI;QACN,oBAAoB,EAClB,KAAK;QACP,iBAAiB,EACf,KAAK;KACR,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"iso-capabilities.js","sourceRoot":"","sources":["../../src/equipment/iso-capabilities.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * ISO capabilities: which standard, expanded and Auto ISO settings a body offers, and in which\n * capture modes.\n *\n * The parser validates untrusted input and returns the normalized typed contract. Unknown enum\n * values, missing required fields and incompatible scientific data are rejected.\n *\n * ISO is an exposure-index (EI) control setting. It does not create photons and says nothing about\n * read noise. Standard and expanded settings, limits per capture mode, and whether Auto ISO is\n * available are all stated explicitly. If availability is unknown, automatic control is not allowed.\n * @see docs/GENERIC_TIER_PRESETS.md for the equations, units, coordinate conventions, known blockers\n * and support limits.\n */\n\nimport { InvalidConfigurationError } from \"../core/configuration-error.js\";\nimport {\n parseEvidenceList,\n type EvidenceProvenance\n} from \"../core/evidence-provenance.js\";\nimport { InvalidScientificInputError } from \"../core/validation.js\";\nimport type {\n ResolvedGenericEquipmentExposureCapabilities,\n ResolvedNumericSettingGrid\n} from \"./exposure-capabilities.js\";\nimport { requireInputKeys, rejectUnknownFields, rejectUnknownVariantFields } from \"../core/record-validation.js\";\n\ntype UnknownRecord = Record<string, unknown>;\n\nexport const ISO_CAPABILITY_PROFILE_SCHEMA_VERSION =\n \"0.1.0\" as const;\n\nexport type IsoCapabilityAvailability =\n | \"supported\"\n | \"unsupported\"\n | \"unknown\";\n\nexport interface IsoExposureIndexRange {\n minimum: number;\n maximum: number;\n}\n\nexport type IsoStandardSettingGrid =\n | {\n kind: \"continuous-within-range\";\n }\n | {\n kind: \"discrete-values\";\n values: readonly number[];\n };\n\nexport interface IsoExpandedSetting {\n settingId: string;\n label: string;\n direction: \"low\" | \"high\";\n exposureIndexEquivalent: number;\n autoIsoEligible: boolean;\n evidence: readonly EvidenceProvenance[];\n}\n\nexport type IsoAutoIsoCapability =\n | {\n availability: \"supported\";\n standardExposureIndexRange:\n IsoExposureIndexRange;\n evidence: readonly EvidenceProvenance[];\n }\n | {\n availability:\n | \"unsupported\"\n | \"unknown\";\n evidence: readonly EvidenceProvenance[];\n };\n\nexport interface IsoCaptureModePolicy {\n captureModeId: string;\n standardExposureIndexRange:\n IsoExposureIndexRange;\n expandedSettingIds:\n readonly string[];\n autoIso:\n IsoAutoIsoCapability;\n evidence: readonly EvidenceProvenance[];\n}\n\nexport interface IsoCapabilityProfile {\n schemaVersion:\n typeof ISO_CAPABILITY_PROFILE_SCHEMA_VERSION;\n profileId: string;\n profileVersion: string;\n capabilityMeaning:\n \"reported-exposure-index-capability-not-physical-gain\";\n standard: {\n exposureIndexRange:\n IsoExposureIndexRange;\n settingGrid:\n IsoStandardSettingGrid;\n };\n expandedSettings:\n readonly IsoExpandedSetting[];\n autoIso:\n IsoAutoIsoCapability;\n captureModePolicies:\n readonly IsoCaptureModePolicy[];\n evidence:\n readonly EvidenceProvenance[];\n}\n\nexport type RequestedIsoSetting =\n | {\n kind: \"standard\";\n exposureIndex: number;\n }\n | {\n kind: \"expanded\";\n settingId: string;\n };\n\nexport interface ResolveIsoCapabilityInput {\n profile:\n IsoCapabilityProfile;\n setting:\n RequestedIsoSetting;\n captureModeId?: string;\n}\n\nexport interface ResolvedIsoCapability {\n profileId: string;\n profileVersion: string;\n captureModeId: string | null;\n setting:\n | {\n kind: \"standard\";\n exposureIndex: number;\n }\n | {\n kind: \"expanded\";\n settingId: string;\n label: string;\n direction:\n \"low\" | \"high\";\n exposureIndexEquivalent:\n number;\n };\n reportedExposureIndex: number;\n expandedSetting: boolean;\n autoIsoEligible:\n boolean;\n standardExposureIndexRange:\n IsoExposureIndexRange;\n standardSettingGrid:\n IsoStandardSettingGrid;\n autoIso:\n IsoAutoIsoCapability;\n capturedPhotonExpectationModified:\n false;\n photonShotNoiseStatisticsModified:\n false;\n physicalGainInferred:\n false;\n conversionGainInferred:\n false;\n readNoiseInferred: false;\n saturationInferred: false;\n exactCommercialCameraBehaviorClaimed:\n false;\n}\n\nfunction requireRecord(\n value: unknown,\n path: string,\n allowedKeys: readonly string[] | null\n): UnknownRecord {\n if (\n typeof value !== \"object\" ||\n value === null ||\n Array.isArray(value)\n ) {\n throw new InvalidConfigurationError(\n path + \" must be an object.\"\n );\n }\n if (allowedKeys !== null) rejectUnknownFields(value, allowedKeys, path);\n return value as UnknownRecord;\n}\n\nfunction requireNonEmptyString(\n value: unknown,\n path: string\n): string {\n if (\n typeof value !== \"string\" ||\n value.trim().length === 0\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must be a non-empty string.\"\n );\n }\n return value.trim();\n}\n\nfunction requirePositiveFinite(\n value: unknown,\n path: string\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value) ||\n value <= 0\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must be finite and greater than zero.\"\n );\n }\n return value;\n}\n\nfunction parseRange(\n value: unknown,\n path: string\n): IsoExposureIndexRange {\n const record =\n requireRecord(value, path, [\"minimum\", \"maximum\"]);\n const minimum =\n requirePositiveFinite(\n record.minimum,\n path + \".minimum\"\n );\n const maximum =\n requirePositiveFinite(\n record.maximum,\n path + \".maximum\"\n );\n if (minimum > maximum) {\n throw new InvalidConfigurationError(\n path +\n \".minimum must be less than or equal to maximum.\"\n );\n }\n return {\n minimum,\n maximum\n };\n}\n\nfunction rangeWithin(\n inner:\n IsoExposureIndexRange,\n outer:\n IsoExposureIndexRange\n): boolean {\n return (\n inner.minimum >=\n outer.minimum &&\n inner.maximum <=\n outer.maximum\n );\n}\n\nfunction parseGrid(\n value: unknown,\n range:\n IsoExposureIndexRange,\n path: string\n): IsoStandardSettingGrid {\n const record =\n requireRecord(value, path, null);\n rejectUnknownVariantFields(record, \"kind\", { \"continuous-within-range\": [\"kind\"], \"discrete-values\": [\"kind\", \"values\"] }, path);\n if (\n record.kind ===\n \"continuous-within-range\"\n ) {\n return {\n kind:\n \"continuous-within-range\"\n };\n }\n if (\n record.kind ===\n \"discrete-values\"\n ) {\n if (\n !Array.isArray(\n record.values\n ) ||\n record.values.length === 0\n ) {\n throw new InvalidConfigurationError(\n path +\n \".values must be a non-empty array.\"\n );\n }\n let previous =\n Number.NEGATIVE_INFINITY;\n const values =\n record.values.map(\n (entry, index) => {\n const parsed =\n requirePositiveFinite(\n entry,\n path +\n \".values[\" +\n index +\n \"]\"\n );\n if (\n parsed <= previous\n ) {\n throw new InvalidConfigurationError(\n path +\n \".values must be strictly increasing.\"\n );\n }\n if (\n parsed <\n range.minimum ||\n parsed >\n range.maximum\n ) {\n throw new InvalidConfigurationError(\n path +\n \".values must remain inside the standard ISO range.\"\n );\n }\n previous = parsed;\n return parsed;\n }\n );\n if (\n values[0] !==\n range.minimum ||\n values[\n values.length - 1\n ] !== range.maximum\n ) {\n throw new InvalidConfigurationError(\n path +\n \".values must include the exact standard range endpoints.\"\n );\n }\n return {\n kind:\n \"discrete-values\",\n values\n };\n }\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n}\n\nfunction parseAvailability(\n value: unknown,\n path: string\n): IsoCapabilityAvailability {\n if (\n value !== \"supported\" &&\n value !== \"unsupported\" &&\n value !== \"unknown\"\n ) {\n throw new InvalidConfigurationError(\n path + \" is invalid.\"\n );\n }\n return value;\n}\n\nfunction parseAutoIso(\n value: unknown,\n standardRange:\n IsoExposureIndexRange,\n path: string\n): IsoAutoIsoCapability {\n const record =\n requireRecord(value, path, [\"availability\", \"evidence\", \"standardExposureIndexRange\"]);\n const availability =\n parseAvailability(\n record.availability,\n path + \".availability\"\n );\n const evidence =\n parseEvidenceList(\n record.evidence,\n path + \".evidence\"\n );\n\n if (\n availability ===\n \"supported\"\n ) {\n const autoRange =\n parseRange(\n record\n .standardExposureIndexRange,\n path +\n \".standardExposureIndexRange\"\n );\n if (\n !rangeWithin(\n autoRange,\n standardRange\n )\n ) {\n throw new InvalidConfigurationError(\n path +\n \".standardExposureIndexRange must lie inside the standard ISO range.\"\n );\n }\n return {\n availability:\n \"supported\",\n standardExposureIndexRange:\n autoRange,\n evidence\n };\n }\n\n if (\n record\n .standardExposureIndexRange !==\n undefined\n ) {\n throw new InvalidConfigurationError(\n path +\n \".standardExposureIndexRange must be omitted unless Auto ISO is supported.\"\n );\n }\n\n return {\n availability,\n evidence\n };\n}\n\nfunction parseExpandedSetting(\n value: unknown,\n standardRange:\n IsoExposureIndexRange,\n path: string\n): IsoExpandedSetting {\n const record =\n requireRecord(value, path, [\"direction\", \"exposureIndexEquivalent\", \"autoIsoEligible\", \"settingId\", \"label\", \"evidence\"]);\n const direction =\n record.direction;\n if (\n direction !== \"low\" &&\n direction !== \"high\"\n ) {\n throw new InvalidConfigurationError(\n path +\n \".direction must be low or high.\"\n );\n }\n const exposureIndexEquivalent =\n requirePositiveFinite(\n record\n .exposureIndexEquivalent,\n path +\n \".exposureIndexEquivalent\"\n );\n if (\n (\n direction === \"low\" &&\n exposureIndexEquivalent >=\n standardRange.minimum\n ) ||\n (\n direction === \"high\" &&\n exposureIndexEquivalent <=\n standardRange.maximum\n )\n ) {\n throw new InvalidConfigurationError(\n path +\n \".exposureIndexEquivalent must lie outside the standard range in the declared direction.\"\n );\n }\n if (\n typeof record.autoIsoEligible !==\n \"boolean\"\n ) {\n throw new InvalidConfigurationError(\n path +\n \".autoIsoEligible must be boolean.\"\n );\n }\n\n return {\n settingId:\n requireNonEmptyString(\n record.settingId,\n path + \".settingId\"\n ),\n label:\n requireNonEmptyString(\n record.label,\n path + \".label\"\n ),\n direction,\n exposureIndexEquivalent,\n autoIsoEligible:\n record.autoIsoEligible,\n evidence:\n parseEvidenceList(\n record.evidence,\n path + \".evidence\"\n )\n };\n}\n\nfunction parseCaptureModePolicy(\n value: unknown,\n standardRange:\n IsoExposureIndexRange,\n expandedIds:\n ReadonlySet<string>,\n path: string\n): IsoCaptureModePolicy {\n const record =\n requireRecord(value, path, [\"standardExposureIndexRange\", \"expandedSettingIds\", \"captureModeId\", \"autoIso\", \"evidence\"]);\n const modeRange =\n parseRange(\n record\n .standardExposureIndexRange,\n path +\n \".standardExposureIndexRange\"\n );\n if (\n !rangeWithin(\n modeRange,\n standardRange\n )\n ) {\n throw new InvalidConfigurationError(\n path +\n \".standardExposureIndexRange must lie inside the global standard range.\"\n );\n }\n if (\n !Array.isArray(\n record.expandedSettingIds\n )\n ) {\n throw new InvalidConfigurationError(\n path +\n \".expandedSettingIds must be an array.\"\n );\n }\n const expandedSettingIds =\n record.expandedSettingIds.map(\n (entry, index) => {\n const id =\n requireNonEmptyString(\n entry,\n path +\n \".expandedSettingIds[\" +\n index +\n \"]\"\n );\n if (!expandedIds.has(id)) {\n throw new InvalidConfigurationError(\n path +\n \".expandedSettingIds contains an unknown settingId.\"\n );\n }\n return id;\n }\n );\n if (\n new Set(\n expandedSettingIds\n ).size !==\n expandedSettingIds.length\n ) {\n throw new InvalidConfigurationError(\n path +\n \".expandedSettingIds must not contain duplicates.\"\n );\n }\n\n return {\n captureModeId:\n requireNonEmptyString(\n record.captureModeId,\n path + \".captureModeId\"\n ),\n standardExposureIndexRange:\n modeRange,\n expandedSettingIds,\n autoIso:\n parseAutoIso(\n record.autoIso,\n modeRange,\n path + \".autoIso\"\n ),\n evidence:\n parseEvidenceList(\n record.evidence,\n path + \".evidence\"\n )\n };\n}\n\n/**\n * Validates an untrusted declaration and returns the normalized typed contract. Unknown enum values,\n * missing required fields and incompatible scientific data are rejected here.\n *\n * ISO is an exposure-index (EI) control setting. It does not create photons and says nothing about\n * read noise. Standard and expanded settings, limits per capture mode, and whether Auto ISO is\n * available are all stated explicitly. If availability is unknown, automatic control is not allowed.\n * @param value - unknown. Untrusted input; TypeScript types alone are not validation.\n * @returns IsoCapabilityProfile. The result states its shape and scientific status; a successful call does not imply calibration.\n *\n * @see docs/API_REFERENCE.md for the root export and exact type graph.\n */\nexport function parseIsoCapabilityProfile(\n value: unknown\n): IsoCapabilityProfile {\n const record =\n requireRecord(\n value,\n \"isoCapabilityProfile\", [\"schemaVersion\", \"capabilityMeaning\", \"standard\", \"expandedSettings\", \"captureModePolicies\", \"profileId\", \"profileVersion\", \"autoIso\", \"evidence\"]\n );\n if (\n record.schemaVersion !==\n ISO_CAPABILITY_PROFILE_SCHEMA_VERSION\n ) {\n throw new InvalidConfigurationError(\n 'isoCapabilityProfile.schemaVersion must be \"' +\n ISO_CAPABILITY_PROFILE_SCHEMA_VERSION +\n '\".'\n );\n }\n if (\n record.capabilityMeaning !==\n \"reported-exposure-index-capability-not-physical-gain\"\n ) {\n throw new InvalidConfigurationError(\n \"isoCapabilityProfile.capabilityMeaning is invalid.\"\n );\n }\n const standard =\n requireRecord(\n record.standard,\n \"isoCapabilityProfile.standard\", [\"exposureIndexRange\", \"settingGrid\"]\n );\n const standardRange =\n parseRange(\n standard\n .exposureIndexRange,\n \"isoCapabilityProfile.standard.exposureIndexRange\"\n );\n const settingGrid =\n parseGrid(\n standard.settingGrid,\n standardRange,\n \"isoCapabilityProfile.standard.settingGrid\"\n );\n\n if (\n !Array.isArray(\n record.expandedSettings\n )\n ) {\n throw new InvalidConfigurationError(\n \"isoCapabilityProfile.expandedSettings must be an array.\"\n );\n }\n const expandedSettings =\n record.expandedSettings.map(\n (entry, index) =>\n parseExpandedSetting(\n entry,\n standardRange,\n \"isoCapabilityProfile.expandedSettings[\" +\n index +\n \"]\"\n )\n );\n const expandedIds =\n expandedSettings.map(\n (entry) =>\n entry.settingId\n );\n if (\n new Set(expandedIds).size !==\n expandedIds.length\n ) {\n throw new InvalidConfigurationError(\n \"isoCapabilityProfile.expandedSettings must not contain duplicate settingId values.\"\n );\n }\n const expandedIdSet =\n new Set(expandedIds);\n\n if (\n !Array.isArray(\n record.captureModePolicies\n )\n ) {\n throw new InvalidConfigurationError(\n \"isoCapabilityProfile.captureModePolicies must be an array.\"\n );\n }\n const captureModePolicies =\n record.captureModePolicies.map(\n (entry, index) =>\n parseCaptureModePolicy(\n entry,\n standardRange,\n expandedIdSet,\n \"isoCapabilityProfile.captureModePolicies[\" +\n index +\n \"]\"\n )\n );\n const modeIds =\n captureModePolicies.map(\n (entry) =>\n entry.captureModeId\n );\n if (\n new Set(modeIds).size !==\n modeIds.length\n ) {\n throw new InvalidConfigurationError(\n \"isoCapabilityProfile.captureModePolicies must not contain duplicate captureModeId values.\"\n );\n }\n\n return {\n schemaVersion:\n ISO_CAPABILITY_PROFILE_SCHEMA_VERSION,\n profileId:\n requireNonEmptyString(\n record.profileId,\n \"isoCapabilityProfile.profileId\"\n ),\n profileVersion:\n requireNonEmptyString(\n record.profileVersion,\n \"isoCapabilityProfile.profileVersion\"\n ),\n capabilityMeaning:\n \"reported-exposure-index-capability-not-physical-gain\",\n standard: {\n exposureIndexRange:\n standardRange,\n settingGrid\n },\n expandedSettings,\n autoIso:\n parseAutoIso(\n record.autoIso,\n standardRange,\n \"isoCapabilityProfile.autoIso\"\n ),\n captureModePolicies,\n evidence:\n parseEvidenceList(\n record.evidence,\n \"isoCapabilityProfile.evidence\"\n )\n };\n}\n\nfunction isStandardValueSupported(\n value: number,\n range:\n IsoExposureIndexRange,\n grid:\n IsoStandardSettingGrid\n): boolean {\n if (\n value < range.minimum ||\n value > range.maximum\n ) {\n return false;\n }\n return (\n grid.kind ===\n \"continuous-within-range\" ||\n grid.values.includes(value)\n );\n}\n\nfunction resolveModePolicy(\n profile:\n IsoCapabilityProfile,\n captureModeId:\n string | undefined\n): {\n range:\n IsoExposureIndexRange;\n expandedSettingIds:\n ReadonlySet<string>;\n autoIso:\n IsoAutoIsoCapability;\n} {\n if (\n captureModeId ===\n undefined\n ) {\n return {\n range:\n profile.standard\n .exposureIndexRange,\n expandedSettingIds:\n new Set(\n profile\n .expandedSettings\n .map(\n (entry) =>\n entry.settingId\n )\n ),\n autoIso:\n profile.autoIso\n };\n }\n if (\n captureModeId.trim()\n .length === 0\n ) {\n throw new InvalidConfigurationError(\n \"captureModeId must be a non-empty string when provided.\"\n );\n }\n const policy =\n profile.captureModePolicies.find(\n (entry) =>\n entry.captureModeId ===\n captureModeId\n );\n if (policy === undefined) {\n return {\n range:\n profile.standard\n .exposureIndexRange,\n expandedSettingIds:\n new Set(\n profile\n .expandedSettings\n .map(\n (entry) =>\n entry.settingId\n )\n ),\n autoIso:\n profile.autoIso\n };\n }\n return {\n range:\n policy\n .standardExposureIndexRange,\n expandedSettingIds:\n new Set(\n policy\n .expandedSettingIds\n ),\n autoIso:\n policy.autoIso\n };\n}\n\n/**\n * Resolves one standard, expanded or Auto ISO request against what the profile and capture mode\n * declare as available. Reports \"unavailable\" or \"unknown\" explicitly.\n *\n * ISO is an exposure-index (EI) control setting. It does not create photons and says nothing about\n * read noise. Standard and expanded settings, limits per capture mode, and whether Auto ISO is\n * available are all stated explicitly. If availability is unknown, automatic control is not allowed.\n * @param input - ResolveIsoCapabilityInput. See that type for coordinates, units and profile binding.\n * @returns ResolvedIsoCapability. The result states its shape and scientific status; a successful call does not imply calibration.\n *\n * @see docs/API_REFERENCE.md for the root export and exact type graph.\n */\nexport function resolveIsoCapability(\n input:\n ResolveIsoCapabilityInput\n): ResolvedIsoCapability {\n requireInputKeys(input, \"resolveIsoCapability\", [\"profile\", \"setting\", \"captureModeId\"]);\n const profile =\n parseIsoCapabilityProfile(\n input.profile\n );\n const modePolicy =\n resolveModePolicy(\n profile,\n input.captureModeId\n );\n\n if (\n input.setting.kind ===\n \"standard\"\n ) {\n if (\n typeof input.setting\n .exposureIndex !==\n \"number\" ||\n !Number.isFinite(\n input.setting\n .exposureIndex\n ) ||\n input.setting\n .exposureIndex <= 0\n ) {\n throw new InvalidScientificInputError(\n \"standard exposureIndex must be finite and greater than zero.\"\n );\n }\n if (\n !isStandardValueSupported(\n input.setting\n .exposureIndex,\n modePolicy.range,\n profile.standard\n .settingGrid\n )\n ) {\n throw new InvalidScientificInputError(\n \"Requested standard exposure index is not supported by the selected ISO capability/mode.\"\n );\n }\n\n const autoEligible =\n modePolicy.autoIso\n .availability ===\n \"supported\" &&\n input.setting\n .exposureIndex >=\n modePolicy.autoIso\n .standardExposureIndexRange\n .minimum &&\n input.setting\n .exposureIndex <=\n modePolicy.autoIso\n .standardExposureIndexRange\n .maximum;\n\n return {\n profileId:\n profile.profileId,\n profileVersion:\n profile.profileVersion,\n captureModeId:\n input.captureModeId ??\n null,\n setting: {\n kind: \"standard\",\n exposureIndex:\n input.setting\n .exposureIndex\n },\n reportedExposureIndex:\n input.setting\n .exposureIndex,\n expandedSetting: false,\n autoIsoEligible:\n autoEligible,\n standardExposureIndexRange: {\n ...modePolicy.range\n },\n standardSettingGrid:\n profile.standard\n .settingGrid.kind ===\n \"continuous-within-range\"\n ? {\n kind:\n \"continuous-within-range\"\n }\n : {\n kind:\n \"discrete-values\",\n values: [\n ...profile.standard\n .settingGrid\n .values\n ]\n },\n autoIso:\n modePolicy.autoIso,\n capturedPhotonExpectationModified:\n false,\n photonShotNoiseStatisticsModified:\n false,\n physicalGainInferred:\n false,\n conversionGainInferred:\n false,\n readNoiseInferred:\n false,\n saturationInferred:\n false,\n exactCommercialCameraBehaviorClaimed:\n false\n };\n }\n\n if (\n input.setting.kind !==\n \"expanded\"\n ) {\n throw new InvalidConfigurationError(\n \"ISO setting must be a valid standard or expanded setting.\"\n );\n }\n const expandedSettingId =\n input.setting.settingId;\n if (\n typeof expandedSettingId !==\n \"string\" ||\n expandedSettingId.trim()\n .length === 0\n ) {\n throw new InvalidConfigurationError(\n \"ISO setting must be a valid standard or expanded setting.\"\n );\n }\n\n const setting =\n profile.expandedSettings.find(\n (entry) =>\n entry.settingId ===\n expandedSettingId\n );\n if (\n setting === undefined ||\n !modePolicy\n .expandedSettingIds\n .has(setting.settingId)\n ) {\n throw new InvalidScientificInputError(\n \"Requested expanded ISO setting is not supported by the selected ISO capability/mode.\"\n );\n }\n\n return {\n profileId:\n profile.profileId,\n profileVersion:\n profile.profileVersion,\n captureModeId:\n input.captureModeId ??\n null,\n setting: {\n kind: \"expanded\",\n settingId:\n setting.settingId,\n label: setting.label,\n direction:\n setting.direction,\n exposureIndexEquivalent:\n setting\n .exposureIndexEquivalent\n },\n reportedExposureIndex:\n setting\n .exposureIndexEquivalent,\n expandedSetting: true,\n autoIsoEligible:\n modePolicy.autoIso\n .availability ===\n \"supported\" &&\n setting.autoIsoEligible,\n standardExposureIndexRange: {\n ...modePolicy.range\n },\n standardSettingGrid:\n profile.standard\n .settingGrid.kind ===\n \"continuous-within-range\"\n ? {\n kind:\n \"continuous-within-range\"\n }\n : {\n kind:\n \"discrete-values\",\n values: [\n ...profile.standard\n .settingGrid.values\n ]\n },\n autoIso:\n modePolicy.autoIso,\n capturedPhotonExpectationModified:\n false,\n photonShotNoiseStatisticsModified:\n false,\n physicalGainInferred:\n false,\n conversionGainInferred:\n false,\n readNoiseInferred: false,\n saturationInferred: false,\n exactCommercialCameraBehaviorClaimed:\n false\n };\n}\n\n\nexport interface BindIsoCapabilityToExposureCapabilitiesInput {\n isoCapabilityProfile:\n IsoCapabilityProfile;\n equipmentCapabilities:\n ResolvedGenericEquipmentExposureCapabilities;\n captureModeId?: string;\n}\n\nexport interface BoundIsoExposureCapabilities {\n isoCapabilityProfileId: string;\n isoCapabilityProfileVersion: string;\n captureModeId: string | null;\n capabilities:\n ResolvedGenericEquipmentExposureCapabilities;\n expandedSettingsExcludedFromNumericExposureGrid:\n true;\n physicalGainInferred: false;\n readNoiseInferred: false;\n}\n\nfunction sameResolvedGrid(\n resolved:\n ResolvedNumericSettingGrid,\n detailed:\n IsoStandardSettingGrid\n): boolean {\n if (\n resolved.kind !==\n detailed.kind\n ) {\n return false;\n }\n if (\n resolved.kind ===\n \"continuous-within-range\" ||\n detailed.kind ===\n \"continuous-within-range\"\n ) {\n return true;\n }\n return (\n resolved.values.length ===\n detailed.values.length &&\n resolved.values.every(\n (value, index) =>\n value ===\n detailed.values[index]\n )\n );\n}\n\nfunction gridWithinRange(\n grid:\n ResolvedNumericSettingGrid,\n range:\n IsoExposureIndexRange\n): ResolvedNumericSettingGrid {\n if (\n grid.kind ===\n \"continuous-within-range\"\n ) {\n return {\n kind:\n \"continuous-within-range\"\n };\n }\n const values =\n grid.values.filter(\n (value) =>\n value >= range.minimum &&\n value <= range.maximum\n );\n if (values.length === 0) {\n throw new InvalidScientificInputError(\n \"Selected capture-mode ISO range contains no values from the resolved equipment ISO grid.\"\n );\n }\n return {\n kind: \"discrete-values\",\n values\n };\n}\n\n/**\n * Combines the detailed ISO/EI capability profile with the numeric capability\n * envelope that the exposure-mode resolvers use.\n *\n * The existing equipment capability must match the profile's global standard\n * ISO range and grid exactly. A capture-mode policy backed by evidence may\n * narrow the standard manual range for that mode. Auto ISO may be narrower\n * still. Expanded settings (such as L and H) stay outside the resolvers'\n * ordinary numeric ISO grid; use resolveIsoCapability() for them.\n */\nexport function bindIsoCapabilityToExposureCapabilities(\n input:\n BindIsoCapabilityToExposureCapabilitiesInput\n): BoundIsoExposureCapabilities {\n requireInputKeys(input, \"bindIsoCapabilityToExposureCapabilities\", [\"isoCapabilityProfile\", \"equipmentCapabilities\", \"captureModeId\"]);\n const profile =\n parseIsoCapabilityProfile(\n input.isoCapabilityProfile\n );\n const source =\n input.equipmentCapabilities;\n\n if (\n source.iso.minimum !==\n profile.standard\n .exposureIndexRange\n .minimum ||\n source.iso.maximum !==\n profile.standard\n .exposureIndexRange\n .maximum ||\n !sameResolvedGrid(\n source.iso.settingGrid,\n profile.standard\n .settingGrid\n )\n ) {\n throw new InvalidScientificInputError(\n \"Detailed ISO capability standard range/grid must exactly match the existing resolved equipment ISO capability.\"\n );\n }\n\n const modePolicy =\n resolveModePolicy(\n profile,\n input.captureModeId\n );\n const settingGrid =\n gridWithinRange(\n source.iso.settingGrid,\n modePolicy.range\n );\n\n const iso =\n modePolicy.autoIso\n .availability ===\n \"supported\"\n ? {\n minimum:\n modePolicy.range.minimum,\n maximum:\n modePolicy.range.maximum,\n settingGrid,\n autoIsoAvailability:\n \"supported\" as const,\n autoIsoMinimum:\n modePolicy.autoIso\n .standardExposureIndexRange\n .minimum,\n autoIsoMaximum:\n modePolicy.autoIso\n .standardExposureIndexRange\n .maximum\n }\n : {\n minimum:\n modePolicy.range.minimum,\n maximum:\n modePolicy.range.maximum,\n settingGrid,\n autoIsoAvailability:\n modePolicy.autoIso\n .availability\n };\n\n return {\n isoCapabilityProfileId:\n profile.profileId,\n isoCapabilityProfileVersion:\n profile.profileVersion,\n captureModeId:\n input.captureModeId ??\n null,\n capabilities: {\n ...source,\n iso\n },\n expandedSettingsExcludedFromNumericExposureGrid:\n true,\n physicalGainInferred:\n false,\n readNoiseInferred:\n false\n };\n}\n"]}
|
|
@@ -43,16 +43,15 @@ export interface AssessExposureMeteringProfileCompatibilityInput {
|
|
|
43
43
|
/**
|
|
44
44
|
* Parses generic body metering capability metadata.
|
|
45
45
|
*
|
|
46
|
-
* This profile declares which engine
|
|
47
|
-
* body can select. It deliberately does not
|
|
48
|
-
* values from those metering profiles.
|
|
46
|
+
* This profile declares which of the engine's metering profiles and modes a
|
|
47
|
+
* generic body can select. It deliberately does not copy target or
|
|
48
|
+
* calibration values from those metering profiles.
|
|
49
49
|
*/
|
|
50
50
|
export declare function parseGenericBodyMeteringCapabilityProfile(value: unknown): GenericBodyMeteringCapabilityProfile;
|
|
51
51
|
/**
|
|
52
52
|
* Checks whether one engine metering profile is selectable on a generic body.
|
|
53
53
|
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
54
|
+
* The metering profile stays the single source of its calibration and target
|
|
55
|
+
* policy. They are never copied into equipment capability metadata.
|
|
56
56
|
*/
|
|
57
57
|
export declare function assessExposureMeteringProfileCompatibility(input: AssessExposureMeteringProfileCompatibilityInput): MeteringCapabilityCompatibilityAssessment;
|
|
58
|
-
//# sourceMappingURL=metering-capabilities.d.ts.map
|
|
@@ -1,32 +1,34 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* values from those metering profiles.
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* @see docs/GENERIC_TIER_PRESETS.md for equations, coordinate/unit conventions, blockers and support
|
|
11
|
-
* limits.
|
|
3
|
+
* Metering capabilities of a generic body: which of the engine's metering profiles and modes it can
|
|
4
|
+
* select.
|
|
5
|
+
*
|
|
6
|
+
* This profile deliberately does not copy target or calibration values from those metering profiles.
|
|
7
|
+
* The metering profile stays the single source of its calibration and target policy.
|
|
8
|
+
* @see docs/GENERIC_TIER_PRESETS.md for the equations, units, coordinate conventions, known blockers
|
|
9
|
+
* and support limits.
|
|
12
10
|
*/
|
|
13
11
|
import { InvalidConfigurationError } from "../core/configuration-error.js";
|
|
14
12
|
import { parseEvidenceList } from "../core/evidence-provenance.js";
|
|
15
13
|
import { InvalidScientificInputError } from "../core/validation.js";
|
|
16
14
|
import { parseExposureMeteringProfile } from "../exposure/metering.js";
|
|
15
|
+
import { requireInputKeys, rejectUnknownFields } from "../core/record-validation.js";
|
|
17
16
|
export const GENERIC_BODY_METERING_CAPABILITY_SCHEMA_VERSION = "0.1.0";
|
|
18
17
|
const POLICY_KINDS = new Set([
|
|
19
18
|
"multi-zone-uniform",
|
|
20
19
|
"center-weighted-radial",
|
|
21
20
|
"spot",
|
|
22
|
-
"highlight-weighted"
|
|
21
|
+
"highlight-weighted",
|
|
22
|
+
"highlight-priority"
|
|
23
23
|
]);
|
|
24
|
-
function requireRecord(value, path) {
|
|
24
|
+
function requireRecord(value, path, allowedKeys) {
|
|
25
25
|
if (typeof value !== "object" ||
|
|
26
26
|
value === null ||
|
|
27
27
|
Array.isArray(value)) {
|
|
28
28
|
throw new InvalidConfigurationError(path + " must be an object.");
|
|
29
29
|
}
|
|
30
|
+
if (allowedKeys !== null)
|
|
31
|
+
rejectUnknownFields(value, allowedKeys, path);
|
|
30
32
|
return value;
|
|
31
33
|
}
|
|
32
34
|
function requireNonEmptyString(value, path) {
|
|
@@ -54,12 +56,12 @@ function parsePolicyKind(value, path) {
|
|
|
54
56
|
/**
|
|
55
57
|
* Parses generic body metering capability metadata.
|
|
56
58
|
*
|
|
57
|
-
* This profile declares which engine
|
|
58
|
-
* body can select. It deliberately does not
|
|
59
|
-
* values from those metering profiles.
|
|
59
|
+
* This profile declares which of the engine's metering profiles and modes a
|
|
60
|
+
* generic body can select. It deliberately does not copy target or
|
|
61
|
+
* calibration values from those metering profiles.
|
|
60
62
|
*/
|
|
61
63
|
export function parseGenericBodyMeteringCapabilityProfile(value) {
|
|
62
|
-
const record = requireRecord(value, "genericBodyMeteringCapabilityProfile");
|
|
64
|
+
const record = requireRecord(value, "genericBodyMeteringCapabilityProfile", ["schemaVersion", "scientificStatus", "supportedMeteringProfiles", "spotFocusPointLinkage", "profileId", "profileVersion", "evidence"]);
|
|
63
65
|
if (record.schemaVersion !==
|
|
64
66
|
GENERIC_BODY_METERING_CAPABILITY_SCHEMA_VERSION) {
|
|
65
67
|
throw new InvalidConfigurationError('genericBodyMeteringCapabilityProfile.schemaVersion must be "' +
|
|
@@ -79,7 +81,7 @@ export function parseGenericBodyMeteringCapabilityProfile(value) {
|
|
|
79
81
|
const path = "genericBodyMeteringCapabilityProfile.supportedMeteringProfiles[" +
|
|
80
82
|
index +
|
|
81
83
|
"]";
|
|
82
|
-
const item = requireRecord(entry, path);
|
|
84
|
+
const item = requireRecord(entry, path, ["meteringProfileId", "policyKind", "evidence"]);
|
|
83
85
|
return {
|
|
84
86
|
meteringProfileId: requireNonEmptyString(item.meteringProfileId, path + ".meteringProfileId"),
|
|
85
87
|
policyKind: parsePolicyKind(item.policyKind, path + ".policyKind"),
|
|
@@ -91,7 +93,7 @@ export function parseGenericBodyMeteringCapabilityProfile(value) {
|
|
|
91
93
|
ids.length) {
|
|
92
94
|
throw new InvalidConfigurationError("genericBodyMeteringCapabilityProfile.supportedMeteringProfiles must not contain duplicate meteringProfileId values.");
|
|
93
95
|
}
|
|
94
|
-
const spotLink = requireRecord(record.spotFocusPointLinkage, "genericBodyMeteringCapabilityProfile.spotFocusPointLinkage");
|
|
96
|
+
const spotLink = requireRecord(record.spotFocusPointLinkage, "genericBodyMeteringCapabilityProfile.spotFocusPointLinkage", ["availability", "evidence"]);
|
|
95
97
|
return {
|
|
96
98
|
schemaVersion: GENERIC_BODY_METERING_CAPABILITY_SCHEMA_VERSION,
|
|
97
99
|
profileId: requireNonEmptyString(record.profileId, "genericBodyMeteringCapabilityProfile.profileId"),
|
|
@@ -108,10 +110,11 @@ export function parseGenericBodyMeteringCapabilityProfile(value) {
|
|
|
108
110
|
/**
|
|
109
111
|
* Checks whether one engine metering profile is selectable on a generic body.
|
|
110
112
|
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
+
* The metering profile stays the single source of its calibration and target
|
|
114
|
+
* policy. They are never copied into equipment capability metadata.
|
|
113
115
|
*/
|
|
114
116
|
export function assessExposureMeteringProfileCompatibility(input) {
|
|
117
|
+
requireInputKeys(input, "assessExposureMeteringProfileCompatibility", ["bodyCapabilities", "meteringProfile"]);
|
|
115
118
|
const body = parseGenericBodyMeteringCapabilityProfile(input.bodyCapabilities);
|
|
116
119
|
const metering = parseExposureMeteringProfile(input.meteringProfile);
|
|
117
120
|
const declared = body.supportedMeteringProfiles.find((entry) => entry.meteringProfileId ===
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metering-capabilities.js","sourceRoot":"","sources":["../../src/equipment/metering-capabilities.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"metering-capabilities.js","sourceRoot":"","sources":["../../src/equipment/metering-capabilities.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Metering capabilities of a generic body: which of the engine's metering profiles and modes it can\n * select.\n *\n * This profile deliberately does not copy target or calibration values from those metering profiles.\n * The metering profile stays the single source of its calibration and target policy.\n * @see docs/GENERIC_TIER_PRESETS.md for the equations, units, coordinate conventions, known blockers\n * and support limits.\n */\n\nimport { InvalidConfigurationError } from \"../core/configuration-error.js\";\nimport {\n parseEvidenceList,\n type EvidenceProvenance\n} from \"../core/evidence-provenance.js\";\nimport { InvalidScientificInputError } from \"../core/validation.js\";\nimport {\n parseExposureMeteringProfile,\n type ExposureMeteringPolicy,\n type ExposureMeteringProfile\n} from \"../exposure/metering.js\";\nimport type { GenericCapabilityAvailability } from \"./exposure-capabilities.js\";\nimport { requireInputKeys, rejectUnknownFields } from \"../core/record-validation.js\";\n\ntype UnknownRecord = Record<string, unknown>;\n\nexport const GENERIC_BODY_METERING_CAPABILITY_SCHEMA_VERSION =\n \"0.1.0\" as const;\n\nexport interface GenericSupportedMeteringProfile {\n meteringProfileId: string;\n policyKind: ExposureMeteringPolicy[\"kind\"];\n evidence: readonly EvidenceProvenance[];\n}\n\nexport interface GenericBodyMeteringCapabilityProfile {\n schemaVersion:\n typeof GENERIC_BODY_METERING_CAPABILITY_SCHEMA_VERSION;\n profileId: string;\n profileVersion: string;\n scientificStatus: \"approximation\";\n evidence: readonly EvidenceProvenance[];\n supportedMeteringProfiles:\n readonly GenericSupportedMeteringProfile[];\n spotFocusPointLinkage: {\n availability: GenericCapabilityAvailability;\n evidence: readonly EvidenceProvenance[];\n };\n}\n\nexport type MeteringCapabilityCompatibilityBlocker =\n | \"metering-profile-unsupported\"\n | \"metering-policy-mismatch\";\n\nexport interface MeteringCapabilityCompatibilityAssessment {\n schemaVersion:\n typeof GENERIC_BODY_METERING_CAPABILITY_SCHEMA_VERSION;\n status: \"compatible\" | \"blocked\";\n bodyProfile: {\n profileId: string;\n profileVersion: string;\n };\n meteringProfile: {\n profileId: string;\n policyKind: ExposureMeteringPolicy[\"kind\"];\n };\n targetPolicyOwnership: \"metering-profile\";\n targetCalibrationDuplicatedInEquipmentProfile: false;\n spotFocusPointLinkageAvailability:\n GenericCapabilityAvailability;\n blockers:\n readonly MeteringCapabilityCompatibilityBlocker[];\n}\n\nexport interface AssessExposureMeteringProfileCompatibilityInput {\n bodyCapabilities:\n GenericBodyMeteringCapabilityProfile;\n meteringProfile:\n ExposureMeteringProfile;\n}\n\nconst POLICY_KINDS =\n new Set<ExposureMeteringPolicy[\"kind\"]>([\n \"multi-zone-uniform\",\n \"center-weighted-radial\",\n \"spot\",\n \"highlight-weighted\",\n \"highlight-priority\"\n ]);\n\nfunction requireRecord(\n value: unknown,\n path: string,\n allowedKeys: readonly string[] | null\n): UnknownRecord {\n if (\n typeof value !== \"object\" ||\n value === null ||\n Array.isArray(value)\n ) {\n throw new InvalidConfigurationError(\n path + \" must be an object.\"\n );\n }\n if (allowedKeys !== null) rejectUnknownFields(value, allowedKeys, path);\n return value as UnknownRecord;\n}\n\nfunction requireNonEmptyString(\n value: unknown,\n path: string\n): string {\n if (\n typeof value !== \"string\" ||\n value.trim().length === 0\n ) {\n throw new InvalidConfigurationError(\n path + \" must be a non-empty string.\"\n );\n }\n return value.trim();\n}\n\nfunction parseAvailability(\n value: unknown,\n path: string\n): GenericCapabilityAvailability {\n if (\n value !== \"supported\" &&\n value !== \"unsupported\" &&\n value !== \"unknown\"\n ) {\n throw new InvalidConfigurationError(\n path + \" is invalid.\"\n );\n }\n return value;\n}\n\nfunction parsePolicyKind(\n value: unknown,\n path: string\n): ExposureMeteringPolicy[\"kind\"] {\n if (\n typeof value !== \"string\" ||\n !POLICY_KINDS.has(\n value as ExposureMeteringPolicy[\"kind\"]\n )\n ) {\n throw new InvalidConfigurationError(\n path + \" is invalid.\"\n );\n }\n return value as ExposureMeteringPolicy[\"kind\"];\n}\n\n/**\n * Parses generic body metering capability metadata.\n *\n * This profile declares which of the engine's metering profiles and modes a\n * generic body can select. It deliberately does not copy target or\n * calibration values from those metering profiles.\n */\nexport function parseGenericBodyMeteringCapabilityProfile(\n value: unknown\n): GenericBodyMeteringCapabilityProfile {\n const record = requireRecord(\n value,\n \"genericBodyMeteringCapabilityProfile\", [\"schemaVersion\", \"scientificStatus\", \"supportedMeteringProfiles\", \"spotFocusPointLinkage\", \"profileId\", \"profileVersion\", \"evidence\"]\n );\n\n if (\n record.schemaVersion !==\n GENERIC_BODY_METERING_CAPABILITY_SCHEMA_VERSION\n ) {\n throw new InvalidConfigurationError(\n 'genericBodyMeteringCapabilityProfile.schemaVersion must be \"' +\n GENERIC_BODY_METERING_CAPABILITY_SCHEMA_VERSION +\n '\".'\n );\n }\n if (\n record.scientificStatus !==\n \"approximation\"\n ) {\n throw new InvalidConfigurationError(\n 'genericBodyMeteringCapabilityProfile.scientificStatus must be \"approximation\".'\n );\n }\n\n if (\n !Array.isArray(\n record.supportedMeteringProfiles\n ) ||\n record.supportedMeteringProfiles\n .length === 0\n ) {\n throw new InvalidConfigurationError(\n \"genericBodyMeteringCapabilityProfile.supportedMeteringProfiles must be a non-empty array.\"\n );\n }\n\n const supported =\n record.supportedMeteringProfiles.map(\n (entry, index) => {\n const path =\n \"genericBodyMeteringCapabilityProfile.supportedMeteringProfiles[\" +\n index +\n \"]\";\n const item =\n requireRecord(entry, path, [\"meteringProfileId\", \"policyKind\", \"evidence\"]);\n return {\n meteringProfileId:\n requireNonEmptyString(\n item.meteringProfileId,\n path + \".meteringProfileId\"\n ),\n policyKind:\n parsePolicyKind(\n item.policyKind,\n path + \".policyKind\"\n ),\n evidence:\n parseEvidenceList(\n item.evidence,\n path + \".evidence\"\n )\n };\n }\n );\n\n const ids =\n supported.map(\n (entry) =>\n entry.meteringProfileId\n );\n if (\n new Set(ids).size !==\n ids.length\n ) {\n throw new InvalidConfigurationError(\n \"genericBodyMeteringCapabilityProfile.supportedMeteringProfiles must not contain duplicate meteringProfileId values.\"\n );\n }\n\n const spotLink =\n requireRecord(\n record.spotFocusPointLinkage,\n \"genericBodyMeteringCapabilityProfile.spotFocusPointLinkage\", [\"availability\", \"evidence\"]\n );\n\n return {\n schemaVersion:\n GENERIC_BODY_METERING_CAPABILITY_SCHEMA_VERSION,\n profileId:\n requireNonEmptyString(\n record.profileId,\n \"genericBodyMeteringCapabilityProfile.profileId\"\n ),\n profileVersion:\n requireNonEmptyString(\n record.profileVersion,\n \"genericBodyMeteringCapabilityProfile.profileVersion\"\n ),\n scientificStatus:\n \"approximation\",\n evidence:\n parseEvidenceList(\n record.evidence,\n \"genericBodyMeteringCapabilityProfile.evidence\"\n ),\n supportedMeteringProfiles:\n supported,\n spotFocusPointLinkage: {\n availability:\n parseAvailability(\n spotLink.availability,\n \"genericBodyMeteringCapabilityProfile.spotFocusPointLinkage.availability\"\n ),\n evidence:\n parseEvidenceList(\n spotLink.evidence,\n \"genericBodyMeteringCapabilityProfile.spotFocusPointLinkage.evidence\"\n )\n }\n };\n}\n\n/**\n * Checks whether one engine metering profile is selectable on a generic body.\n *\n * The metering profile stays the single source of its calibration and target\n * policy. They are never copied into equipment capability metadata.\n */\nexport function assessExposureMeteringProfileCompatibility(\n input:\n AssessExposureMeteringProfileCompatibilityInput\n): MeteringCapabilityCompatibilityAssessment {\n requireInputKeys(input, \"assessExposureMeteringProfileCompatibility\", [\"bodyCapabilities\", \"meteringProfile\"]);\n const body =\n parseGenericBodyMeteringCapabilityProfile(\n input.bodyCapabilities\n );\n const metering =\n parseExposureMeteringProfile(\n input.meteringProfile\n );\n\n const declared =\n body.supportedMeteringProfiles.find(\n (entry) =>\n entry.meteringProfileId ===\n metering.profileId\n );\n\n const blockers:\n MeteringCapabilityCompatibilityBlocker[] =\n [];\n\n if (declared === undefined) {\n blockers.push(\n \"metering-profile-unsupported\"\n );\n } else if (\n declared.policyKind !==\n metering.policy.kind\n ) {\n blockers.push(\n \"metering-policy-mismatch\"\n );\n }\n\n if (\n blockers.length >\n new Set(blockers).size\n ) {\n throw new InvalidScientificInputError(\n \"Metering capability compatibility blockers must remain unique.\"\n );\n }\n\n return {\n schemaVersion:\n GENERIC_BODY_METERING_CAPABILITY_SCHEMA_VERSION,\n status:\n blockers.length === 0\n ? \"compatible\"\n : \"blocked\",\n bodyProfile: {\n profileId: body.profileId,\n profileVersion:\n body.profileVersion\n },\n meteringProfile: {\n profileId:\n metering.profileId,\n policyKind:\n metering.policy.kind\n },\n targetPolicyOwnership:\n \"metering-profile\",\n targetCalibrationDuplicatedInEquipmentProfile:\n false,\n spotFocusPointLinkageAvailability:\n body.spotFocusPointLinkage\n .availability,\n blockers\n };\n}\n"]}
|
|
@@ -25,9 +25,8 @@ export interface GenericReleaseCapabilityProfile {
|
|
|
25
25
|
/**
|
|
26
26
|
* Parses generic logical-release/drive capabilities.
|
|
27
27
|
*
|
|
28
|
-
* The first schema deliberately models
|
|
29
|
-
*
|
|
30
|
-
*
|
|
28
|
+
* The first schema deliberately models only ordinary still exposures that do
|
|
29
|
+
* not overlap. Slowdown from the buffer, media or heat, and pre-release
|
|
30
|
+
* capture, are not part of this profile.
|
|
31
31
|
*/
|
|
32
32
|
export declare function parseGenericReleaseCapabilityProfile(value: unknown): GenericReleaseCapabilityProfile;
|
|
33
|
-
//# sourceMappingURL=release-capabilities.d.ts.map
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
3
|
+
* Release and drive capabilities of a generic body: what happens when the shutter button is pressed
|
|
4
|
+
* (single shot, burst, self-timer, and exposure brackets).
|
|
5
|
+
*
|
|
6
|
+
* The first schema deliberately models only ordinary still exposures that do not overlap. Slowdown
|
|
7
|
+
* from the buffer, media or heat, and pre-release capture, are not part of this profile.
|
|
8
|
+
* @see docs/GENERIC_TIER_PRESETS.md for the equations, units, coordinate conventions, known blockers
|
|
9
|
+
* and support limits.
|
|
9
10
|
*/
|
|
11
|
+
import { rejectUnknownFields } from "../core/record-validation.js";
|
|
10
12
|
import { InvalidConfigurationError } from "../core/configuration-error.js";
|
|
11
13
|
import { parseEvidenceList } from "../core/evidence-provenance.js";
|
|
12
14
|
export const GENERIC_RELEASE_CAPABILITY_SCHEMA_VERSION = "0.1.0";
|
|
@@ -20,12 +22,14 @@ const BRACKET_AXES = new Set([
|
|
|
20
22
|
"iso",
|
|
21
23
|
"aperture"
|
|
22
24
|
]);
|
|
23
|
-
function requireRecord(value, path) {
|
|
25
|
+
function requireRecord(value, path, allowedKeys) {
|
|
24
26
|
if (typeof value !== "object" ||
|
|
25
27
|
value === null ||
|
|
26
28
|
Array.isArray(value)) {
|
|
27
29
|
throw new InvalidConfigurationError(path + " must be an object.");
|
|
28
30
|
}
|
|
31
|
+
if (allowedKeys !== null)
|
|
32
|
+
rejectUnknownFields(value, allowedKeys, path);
|
|
29
33
|
return value;
|
|
30
34
|
}
|
|
31
35
|
function requireNonEmptyString(value, path) {
|
|
@@ -71,7 +75,7 @@ function parseAvailability(value, path) {
|
|
|
71
75
|
return value;
|
|
72
76
|
}
|
|
73
77
|
function parseFact(value, path, parseValue) {
|
|
74
|
-
const record = requireRecord(value, path);
|
|
78
|
+
const record = requireRecord(value, path, ["value", "evidence"]);
|
|
75
79
|
return {
|
|
76
80
|
value: parseValue(record.value, path + ".value"),
|
|
77
81
|
evidence: parseEvidenceList(record.evidence, path + ".evidence")
|
|
@@ -124,12 +128,12 @@ function parseBracketAxes(value, path) {
|
|
|
124
128
|
/**
|
|
125
129
|
* Parses generic logical-release/drive capabilities.
|
|
126
130
|
*
|
|
127
|
-
* The first schema deliberately models
|
|
128
|
-
*
|
|
129
|
-
*
|
|
131
|
+
* The first schema deliberately models only ordinary still exposures that do
|
|
132
|
+
* not overlap. Slowdown from the buffer, media or heat, and pre-release
|
|
133
|
+
* capture, are not part of this profile.
|
|
130
134
|
*/
|
|
131
135
|
export function parseGenericReleaseCapabilityProfile(value) {
|
|
132
|
-
const record = requireRecord(value, "genericReleaseCapabilityProfile");
|
|
136
|
+
const record = requireRecord(value, "genericReleaseCapabilityProfile", ["schemaVersion", "scientificStatus", "overlappingOrdinaryStillExposures", "exposureBracketing", "focusBracketing", "profileId", "profileVersion", "evidence", "supportedDriveModes", "maximumLogicalFramesPerSequence", "maximumCadenceFps", "minimumInterFrameGapSeconds"]);
|
|
133
137
|
if (record.schemaVersion !==
|
|
134
138
|
GENERIC_RELEASE_CAPABILITY_SCHEMA_VERSION) {
|
|
135
139
|
throw new InvalidConfigurationError('genericReleaseCapabilityProfile.schemaVersion must be "' +
|
|
@@ -144,8 +148,8 @@ export function parseGenericReleaseCapabilityProfile(value) {
|
|
|
144
148
|
false) {
|
|
145
149
|
throw new InvalidConfigurationError("genericReleaseCapabilityProfile.overlappingOrdinaryStillExposures must be false in schema 0.1.0.");
|
|
146
150
|
}
|
|
147
|
-
const exposureBracketing = requireRecord(record.exposureBracketing, "genericReleaseCapabilityProfile.exposureBracketing");
|
|
148
|
-
const focusBracketing = requireRecord(record.focusBracketing, "genericReleaseCapabilityProfile.focusBracketing");
|
|
151
|
+
const exposureBracketing = requireRecord(record.exposureBracketing, "genericReleaseCapabilityProfile.exposureBracketing", ["availability", "supportedAxes"]);
|
|
152
|
+
const focusBracketing = requireRecord(record.focusBracketing, "genericReleaseCapabilityProfile.focusBracketing", ["availability"]);
|
|
149
153
|
const exposureAvailability = parseFact(exposureBracketing.availability, "genericReleaseCapabilityProfile.exposureBracketing.availability", parseAvailability);
|
|
150
154
|
const axes = parseBracketAxes(exposureBracketing.supportedAxes, "genericReleaseCapabilityProfile.exposureBracketing.supportedAxes");
|
|
151
155
|
if (exposureAvailability.value !==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release-capabilities.js","sourceRoot":"","sources":["../../src/equipment/release-capabilities.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"release-capabilities.js","sourceRoot":"","sources":["../../src/equipment/release-capabilities.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Release and drive capabilities of a generic body: what happens when the shutter button is pressed\n * (single shot, burst, self-timer, and exposure brackets).\n *\n * The first schema deliberately models only ordinary still exposures that do not overlap. Slowdown\n * from the buffer, media or heat, and pre-release capture, are not part of this profile.\n * @see docs/GENERIC_TIER_PRESETS.md for the equations, units, coordinate conventions, known blockers\n * and support limits.\n */\n\nimport { rejectUnknownFields } from \"../core/record-validation.js\";\nimport { InvalidConfigurationError } from \"../core/configuration-error.js\";\nimport {\n parseEvidenceList,\n type EvidenceBackedFact,\n type EvidenceProvenance\n} from \"../core/evidence-provenance.js\";\nimport type { GenericCapabilityAvailability } from \"./exposure-capabilities.js\";\n\ntype UnknownRecord = Record<string, unknown>;\n\nexport const GENERIC_RELEASE_CAPABILITY_SCHEMA_VERSION =\n \"0.1.0\" as const;\n\nexport type GenericReleaseDriveMode =\n | \"single\"\n | \"burst\"\n | \"self-timer\";\n\nexport type GenericExposureBracketAxis =\n | \"shutter\"\n | \"iso\"\n | \"aperture\";\n\nexport interface GenericReleaseCapabilityProfile {\n schemaVersion:\n typeof GENERIC_RELEASE_CAPABILITY_SCHEMA_VERSION;\n profileId: string;\n profileVersion: string;\n scientificStatus: \"approximation\";\n evidence: readonly EvidenceProvenance[];\n supportedDriveModes:\n EvidenceBackedFact<\n readonly GenericReleaseDriveMode[]\n >;\n maximumLogicalFramesPerSequence:\n EvidenceBackedFact<number>;\n maximumCadenceFps:\n EvidenceBackedFact<number>;\n minimumInterFrameGapSeconds:\n EvidenceBackedFact<number>;\n overlappingOrdinaryStillExposures:\n false;\n exposureBracketing: {\n availability:\n EvidenceBackedFact<\n GenericCapabilityAvailability\n >;\n supportedAxes:\n readonly GenericExposureBracketAxis[];\n };\n focusBracketing: {\n availability:\n EvidenceBackedFact<\n GenericCapabilityAvailability\n >;\n };\n}\n\nconst DRIVE_MODES =\n new Set<GenericReleaseDriveMode>([\n \"single\",\n \"burst\",\n \"self-timer\"\n ]);\n\nconst BRACKET_AXES =\n new Set<GenericExposureBracketAxis>([\n \"shutter\",\n \"iso\",\n \"aperture\"\n ]);\n\nfunction requireRecord(\n value: unknown,\n path: string,\n allowedKeys: readonly string[] | null\n): UnknownRecord {\n if (\n typeof value !== \"object\" ||\n value === null ||\n Array.isArray(value)\n ) {\n throw new InvalidConfigurationError(\n path + \" must be an object.\"\n );\n }\n if (allowedKeys !== null) rejectUnknownFields(value, allowedKeys, path);\n return value as UnknownRecord;\n}\n\nfunction requireNonEmptyString(\n value: unknown,\n path: string\n): string {\n if (\n typeof value !== \"string\" ||\n value.trim().length === 0\n ) {\n throw new InvalidConfigurationError(\n path + \" must be a non-empty string.\"\n );\n }\n return value.trim();\n}\n\nfunction requirePositiveFinite(\n value: unknown,\n path: string\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value) ||\n value <= 0\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must be finite and greater than zero.\"\n );\n }\n return value;\n}\n\nfunction requireNonNegativeFinite(\n value: unknown,\n path: string\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value) ||\n value < 0\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must be finite and greater than or equal to zero.\"\n );\n }\n return value;\n}\n\nfunction requirePositiveSafeInteger(\n value: unknown,\n path: string\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isSafeInteger(value) ||\n value <= 0\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must be a positive safe integer.\"\n );\n }\n return value;\n}\n\nfunction parseAvailability(\n value: unknown,\n path: string\n): GenericCapabilityAvailability {\n if (\n value !== \"supported\" &&\n value !== \"unsupported\" &&\n value !== \"unknown\"\n ) {\n throw new InvalidConfigurationError(\n path + \" is invalid.\"\n );\n }\n return value;\n}\n\nfunction parseFact<T>(\n value: unknown,\n path: string,\n parseValue: (\n value: unknown,\n path: string\n ) => T\n): EvidenceBackedFact<T> {\n const record =\n requireRecord(value, path, [\"value\", \"evidence\"]);\n return {\n value:\n parseValue(\n record.value,\n path + \".value\"\n ),\n evidence:\n parseEvidenceList(\n record.evidence,\n path + \".evidence\"\n )\n };\n}\n\nfunction parseDriveModes(\n value: unknown,\n path: string\n): readonly GenericReleaseDriveMode[] {\n if (\n !Array.isArray(value) ||\n value.length === 0\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must be a non-empty array.\"\n );\n }\n const parsed =\n value.map((entry, index) => {\n if (\n typeof entry !== \"string\" ||\n !DRIVE_MODES.has(\n entry as GenericReleaseDriveMode\n )\n ) {\n throw new InvalidConfigurationError(\n path +\n \"[\" +\n index +\n \"] is invalid.\"\n );\n }\n return entry as GenericReleaseDriveMode;\n });\n if (\n new Set(parsed).size !==\n parsed.length\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must not contain duplicates.\"\n );\n }\n return parsed;\n}\n\nfunction parseBracketAxes(\n value: unknown,\n path: string\n): readonly GenericExposureBracketAxis[] {\n if (!Array.isArray(value)) {\n throw new InvalidConfigurationError(\n path + \" must be an array.\"\n );\n }\n const parsed =\n value.map((entry, index) => {\n if (\n typeof entry !== \"string\" ||\n !BRACKET_AXES.has(\n entry as GenericExposureBracketAxis\n )\n ) {\n throw new InvalidConfigurationError(\n path +\n \"[\" +\n index +\n \"] is invalid.\"\n );\n }\n return entry as GenericExposureBracketAxis;\n });\n if (\n new Set(parsed).size !==\n parsed.length\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must not contain duplicates.\"\n );\n }\n return parsed;\n}\n\n/**\n * Parses generic logical-release/drive capabilities.\n *\n * The first schema deliberately models only ordinary still exposures that do\n * not overlap. Slowdown from the buffer, media or heat, and pre-release\n * capture, are not part of this profile.\n */\nexport function parseGenericReleaseCapabilityProfile(\n value: unknown\n): GenericReleaseCapabilityProfile {\n const record =\n requireRecord(\n value,\n \"genericReleaseCapabilityProfile\", [\"schemaVersion\", \"scientificStatus\", \"overlappingOrdinaryStillExposures\", \"exposureBracketing\", \"focusBracketing\", \"profileId\", \"profileVersion\", \"evidence\", \"supportedDriveModes\", \"maximumLogicalFramesPerSequence\", \"maximumCadenceFps\", \"minimumInterFrameGapSeconds\"]\n );\n\n if (\n record.schemaVersion !==\n GENERIC_RELEASE_CAPABILITY_SCHEMA_VERSION\n ) {\n throw new InvalidConfigurationError(\n 'genericReleaseCapabilityProfile.schemaVersion must be \"' +\n GENERIC_RELEASE_CAPABILITY_SCHEMA_VERSION +\n '\".'\n );\n }\n if (\n record.scientificStatus !==\n \"approximation\"\n ) {\n throw new InvalidConfigurationError(\n 'genericReleaseCapabilityProfile.scientificStatus must be \"approximation\".'\n );\n }\n if (\n record.overlappingOrdinaryStillExposures !==\n false\n ) {\n throw new InvalidConfigurationError(\n \"genericReleaseCapabilityProfile.overlappingOrdinaryStillExposures must be false in schema 0.1.0.\"\n );\n }\n\n const exposureBracketing =\n requireRecord(\n record.exposureBracketing,\n \"genericReleaseCapabilityProfile.exposureBracketing\", [\"availability\", \"supportedAxes\"]\n );\n const focusBracketing =\n requireRecord(\n record.focusBracketing,\n \"genericReleaseCapabilityProfile.focusBracketing\", [\"availability\"]\n );\n\n const exposureAvailability =\n parseFact(\n exposureBracketing.availability,\n \"genericReleaseCapabilityProfile.exposureBracketing.availability\",\n parseAvailability\n );\n const axes =\n parseBracketAxes(\n exposureBracketing.supportedAxes,\n \"genericReleaseCapabilityProfile.exposureBracketing.supportedAxes\"\n );\n\n if (\n exposureAvailability.value !==\n \"supported\" &&\n axes.length > 0\n ) {\n throw new InvalidConfigurationError(\n \"Unsupported/unknown exposure bracketing must not declare supported axes.\"\n );\n }\n\n return {\n schemaVersion:\n GENERIC_RELEASE_CAPABILITY_SCHEMA_VERSION,\n profileId:\n requireNonEmptyString(\n record.profileId,\n \"genericReleaseCapabilityProfile.profileId\"\n ),\n profileVersion:\n requireNonEmptyString(\n record.profileVersion,\n \"genericReleaseCapabilityProfile.profileVersion\"\n ),\n scientificStatus:\n \"approximation\",\n evidence:\n parseEvidenceList(\n record.evidence,\n \"genericReleaseCapabilityProfile.evidence\"\n ),\n supportedDriveModes:\n parseFact(\n record.supportedDriveModes,\n \"genericReleaseCapabilityProfile.supportedDriveModes\",\n parseDriveModes\n ),\n maximumLogicalFramesPerSequence:\n parseFact(\n record.maximumLogicalFramesPerSequence,\n \"genericReleaseCapabilityProfile.maximumLogicalFramesPerSequence\",\n requirePositiveSafeInteger\n ),\n maximumCadenceFps:\n parseFact(\n record.maximumCadenceFps,\n \"genericReleaseCapabilityProfile.maximumCadenceFps\",\n requirePositiveFinite\n ),\n minimumInterFrameGapSeconds:\n parseFact(\n record.minimumInterFrameGapSeconds,\n \"genericReleaseCapabilityProfile.minimumInterFrameGapSeconds\",\n requireNonNegativeFinite\n ),\n overlappingOrdinaryStillExposures:\n false,\n exposureBracketing: {\n availability:\n exposureAvailability,\n supportedAxes: axes\n },\n focusBracketing: {\n availability:\n parseFact(\n focusBracketing.availability,\n \"genericReleaseCapabilityProfile.focusBracketing.availability\",\n parseAvailability\n )\n }\n };\n}\n"]}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
2
|
+
* Shutter-duration control. Turns a control setting (a timed value, Bulb or Time) into a concrete,
|
|
3
|
+
* positive elapsed duration, before the physical exposure is integrated.
|
|
4
|
+
*
|
|
5
|
+
* Bulb and Time are only control behaviours. Neither implies a shutter mechanism, an exposure-boundary
|
|
6
|
+
* layout, a tripod, a stabilization state, long-exposure noise reduction (NR) or a temperature model.
|
|
7
|
+
*
|
|
8
|
+
* The binding function puts a resolved duration into the capture exposure-window input. The existing
|
|
9
|
+
* shutter mechanism and opening/closing schedules are left as they are. Only the nominal duration, in
|
|
10
|
+
* seconds, is supplied.
|
|
11
|
+
* @see docs/USAGE.md for the equations, units, coordinate conventions, known blockers and support
|
|
12
|
+
* limits.
|
|
10
13
|
*/
|
|
11
14
|
import { type EvidenceProvenance } from "../core/evidence-provenance.js";
|
|
12
15
|
import type { CalculateCaptureExposureWindowsInput } from "../sensor/exposure-window.js";
|
|
@@ -53,20 +56,19 @@ export interface BindResolvedExposureDurationToCaptureExposureInput {
|
|
|
53
56
|
exposureWindowInput: Omit<CalculateCaptureExposureWindowsInput, "nominalExposureDurationSeconds">;
|
|
54
57
|
}
|
|
55
58
|
/**
|
|
56
|
-
*
|
|
57
|
-
* duration before physical exposure
|
|
59
|
+
* Turns a shutter-duration control setting into a concrete, positive elapsed
|
|
60
|
+
* duration, before the physical exposure is integrated.
|
|
58
61
|
*
|
|
59
|
-
* Bulb and Time are control
|
|
60
|
-
* mechanism, exposure-boundary
|
|
61
|
-
* exposure NR
|
|
62
|
+
* Bulb and Time are only control behaviours. Neither implies a shutter
|
|
63
|
+
* mechanism, an exposure-boundary layout, a tripod, a stabilization state,
|
|
64
|
+
* long-exposure noise reduction (NR) or a temperature model.
|
|
62
65
|
*/
|
|
63
66
|
export declare function resolveExposureDurationControl(control: ExposureDurationControl): ExposureDurationControlResolution;
|
|
64
67
|
/**
|
|
65
|
-
*
|
|
68
|
+
* Puts a resolved duration into the capture exposure-window input.
|
|
66
69
|
*
|
|
67
|
-
* The existing shutter mechanism
|
|
68
|
-
* Only the
|
|
70
|
+
* The existing shutter mechanism and opening/closing schedules are left as
|
|
71
|
+
* they are. Only the nominal duration, in seconds, is supplied.
|
|
69
72
|
*/
|
|
70
73
|
export declare function bindResolvedExposureDurationToCaptureExposureInput(input: BindResolvedExposureDurationToCaptureExposureInput): CalculateCaptureExposureWindowsInput;
|
|
71
74
|
export {};
|
|
72
|
-
//# sourceMappingURL=exposure-duration-control.d.ts.map
|