@photivra/engine 1.4.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1074) hide show
  1. package/CHANGELOG.md +401 -6
  2. package/CITATION.cff +1 -1
  3. package/NODE_SUPPORT.md +64 -12
  4. package/README.md +301 -182
  5. package/SECURITY.md +37 -28
  6. package/THIRD_PARTY.md +148 -4
  7. package/dist/camera/equivalent-focal-length.d.ts +13 -14
  8. package/dist/camera/equivalent-focal-length.js +15 -13
  9. package/dist/camera/equivalent-focal-length.js.map +1 -1
  10. package/dist/camera/field-of-view.d.ts +30 -19
  11. package/dist/camera/field-of-view.js +67 -18
  12. package/dist/camera/field-of-view.js.map +1 -1
  13. package/dist/camera/lens-projection.d.ts +170 -0
  14. package/dist/camera/lens-projection.js +444 -0
  15. package/dist/camera/lens-projection.js.map +1 -0
  16. package/dist/camera/projected-object-size.d.ts +10 -11
  17. package/dist/camera/projected-object-size.js +12 -10
  18. package/dist/camera/projected-object-size.js.map +1 -1
  19. package/dist/capture/capture-export-metadata.d.ts +9 -10
  20. package/dist/capture/capture-export-metadata.js +8 -5
  21. package/dist/capture/capture-export-metadata.js.map +1 -1
  22. package/dist/capture/dng-import.d.ts +91 -0
  23. package/dist/capture/dng-import.js +343 -0
  24. package/dist/capture/dng-import.js.map +1 -0
  25. package/dist/capture/environment-raw-producer.d.ts +37 -17
  26. package/dist/capture/environment-raw-producer.js +43 -19
  27. package/dist/capture/environment-raw-producer.js.map +1 -1
  28. package/dist/capture/export-jpeg.d.ts +35 -4
  29. package/dist/capture/export-jpeg.js +133 -47
  30. package/dist/capture/export-jpeg.js.map +1 -1
  31. package/dist/capture/export-tiff.d.ts +48 -24
  32. package/dist/capture/export-tiff.js +91 -31
  33. package/dist/capture/export-tiff.js.map +1 -1
  34. package/dist/capture/focus-control.d.ts +42 -65
  35. package/dist/capture/focus-control.js +56 -75
  36. package/dist/capture/focus-control.js.map +1 -1
  37. package/dist/capture/host-yield-cadence.d.ts +25 -0
  38. package/dist/capture/host-yield-cadence.js +25 -0
  39. package/dist/capture/host-yield-cadence.js.map +1 -0
  40. package/dist/capture/linear-encoding.d.ts +14 -12
  41. package/dist/capture/linear-encoding.js +14 -13
  42. package/dist/capture/linear-encoding.js.map +1 -1
  43. package/dist/capture/lossless-jpeg.d.ts +27 -0
  44. package/dist/capture/lossless-jpeg.js +237 -0
  45. package/dist/capture/lossless-jpeg.js.map +1 -0
  46. package/dist/capture/native-environment-lean.d.ts +227 -0
  47. package/dist/capture/native-environment-lean.js +974 -0
  48. package/dist/capture/native-environment-lean.js.map +1 -0
  49. package/dist/capture/native-environment-optical-stage.d.ts +97 -0
  50. package/dist/capture/native-environment-optical-stage.js +340 -0
  51. package/dist/capture/native-environment-optical-stage.js.map +1 -0
  52. package/dist/capture/native-environment-raw.d.ts +140 -6
  53. package/dist/capture/native-environment-raw.js +435 -34
  54. package/dist/capture/native-environment-raw.js.map +1 -1
  55. package/dist/capture/native-raw-development.d.ts +118 -5
  56. package/dist/capture/native-raw-development.js +224 -59
  57. package/dist/capture/native-raw-development.js.map +1 -1
  58. package/dist/capture/native-raw-dng.d.ts +60 -0
  59. package/dist/capture/native-raw-dng.js +167 -0
  60. package/dist/capture/native-raw-dng.js.map +1 -0
  61. package/dist/capture/native-raw.d.ts +67 -10
  62. package/dist/capture/native-raw.js +90 -24
  63. package/dist/capture/native-raw.js.map +1 -1
  64. package/dist/capture/packed-sensor-raw.d.ts +160 -0
  65. package/dist/capture/packed-sensor-raw.js +221 -0
  66. package/dist/capture/packed-sensor-raw.js.map +1 -0
  67. package/dist/capture/photographic-export.d.ts +58 -35
  68. package/dist/capture/photographic-export.js +177 -70
  69. package/dist/capture/photographic-export.js.map +1 -1
  70. package/dist/capture/raw-development-kernel.d.ts +52 -0
  71. package/dist/capture/raw-development-kernel.js +88 -0
  72. package/dist/capture/raw-development-kernel.js.map +1 -0
  73. package/dist/capture/raw-frame-limits.d.ts +7 -7
  74. package/dist/capture/raw-frame-limits.js +7 -6
  75. package/dist/capture/raw-frame-limits.js.map +1 -1
  76. package/dist/capture/raw-frame-reconstruction.d.ts +8 -9
  77. package/dist/capture/raw-frame-reconstruction.js +9 -8
  78. package/dist/capture/raw-frame-reconstruction.js.map +1 -1
  79. package/dist/capture/raw-white-level.d.ts +55 -0
  80. package/dist/capture/raw-white-level.js +165 -0
  81. package/dist/capture/raw-white-level.js.map +1 -0
  82. package/dist/capture/release-sequence.d.ts +5 -7
  83. package/dist/capture/release-sequence.js +15 -13
  84. package/dist/capture/release-sequence.js.map +1 -1
  85. package/dist/capture/sensor-raw-frame.d.ts +5 -6
  86. package/dist/capture/sensor-raw-frame.js +26 -9
  87. package/dist/capture/sensor-raw-frame.js.map +1 -1
  88. package/dist/capture/sensor-raw-producer.d.ts +21 -13
  89. package/dist/capture/sensor-raw-producer.js +86 -25
  90. package/dist/capture/sensor-raw-producer.js.map +1 -1
  91. package/dist/capture/simulated-capture.d.ts +15 -16
  92. package/dist/capture/simulated-capture.js +22 -12
  93. package/dist/capture/simulated-capture.js.map +1 -1
  94. package/dist/color/camera-color-matrix.d.ts +69 -0
  95. package/dist/color/camera-color-matrix.js +132 -0
  96. package/dist/color/camera-color-matrix.js.map +1 -0
  97. package/dist/color/capture-color.d.ts +17 -10
  98. package/dist/color/capture-color.js +50 -17
  99. package/dist/color/capture-color.js.map +1 -1
  100. package/dist/color/chromatic-adaptation.d.ts +63 -0
  101. package/dist/color/chromatic-adaptation.js +91 -0
  102. package/dist/color/chromatic-adaptation.js.map +1 -0
  103. package/dist/color/color-difference.d.ts +104 -0
  104. package/dist/color/color-difference.js +205 -0
  105. package/dist/color/color-difference.js.map +1 -0
  106. package/dist/color/color-matching-functions.d.ts +168 -0
  107. package/dist/color/color-matching-functions.js +309 -0
  108. package/dist/color/color-matching-functions.js.map +1 -0
  109. package/dist/color/colorimetry-math.d.ts +52 -0
  110. package/dist/color/colorimetry-math.js +144 -0
  111. package/dist/color/colorimetry-math.js.map +1 -0
  112. package/dist/color/gamut-mapping.d.ts +54 -0
  113. package/dist/color/gamut-mapping.js +107 -0
  114. package/dist/color/gamut-mapping.js.map +1 -0
  115. package/dist/color/illuminants.d.ts +182 -0
  116. package/dist/color/illuminants.js +434 -0
  117. package/dist/color/illuminants.js.map +1 -0
  118. package/dist/color/rgb-color-spaces.d.ts +79 -0
  119. package/dist/color/rgb-color-spaces.js +115 -0
  120. package/dist/color/rgb-color-spaces.js.map +1 -0
  121. package/dist/color/sensor-color-development.d.ts +33 -11
  122. package/dist/color/sensor-color-development.js +104 -30
  123. package/dist/color/sensor-color-development.js.map +1 -1
  124. package/dist/color/srgb-icc.d.ts +9 -2
  125. package/dist/color/srgb-icc.js +16 -5
  126. package/dist/color/srgb-icc.js.map +1 -1
  127. package/dist/color/srgb-transfer.d.ts +1 -2
  128. package/dist/color/srgb-transfer.js +1 -1
  129. package/dist/color/srgb-transfer.js.map +1 -1
  130. package/dist/color/white-balance.d.ts +68 -19
  131. package/dist/color/white-balance.js +168 -35
  132. package/dist/color/white-balance.js.map +1 -1
  133. package/dist/composition/image-formation-plan.d.ts +152 -128
  134. package/dist/composition/image-formation-plan.js +292 -138
  135. package/dist/composition/image-formation-plan.js.map +1 -1
  136. package/dist/composition/plan-consumer.d.ts +6 -7
  137. package/dist/composition/plan-consumer.js +14 -11
  138. package/dist/composition/plan-consumer.js.map +1 -1
  139. package/dist/core/calculation-result.d.ts +21 -14
  140. package/dist/core/calculation-result.js +209 -11
  141. package/dist/core/calculation-result.js.map +1 -1
  142. package/dist/core/canonical-json.d.ts +13 -8
  143. package/dist/core/canonical-json.js +34 -15
  144. package/dist/core/canonical-json.js.map +1 -1
  145. package/dist/core/configuration-error.d.ts +5 -4
  146. package/dist/core/configuration-error.js +5 -3
  147. package/dist/core/configuration-error.js.map +1 -1
  148. package/dist/core/evidence-provenance.d.ts +12 -12
  149. package/dist/core/evidence-provenance.js +10 -9
  150. package/dist/core/evidence-provenance.js.map +1 -1
  151. package/dist/core/image-formation.d.ts +11 -10
  152. package/dist/core/image-formation.js +11 -9
  153. package/dist/core/image-formation.js.map +1 -1
  154. package/dist/core/owned-data.d.ts +9 -17
  155. package/dist/core/owned-data.js +9 -16
  156. package/dist/core/owned-data.js.map +1 -1
  157. package/dist/core/portable-math.d.ts +15 -0
  158. package/dist/core/portable-math.js +56 -0
  159. package/dist/core/portable-math.js.map +1 -0
  160. package/dist/core/record-validation.d.ts +48 -9
  161. package/dist/core/record-validation.js +93 -19
  162. package/dist/core/record-validation.js.map +1 -1
  163. package/dist/core/scientific-assurance.d.ts +16 -14
  164. package/dist/core/scientific-assurance.js +22 -18
  165. package/dist/core/scientific-assurance.js.map +1 -1
  166. package/dist/core/spectral-composition.d.ts +13 -14
  167. package/dist/core/spectral-composition.js +30 -27
  168. package/dist/core/spectral-composition.js.map +1 -1
  169. package/dist/core/spectral.d.ts +5 -6
  170. package/dist/core/spectral.js +9 -7
  171. package/dist/core/spectral.js.map +1 -1
  172. package/dist/core/validation.d.ts +3 -6
  173. package/dist/core/validation.js +3 -5
  174. package/dist/core/validation.js.map +1 -1
  175. package/dist/core/version.d.ts +6 -6
  176. package/dist/core/version.js +6 -5
  177. package/dist/core/version.js.map +1 -1
  178. package/dist/equipment/exposure-capabilities.d.ts +10 -10
  179. package/dist/equipment/exposure-capabilities.js +40 -30
  180. package/dist/equipment/exposure-capabilities.js.map +1 -1
  181. package/dist/equipment/generic-tier-assets.d.ts +13 -6
  182. package/dist/equipment/generic-tier-assets.js +34 -15
  183. package/dist/equipment/generic-tier-assets.js.map +1 -1
  184. package/dist/equipment/generic-tier-presets.d.ts +5 -6
  185. package/dist/equipment/generic-tier-presets.js +15 -13
  186. package/dist/equipment/generic-tier-presets.js.map +1 -1
  187. package/dist/equipment/iso-capabilities.d.ts +21 -22
  188. package/dist/equipment/iso-capabilities.js +49 -44
  189. package/dist/equipment/iso-capabilities.js.map +1 -1
  190. package/dist/equipment/metering-capabilities.d.ts +5 -6
  191. package/dist/equipment/metering-capabilities.js +22 -19
  192. package/dist/equipment/metering-capabilities.js.map +1 -1
  193. package/dist/equipment/release-capabilities.d.ts +3 -4
  194. package/dist/equipment/release-capabilities.js +18 -14
  195. package/dist/equipment/release-capabilities.js.map +1 -1
  196. package/dist/exposure/exposure-duration-control.d.ts +19 -17
  197. package/dist/exposure/exposure-duration-control.js +27 -23
  198. package/dist/exposure/exposure-duration-control.js.map +1 -1
  199. package/dist/exposure/exposure-mode-resolver.d.ts +42 -39
  200. package/dist/exposure/exposure-mode-resolver.js +127 -82
  201. package/dist/exposure/exposure-mode-resolver.js.map +1 -1
  202. package/dist/exposure/exposure.d.ts +17 -16
  203. package/dist/exposure/exposure.js +22 -15
  204. package/dist/exposure/exposure.js.map +1 -1
  205. package/dist/exposure/flash-ttl.d.ts +135 -0
  206. package/dist/exposure/flash-ttl.js +193 -0
  207. package/dist/exposure/flash-ttl.js.map +1 -0
  208. package/dist/exposure/flash.d.ts +144 -36
  209. package/dist/exposure/flash.js +259 -59
  210. package/dist/exposure/flash.js.map +1 -1
  211. package/dist/exposure/metering-scene-radiance.d.ts +10 -10
  212. package/dist/exposure/metering-scene-radiance.js +42 -23
  213. package/dist/exposure/metering-scene-radiance.js.map +1 -1
  214. package/dist/exposure/metering-target.d.ts +8 -8
  215. package/dist/exposure/metering-target.js +30 -20
  216. package/dist/exposure/metering-target.js.map +1 -1
  217. package/dist/exposure/metering-temporal.d.ts +16 -15
  218. package/dist/exposure/metering-temporal.js +41 -19
  219. package/dist/exposure/metering-temporal.js.map +1 -1
  220. package/dist/exposure/metering.d.ts +64 -17
  221. package/dist/exposure/metering.js +159 -30
  222. package/dist/exposure/metering.js.map +1 -1
  223. package/dist/exposure/program-line.d.ts +5 -5
  224. package/dist/exposure/program-line.js +20 -13
  225. package/dist/exposure/program-line.js.map +1 -1
  226. package/dist/facade/camera-preset.d.ts +8 -0
  227. package/dist/facade/camera-preset.js +102 -0
  228. package/dist/facade/camera-preset.js.map +1 -0
  229. package/dist/facade/chart-radiance-batch.d.ts +57 -0
  230. package/dist/facade/chart-radiance-batch.js +121 -0
  231. package/dist/facade/chart-radiance-batch.js.map +1 -0
  232. package/dist/facade/chart-scenes.d.ts +177 -0
  233. package/dist/facade/chart-scenes.js +232 -0
  234. package/dist/facade/chart-scenes.js.map +1 -0
  235. package/dist/facade/host-yield.d.ts +7 -0
  236. package/dist/facade/host-yield.js +23 -0
  237. package/dist/facade/host-yield.js.map +1 -0
  238. package/dist/facade/scene-radiance.d.ts +117 -0
  239. package/dist/facade/scene-radiance.js +205 -0
  240. package/dist/facade/scene-radiance.js.map +1 -0
  241. package/dist/facade/simulate-capture.d.ts +284 -0
  242. package/dist/facade/simulate-capture.js +1026 -0
  243. package/dist/facade/simulate-capture.js.map +1 -0
  244. package/dist/gpu/chart-radiance-gpu.d.ts +17 -0
  245. package/dist/gpu/chart-radiance-gpu.js +176 -0
  246. package/dist/gpu/chart-radiance-gpu.js.map +1 -0
  247. package/dist/gpu/image-kernel-accelerator.d.ts +132 -0
  248. package/dist/gpu/image-kernel-accelerator.js +720 -0
  249. package/dist/gpu/image-kernel-accelerator.js.map +1 -0
  250. package/dist/gpu/image-kernel-execution.d.ts +92 -0
  251. package/dist/gpu/image-kernel-execution.js +84 -0
  252. package/dist/gpu/image-kernel-execution.js.map +1 -0
  253. package/dist/gpu/sensor-stage-gpu.d.ts +44 -0
  254. package/dist/gpu/sensor-stage-gpu.js +317 -0
  255. package/dist/gpu/sensor-stage-gpu.js.map +1 -0
  256. package/dist/gpu/temporal-sum-gpu.d.ts +23 -0
  257. package/dist/gpu/temporal-sum-gpu.js +150 -0
  258. package/dist/gpu/temporal-sum-gpu.js.map +1 -0
  259. package/dist/gpu/webgpu-runtime.d.ts +63 -0
  260. package/dist/gpu/webgpu-runtime.js +215 -0
  261. package/dist/gpu/webgpu-runtime.js.map +1 -0
  262. package/dist/gpu/wgsl-chart-kernel.d.ts +30 -0
  263. package/dist/gpu/wgsl-chart-kernel.js +165 -0
  264. package/dist/gpu/wgsl-chart-kernel.js.map +1 -0
  265. package/dist/gpu/wgsl-kernels.d.ts +53 -0
  266. package/dist/gpu/wgsl-kernels.js +365 -0
  267. package/dist/gpu/wgsl-kernels.js.map +1 -0
  268. package/dist/gpu/wgsl-sensor-kernel.d.ts +64 -0
  269. package/dist/gpu/wgsl-sensor-kernel.js +409 -0
  270. package/dist/gpu/wgsl-sensor-kernel.js.map +1 -0
  271. package/dist/index.d.ts +89 -25
  272. package/dist/index.js +59 -15
  273. package/dist/index.js.map +1 -1
  274. package/dist/motion/camera-rotation.d.ts +92 -40
  275. package/dist/motion/camera-rotation.js +84 -47
  276. package/dist/motion/camera-rotation.js.map +1 -1
  277. package/dist/motion/capture-rotation-inverse-mapping.d.ts +37 -34
  278. package/dist/motion/capture-rotation-inverse-mapping.js +32 -24
  279. package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -1
  280. package/dist/motion/capture-rotation-temporal-quadrature.d.ts +39 -35
  281. package/dist/motion/capture-rotation-temporal-quadrature.js +37 -28
  282. package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -1
  283. package/dist/motion/capture-rotation-trajectory.d.ts +32 -28
  284. package/dist/motion/capture-rotation-trajectory.js +36 -26
  285. package/dist/motion/capture-rotation-trajectory.js.map +1 -1
  286. package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts +23 -21
  287. package/dist/motion/capture-translation-parallax-temporal-quadrature.js +33 -14
  288. package/dist/motion/capture-translation-parallax-temporal-quadrature.js.map +1 -1
  289. package/dist/motion/extended-object-projection.d.ts +19 -16
  290. package/dist/motion/extended-object-projection.js +38 -18
  291. package/dist/motion/extended-object-projection.js.map +1 -1
  292. package/dist/motion/projected-motion.d.ts +18 -17
  293. package/dist/motion/projected-motion.js +25 -17
  294. package/dist/motion/projected-motion.js.map +1 -1
  295. package/dist/motion/temporal-exposure-sum.d.ts +55 -0
  296. package/dist/motion/temporal-exposure-sum.js +141 -0
  297. package/dist/motion/temporal-exposure-sum.js.map +1 -0
  298. package/dist/motion/video-sequence.d.ts +111 -0
  299. package/dist/motion/video-sequence.js +179 -0
  300. package/dist/motion/video-sequence.js.map +1 -0
  301. package/dist/optics/aperture.d.ts +14 -15
  302. package/dist/optics/aperture.js +13 -11
  303. package/dist/optics/aperture.js.map +1 -1
  304. package/dist/optics/atmospheric-haze.d.ts +83 -0
  305. package/dist/optics/atmospheric-haze.js +113 -0
  306. package/dist/optics/atmospheric-haze.js.map +1 -0
  307. package/dist/optics/brown-conrady-distortion.d.ts +116 -0
  308. package/dist/optics/brown-conrady-distortion.js +291 -0
  309. package/dist/optics/brown-conrady-distortion.js.map +1 -0
  310. package/dist/optics/circle-of-confusion.d.ts +10 -10
  311. package/dist/optics/circle-of-confusion.js +15 -11
  312. package/dist/optics/circle-of-confusion.js.map +1 -1
  313. package/dist/optics/complex-pupil-psf.d.ts +64 -33
  314. package/dist/optics/complex-pupil-psf.js +190 -98
  315. package/dist/optics/complex-pupil-psf.js.map +1 -1
  316. package/dist/optics/depth-of-field.d.ts +25 -15
  317. package/dist/optics/depth-of-field.js +67 -27
  318. package/dist/optics/depth-of-field.js.map +1 -1
  319. package/dist/optics/diffraction.d.ts +14 -13
  320. package/dist/optics/diffraction.js +14 -10
  321. package/dist/optics/diffraction.js.map +1 -1
  322. package/dist/optics/focus-breathing.d.ts +88 -27
  323. package/dist/optics/focus-breathing.js +114 -23
  324. package/dist/optics/focus-breathing.js.map +1 -1
  325. package/dist/optics/focus-state.d.ts +18 -18
  326. package/dist/optics/focus-state.js +21 -15
  327. package/dist/optics/focus-state.js.map +1 -1
  328. package/dist/optics/front-of-lens-filter.d.ts +45 -14
  329. package/dist/optics/front-of-lens-filter.js +259 -88
  330. package/dist/optics/front-of-lens-filter.js.map +1 -1
  331. package/dist/optics/illumination-vignetting.d.ts +16 -17
  332. package/dist/optics/illumination-vignetting.js +40 -17
  333. package/dist/optics/illumination-vignetting.js.map +1 -1
  334. package/dist/optics/irradiance-convolution.d.ts +59 -0
  335. package/dist/optics/irradiance-convolution.js +138 -0
  336. package/dist/optics/irradiance-convolution.js.map +1 -0
  337. package/dist/optics/lateral-chromatic-aberration.d.ts +33 -30
  338. package/dist/optics/lateral-chromatic-aberration.js +33 -23
  339. package/dist/optics/lateral-chromatic-aberration.js.map +1 -1
  340. package/dist/optics/lens-psf-kernels.d.ts +89 -0
  341. package/dist/optics/lens-psf-kernels.js +175 -0
  342. package/dist/optics/lens-psf-kernels.js.map +1 -0
  343. package/dist/optics/lens-psf-profile.d.ts +78 -46
  344. package/dist/optics/lens-psf-profile.js +335 -124
  345. package/dist/optics/lens-psf-profile.js.map +1 -1
  346. package/dist/optics/longitudinal-chromatic-aberration.d.ts +102 -0
  347. package/dist/optics/longitudinal-chromatic-aberration.js +210 -0
  348. package/dist/optics/longitudinal-chromatic-aberration.js.map +1 -0
  349. package/dist/optics/polygon-diffraction.d.ts +80 -23
  350. package/dist/optics/polygon-diffraction.js +130 -25
  351. package/dist/optics/polygon-diffraction.js.map +1 -1
  352. package/dist/optics/profile-contract.d.ts +5 -6
  353. package/dist/optics/profile-contract.js +14 -11
  354. package/dist/optics/profile-contract.js.map +1 -1
  355. package/dist/optics/psf-foundation.d.ts +23 -23
  356. package/dist/optics/psf-foundation.js +24 -21
  357. package/dist/optics/psf-foundation.js.map +1 -1
  358. package/dist/optics/pupil-vignetting.d.ts +118 -0
  359. package/dist/optics/pupil-vignetting.js +264 -0
  360. package/dist/optics/pupil-vignetting.js.map +1 -0
  361. package/dist/optics/radial-distortion.d.ts +34 -33
  362. package/dist/optics/radial-distortion.js +37 -30
  363. package/dist/optics/radial-distortion.js.map +1 -1
  364. package/dist/optics/scene-to-sensor-irradiance.d.ts +47 -33
  365. package/dist/optics/scene-to-sensor-irradiance.js +73 -45
  366. package/dist/optics/scene-to-sensor-irradiance.js.map +1 -1
  367. package/dist/optics/scene-to-sensor-quadrature.d.ts +23 -18
  368. package/dist/optics/scene-to-sensor-quadrature.js +16 -11
  369. package/dist/optics/scene-to-sensor-quadrature.js.map +1 -1
  370. package/dist/optics/sensor-aperture-rays.d.ts +20 -4
  371. package/dist/optics/sensor-aperture-rays.js +32 -14
  372. package/dist/optics/sensor-aperture-rays.js.map +1 -1
  373. package/dist/optics/sensor-environment-query.d.ts +81 -16
  374. package/dist/optics/sensor-environment-query.js +145 -12
  375. package/dist/optics/sensor-environment-query.js.map +1 -1
  376. package/dist/optics/sensor-psf-quadrature.d.ts +12 -10
  377. package/dist/optics/sensor-psf-quadrature.js +18 -11
  378. package/dist/optics/sensor-psf-quadrature.js.map +1 -1
  379. package/dist/optics/sensor-psf-support.d.ts +8 -6
  380. package/dist/optics/sensor-psf-support.js +8 -5
  381. package/dist/optics/sensor-psf-support.js.map +1 -1
  382. package/dist/optics/stray-light.d.ts +22 -19
  383. package/dist/optics/stray-light.js +18 -12
  384. package/dist/optics/stray-light.js.map +1 -1
  385. package/dist/optics/thin-lens.d.ts +10 -9
  386. package/dist/optics/thin-lens.js +12 -8
  387. package/dist/optics/thin-lens.js.map +1 -1
  388. package/dist/optics/zernike-wavefront.d.ts +154 -0
  389. package/dist/optics/zernike-wavefront.js +352 -0
  390. package/dist/optics/zernike-wavefront.js.map +1 -0
  391. package/dist/output/capture-corrected-sdr.d.ts +16 -8
  392. package/dist/output/capture-corrected-sdr.js +16 -8
  393. package/dist/output/capture-corrected-sdr.js.map +1 -1
  394. package/dist/output/capture-geometry.d.ts +34 -36
  395. package/dist/output/capture-geometry.js +52 -32
  396. package/dist/output/capture-geometry.js.map +1 -1
  397. package/dist/output/capture-sdr.d.ts +7 -6
  398. package/dist/output/capture-sdr.js +11 -8
  399. package/dist/output/capture-sdr.js.map +1 -1
  400. package/dist/output/crop.d.ts +22 -6
  401. package/dist/output/crop.js +40 -6
  402. package/dist/output/crop.js.map +1 -1
  403. package/dist/output/geometric-transforms.d.ts +60 -23
  404. package/dist/output/geometric-transforms.js +111 -24
  405. package/dist/output/geometric-transforms.js.map +1 -1
  406. package/dist/output/lens-corrections.d.ts +27 -19
  407. package/dist/output/lens-corrections.js +29 -13
  408. package/dist/output/lens-corrections.js.map +1 -1
  409. package/dist/output/native-capture-sdr.d.ts +71 -16
  410. package/dist/output/native-capture-sdr.js +190 -33
  411. package/dist/output/native-capture-sdr.js.map +1 -1
  412. package/dist/output/png-encoder.d.ts +65 -0
  413. package/dist/output/png-encoder.js +461 -0
  414. package/dist/output/png-encoder.js.map +1 -0
  415. package/dist/output/print-contrast-reference.d.ts +10 -9
  416. package/dist/output/print-contrast-reference.js +10 -8
  417. package/dist/output/print-contrast-reference.js.map +1 -1
  418. package/dist/output/print-detail.d.ts +18 -17
  419. package/dist/output/print-detail.js +12 -10
  420. package/dist/output/print-detail.js.map +1 -1
  421. package/dist/output/print-jpeg.d.ts +26 -5
  422. package/dist/output/print-jpeg.js +117 -50
  423. package/dist/output/print-jpeg.js.map +1 -1
  424. package/dist/output/print-plan.d.ts +19 -19
  425. package/dist/output/print-plan.js +11 -10
  426. package/dist/output/print-plan.js.map +1 -1
  427. package/dist/output/print-region-statistics.d.ts +14 -15
  428. package/dist/output/print-region-statistics.js +11 -11
  429. package/dist/output/print-region-statistics.js.map +1 -1
  430. package/dist/output/sdr-rendering.d.ts +48 -10
  431. package/dist/output/sdr-rendering.js +114 -25
  432. package/dist/output/sdr-rendering.js.map +1 -1
  433. package/dist/output/subject-framing-crop.d.ts +6 -10
  434. package/dist/output/subject-framing-crop.js +23 -13
  435. package/dist/output/subject-framing-crop.js.map +1 -1
  436. package/dist/processing/demosaic.d.ts +90 -0
  437. package/dist/processing/demosaic.js +275 -0
  438. package/dist/processing/demosaic.js.map +1 -0
  439. package/dist/processing/denoise.d.ts +68 -0
  440. package/dist/processing/denoise.js +214 -0
  441. package/dist/processing/denoise.js.map +1 -0
  442. package/dist/processing/focus-stacking.d.ts +17 -0
  443. package/dist/processing/focus-stacking.js +80 -0
  444. package/dist/processing/focus-stacking.js.map +1 -0
  445. package/dist/processing/hdr.d.ts +54 -0
  446. package/dist/processing/hdr.js +172 -0
  447. package/dist/processing/hdr.js.map +1 -0
  448. package/dist/processing/image-ops.d.ts +66 -0
  449. package/dist/processing/image-ops.js +192 -0
  450. package/dist/processing/image-ops.js.map +1 -0
  451. package/dist/processing/panorama.d.ts +51 -0
  452. package/dist/processing/panorama.js +305 -0
  453. package/dist/processing/panorama.js.map +1 -0
  454. package/dist/processing/processing-task.d.ts +85 -0
  455. package/dist/processing/processing-task.js +164 -0
  456. package/dist/processing/processing-task.js.map +1 -0
  457. package/dist/processing/tone-mapping.d.ts +69 -0
  458. package/dist/processing/tone-mapping.js +310 -0
  459. package/dist/processing/tone-mapping.js.map +1 -0
  460. package/dist/schema/camera.d.ts +5 -4
  461. package/dist/schema/illumination-spectral.d.ts +13 -19
  462. package/dist/schema/illumination-spectral.js +23 -19
  463. package/dist/schema/illumination-spectral.js.map +1 -1
  464. package/dist/schema/illumination-temporal.d.ts +12 -15
  465. package/dist/schema/illumination-temporal.js +43 -28
  466. package/dist/schema/illumination-temporal.js.map +1 -1
  467. package/dist/schema/illumination.d.ts +5 -4
  468. package/dist/schema/illumination.js +55 -20
  469. package/dist/schema/illumination.js.map +1 -1
  470. package/dist/schema/scene-radiance-temporal.d.ts +9 -11
  471. package/dist/schema/scene-radiance-temporal.js +26 -23
  472. package/dist/schema/scene-radiance-temporal.js.map +1 -1
  473. package/dist/schema/scene-radiance.d.ts +17 -17
  474. package/dist/schema/scene-radiance.js +56 -34
  475. package/dist/schema/scene-radiance.js.map +1 -1
  476. package/dist/schema/scene.d.ts +14 -13
  477. package/dist/schema/validation.d.ts +0 -1
  478. package/dist/schema/validation.js +17 -15
  479. package/dist/schema/validation.js.map +1 -1
  480. package/dist/sensor/accumulated-charge.d.ts +45 -64
  481. package/dist/sensor/accumulated-charge.js +41 -47
  482. package/dist/sensor/accumulated-charge.js.map +1 -1
  483. package/dist/sensor/architecture.d.ts +22 -25
  484. package/dist/sensor/architecture.js +17 -16
  485. package/dist/sensor/architecture.js.map +1 -1
  486. package/dist/sensor/camera-saturation-capacity.d.ts +21 -28
  487. package/dist/sensor/camera-saturation-capacity.js +36 -34
  488. package/dist/sensor/camera-saturation-capacity.js.map +1 -1
  489. package/dist/sensor/capture-color-sampling-binding.d.ts +46 -51
  490. package/dist/sensor/capture-color-sampling-binding.js +39 -41
  491. package/dist/sensor/capture-color-sampling-binding.js.map +1 -1
  492. package/dist/sensor/capture-mode-timing.d.ts +8 -9
  493. package/dist/sensor/capture-mode-timing.js +24 -21
  494. package/dist/sensor/capture-mode-timing.js.map +1 -1
  495. package/dist/sensor/capture-mode.d.ts +28 -30
  496. package/dist/sensor/capture-mode.js +33 -31
  497. package/dist/sensor/capture-mode.js.map +1 -1
  498. package/dist/sensor/color-sampling.d.ts +30 -33
  499. package/dist/sensor/color-sampling.js +32 -37
  500. package/dist/sensor/color-sampling.js.map +1 -1
  501. package/dist/sensor/constant-rate-temporal-integration.d.ts +19 -23
  502. package/dist/sensor/constant-rate-temporal-integration.js +28 -26
  503. package/dist/sensor/constant-rate-temporal-integration.js.map +1 -1
  504. package/dist/sensor/dark-current.d.ts +53 -49
  505. package/dist/sensor/dark-current.js +87 -46
  506. package/dist/sensor/dark-current.js.map +1 -1
  507. package/dist/sensor/environment-photo-signal.d.ts +71 -30
  508. package/dist/sensor/environment-photo-signal.js +127 -46
  509. package/dist/sensor/environment-photo-signal.js.map +1 -1
  510. package/dist/sensor/eqe-electron-rate.d.ts +14 -13
  511. package/dist/sensor/eqe-electron-rate.js +34 -14
  512. package/dist/sensor/eqe-electron-rate.js.map +1 -1
  513. package/dist/sensor/eqe-local-exposure.d.ts +24 -24
  514. package/dist/sensor/eqe-local-exposure.js +15 -11
  515. package/dist/sensor/eqe-local-exposure.js.map +1 -1
  516. package/dist/sensor/eqe-temporal-exposure.d.ts +11 -11
  517. package/dist/sensor/eqe-temporal-exposure.js +15 -10
  518. package/dist/sensor/eqe-temporal-exposure.js.map +1 -1
  519. package/dist/sensor/exposure-window.d.ts +48 -34
  520. package/dist/sensor/exposure-window.js +77 -36
  521. package/dist/sensor/exposure-window.js.map +1 -1
  522. package/dist/sensor/fixed-pattern-noise.d.ts +108 -0
  523. package/dist/sensor/fixed-pattern-noise.js +166 -0
  524. package/dist/sensor/fixed-pattern-noise.js.map +1 -0
  525. package/dist/sensor/iso-gain.d.ts +44 -0
  526. package/dist/sensor/iso-gain.js +119 -0
  527. package/dist/sensor/iso-gain.js.map +1 -0
  528. package/dist/sensor/iso-signal-chain.d.ts +25 -48
  529. package/dist/sensor/iso-signal-chain.js +52 -66
  530. package/dist/sensor/iso-signal-chain.js.map +1 -1
  531. package/dist/sensor/local-exposure-binding.d.ts +21 -21
  532. package/dist/sensor/local-exposure-binding.js +22 -18
  533. package/dist/sensor/local-exposure-binding.js.map +1 -1
  534. package/dist/sensor/optical-stack.d.ts +36 -40
  535. package/dist/sensor/optical-stack.js +34 -37
  536. package/dist/sensor/optical-stack.js.map +1 -1
  537. package/dist/sensor/photon-energy.d.ts +22 -28
  538. package/dist/sensor/photon-energy.js +42 -34
  539. package/dist/sensor/photon-energy.js.map +1 -1
  540. package/dist/sensor/physical-charge-capacity.d.ts +20 -30
  541. package/dist/sensor/physical-charge-capacity.js +35 -36
  542. package/dist/sensor/physical-charge-capacity.js.map +1 -1
  543. package/dist/sensor/pixel-pitch.d.ts +2 -3
  544. package/dist/sensor/pixel-pitch.js +4 -2
  545. package/dist/sensor/pixel-pitch.js.map +1 -1
  546. package/dist/sensor/radiometry-readiness.d.ts +13 -15
  547. package/dist/sensor/radiometry-readiness.js +20 -17
  548. package/dist/sensor/radiometry-readiness.js.map +1 -1
  549. package/dist/sensor/raw-readout.d.ts +173 -83
  550. package/dist/sensor/raw-readout.js +425 -160
  551. package/dist/sensor/raw-readout.js.map +1 -1
  552. package/dist/sensor/raw-reconstruction.d.ts +112 -44
  553. package/dist/sensor/raw-reconstruction.js +200 -47
  554. package/dist/sensor/raw-reconstruction.js.map +1 -1
  555. package/dist/sensor/readout-exposure-linkage.d.ts +103 -34
  556. package/dist/sensor/readout-exposure-linkage.js +125 -27
  557. package/dist/sensor/readout-exposure-linkage.js.map +1 -1
  558. package/dist/sensor/readout-timing.d.ts +43 -44
  559. package/dist/sensor/readout-timing.js +38 -30
  560. package/dist/sensor/readout-timing.js.map +1 -1
  561. package/dist/sensor/response-application-compatibility.d.ts +21 -28
  562. package/dist/sensor/response-application-compatibility.js +35 -34
  563. package/dist/sensor/response-application-compatibility.js.map +1 -1
  564. package/dist/sensor/response-operating-range.d.ts +26 -35
  565. package/dist/sensor/response-operating-range.js +40 -39
  566. package/dist/sensor/response-operating-range.js.map +1 -1
  567. package/dist/sensor/responsivity-photocurrent.d.ts +21 -29
  568. package/dist/sensor/responsivity-photocurrent.js +57 -40
  569. package/dist/sensor/responsivity-photocurrent.js.map +1 -1
  570. package/dist/sensor/sampling-aperture.d.ts +21 -25
  571. package/dist/sensor/sampling-aperture.js +29 -28
  572. package/dist/sensor/sampling-aperture.js.map +1 -1
  573. package/dist/sensor/scene-eqe-temporal-exposure.d.ts +14 -12
  574. package/dist/sensor/scene-eqe-temporal-exposure.js +13 -8
  575. package/dist/sensor/scene-eqe-temporal-exposure.js.map +1 -1
  576. package/dist/sensor/sensor-geometry.d.ts +28 -32
  577. package/dist/sensor/sensor-geometry.js +35 -20
  578. package/dist/sensor/sensor-geometry.js.map +1 -1
  579. package/dist/sensor/signal-noise.d.ts +14 -16
  580. package/dist/sensor/signal-noise.js +15 -13
  581. package/dist/sensor/signal-noise.js.map +1 -1
  582. package/dist/sensor/spatial-sample-reduction.d.ts +45 -60
  583. package/dist/sensor/spatial-sample-reduction.js +39 -48
  584. package/dist/sensor/spatial-sample-reduction.js.map +1 -1
  585. package/dist/sensor/spatial-sampling-quadrature.d.ts +46 -54
  586. package/dist/sensor/spatial-sampling-quadrature.js +31 -36
  587. package/dist/sensor/spatial-sampling-quadrature.js.map +1 -1
  588. package/dist/sensor/spatio-spectral-reduction.d.ts +32 -42
  589. package/dist/sensor/spatio-spectral-reduction.js +24 -29
  590. package/dist/sensor/spatio-spectral-reduction.js.map +1 -1
  591. package/dist/sensor/spectral-coverage.d.ts +6 -9
  592. package/dist/sensor/spectral-coverage.js +9 -6
  593. package/dist/sensor/spectral-coverage.js.map +1 -1
  594. package/dist/sensor/spectral-quadrature.d.ts +46 -60
  595. package/dist/sensor/spectral-quadrature.js +38 -48
  596. package/dist/sensor/spectral-quadrature.js.map +1 -1
  597. package/dist/sensor/spectral-response.d.ts +53 -41
  598. package/dist/sensor/spectral-response.js +80 -47
  599. package/dist/sensor/spectral-response.js.map +1 -1
  600. package/dist/sensor/stochastic-seed.d.ts +50 -0
  601. package/dist/sensor/stochastic-seed.js +123 -0
  602. package/dist/sensor/stochastic-seed.js.map +1 -0
  603. package/dist/sensor/temporal-eqe-sum.d.ts +2 -4
  604. package/dist/sensor/temporal-eqe-sum.js +5 -6
  605. package/dist/sensor/temporal-eqe-sum.js.map +1 -1
  606. package/dist/sensor/temporal-photo-signal.d.ts +5 -6
  607. package/dist/sensor/temporal-photo-signal.js +11 -10
  608. package/dist/sensor/temporal-photo-signal.js.map +1 -1
  609. package/dist/sensor/temporal-sample-binding.d.ts +1 -2
  610. package/dist/sensor/temporal-sample-binding.js +3 -3
  611. package/dist/sensor/temporal-sample-binding.js.map +1 -1
  612. package/dist/simulation/poc-simulation.d.ts +16 -16
  613. package/dist/simulation/poc-simulation.js +20 -15
  614. package/dist/simulation/poc-simulation.js.map +1 -1
  615. package/dist/stabilization/camera-shake.d.ts +42 -18
  616. package/dist/stabilization/camera-shake.js +43 -20
  617. package/dist/stabilization/camera-shake.js.map +1 -1
  618. package/dist/stabilization/system.d.ts +44 -41
  619. package/dist/stabilization/system.js +196 -108
  620. package/dist/stabilization/system.js.map +1 -1
  621. package/docs/AGENT_GUIDE.md +183 -0
  622. package/docs/API_REFERENCE.md +761 -2
  623. package/docs/QUICK_START.md +495 -0
  624. package/docs/USAGE.md +1719 -714
  625. package/docs/api/camera-equivalent-focal-length.md +6 -7
  626. package/docs/api/camera-field-of-view.md +16 -8
  627. package/docs/api/camera-lens-projection.md +246 -0
  628. package/docs/api/camera-projected-object-size.md +6 -5
  629. package/docs/api/capture-capture-export-metadata.md +10 -10
  630. package/docs/api/capture-dng-import.md +134 -0
  631. package/docs/api/capture-environment-raw-producer.md +17 -11
  632. package/docs/api/capture-export-jpeg.md +16 -0
  633. package/docs/api/capture-focus-control.md +25 -47
  634. package/docs/api/capture-linear-encoding.md +21 -12
  635. package/docs/api/capture-lossless-jpeg.md +49 -0
  636. package/docs/api/capture-native-environment-optical-stage.md +75 -0
  637. package/docs/api/capture-native-environment-raw.md +161 -4
  638. package/docs/api/capture-native-raw-development.md +69 -4
  639. package/docs/api/capture-native-raw-dng.md +84 -0
  640. package/docs/api/capture-native-raw.md +23 -8
  641. package/docs/api/capture-packed-sensor-raw.md +156 -0
  642. package/docs/api/capture-photographic-export.md +69 -31
  643. package/docs/api/capture-raw-frame-reconstruction.md +8 -8
  644. package/docs/api/capture-raw-white-level.md +37 -0
  645. package/docs/api/capture-release-sequence.md +6 -7
  646. package/docs/api/capture-sensor-raw-frame.md +6 -6
  647. package/docs/api/capture-sensor-raw-producer.md +17 -11
  648. package/docs/api/capture-simulated-capture.md +15 -15
  649. package/docs/api/color-camera-color-matrix.md +103 -0
  650. package/docs/api/color-capture-color.md +22 -11
  651. package/docs/api/color-chromatic-adaptation.md +82 -0
  652. package/docs/api/color-color-difference.md +134 -0
  653. package/docs/api/color-color-matching-functions.md +259 -0
  654. package/docs/api/color-colorimetry-math.md +54 -0
  655. package/docs/api/color-gamut-mapping.md +72 -0
  656. package/docs/api/color-illuminants.md +280 -0
  657. package/docs/api/color-rgb-color-spaces.md +151 -0
  658. package/docs/api/color-sensor-color-development.md +27 -0
  659. package/docs/api/color-srgb-icc.md +2 -4
  660. package/docs/api/color-white-balance.md +95 -19
  661. package/docs/api/composition-image-formation-plan.md +124 -95
  662. package/docs/api/composition-plan-consumer.md +7 -7
  663. package/docs/api/core-calculation-result.md +18 -14
  664. package/docs/api/core-configuration-error.md +1 -1
  665. package/docs/api/core-image-formation.md +7 -7
  666. package/docs/api/core-scientific-assurance.md +12 -10
  667. package/docs/api/core-spectral-composition.md +14 -14
  668. package/docs/api/core-spectral.md +6 -6
  669. package/docs/api/core-validation.md +3 -3
  670. package/docs/api/core-version.md +7 -6
  671. package/docs/api/equipment-exposure-capabilities.md +11 -10
  672. package/docs/api/equipment-generic-tier-assets.md +7 -2
  673. package/docs/api/equipment-generic-tier-presets.md +6 -6
  674. package/docs/api/equipment-iso-capabilities.md +18 -18
  675. package/docs/api/equipment-metering-capabilities.md +6 -6
  676. package/docs/api/equipment-release-capabilities.md +4 -4
  677. package/docs/api/exports.json +2213 -8
  678. package/docs/api/exposure-exposure-duration-control.md +9 -9
  679. package/docs/api/exposure-exposure-mode-resolver.md +35 -31
  680. package/docs/api/exposure-exposure.md +10 -10
  681. package/docs/api/exposure-flash-ttl.md +182 -0
  682. package/docs/api/exposure-flash.md +183 -28
  683. package/docs/api/exposure-metering-scene-radiance.md +11 -10
  684. package/docs/api/exposure-metering-target.md +9 -8
  685. package/docs/api/exposure-metering-temporal.md +8 -8
  686. package/docs/api/exposure-metering.md +69 -9
  687. package/docs/api/exposure-program-line.md +6 -5
  688. package/docs/api/facade-chart-radiance-batch.md +96 -0
  689. package/docs/api/facade-chart-scenes.md +240 -0
  690. package/docs/api/facade-scene-radiance.md +122 -0
  691. package/docs/api/facade-simulate-capture.md +324 -0
  692. package/docs/api/gpu-image-kernel-accelerator.md +157 -0
  693. package/docs/api/gpu-image-kernel-execution.md +152 -0
  694. package/docs/api/motion-camera-rotation.md +43 -26
  695. package/docs/api/motion-capture-rotation-inverse-mapping.md +24 -23
  696. package/docs/api/motion-capture-rotation-temporal-quadrature.md +22 -22
  697. package/docs/api/motion-capture-rotation-trajectory.md +15 -15
  698. package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +15 -14
  699. package/docs/api/motion-extended-object-projection.md +10 -8
  700. package/docs/api/motion-projected-motion.md +8 -8
  701. package/docs/api/motion-temporal-exposure-sum.md +98 -0
  702. package/docs/api/motion-video-sequence.md +159 -0
  703. package/docs/api/optics-aperture.md +8 -8
  704. package/docs/api/optics-atmospheric-haze.md +104 -0
  705. package/docs/api/optics-brown-conrady-distortion.md +123 -0
  706. package/docs/api/optics-circle-of-confusion.md +5 -4
  707. package/docs/api/optics-complex-pupil-psf.md +57 -16
  708. package/docs/api/optics-depth-of-field.md +12 -6
  709. package/docs/api/optics-diffraction.md +8 -7
  710. package/docs/api/optics-focus-breathing.md +104 -16
  711. package/docs/api/optics-focus-state.md +9 -10
  712. package/docs/api/optics-front-of-lens-filter.md +72 -14
  713. package/docs/api/optics-illumination-vignetting.md +10 -10
  714. package/docs/api/optics-irradiance-convolution.md +95 -0
  715. package/docs/api/optics-lateral-chromatic-aberration.md +22 -21
  716. package/docs/api/optics-lens-psf-kernels.md +72 -0
  717. package/docs/api/optics-lens-psf-profile.md +48 -26
  718. package/docs/api/optics-longitudinal-chromatic-aberration.md +128 -0
  719. package/docs/api/optics-polygon-diffraction.md +78 -13
  720. package/docs/api/optics-profile-contract.md +4 -4
  721. package/docs/api/optics-psf-foundation.md +12 -12
  722. package/docs/api/optics-pupil-vignetting.md +132 -0
  723. package/docs/api/optics-radial-distortion.md +12 -12
  724. package/docs/api/optics-scene-to-sensor-irradiance.md +25 -14
  725. package/docs/api/optics-scene-to-sensor-quadrature.md +15 -12
  726. package/docs/api/optics-sensor-aperture-rays.md +3 -2
  727. package/docs/api/optics-sensor-environment-query.md +52 -9
  728. package/docs/api/optics-sensor-psf-quadrature.md +13 -10
  729. package/docs/api/optics-stray-light.md +12 -11
  730. package/docs/api/optics-thin-lens.md +4 -3
  731. package/docs/api/optics-zernike-wavefront.md +229 -0
  732. package/docs/api/output-capture-corrected-sdr.md +10 -7
  733. package/docs/api/output-capture-geometry.md +35 -36
  734. package/docs/api/output-capture-sdr.md +4 -4
  735. package/docs/api/output-crop.md +7 -4
  736. package/docs/api/output-geometric-transforms.md +65 -19
  737. package/docs/api/output-lens-corrections.md +17 -15
  738. package/docs/api/output-native-capture-sdr.md +26 -13
  739. package/docs/api/output-png-encoder.md +105 -0
  740. package/docs/api/output-print-contrast-reference.md +8 -8
  741. package/docs/api/output-print-detail.md +14 -14
  742. package/docs/api/output-print-jpeg.md +22 -5
  743. package/docs/api/output-print-plan.md +18 -18
  744. package/docs/api/output-print-region-statistics.md +14 -14
  745. package/docs/api/output-sdr-rendering.md +52 -10
  746. package/docs/api/output-subject-framing-crop.md +5 -6
  747. package/docs/api/processing-demosaic.md +120 -0
  748. package/docs/api/processing-denoise.md +148 -0
  749. package/docs/api/processing-focus-stacking.md +41 -0
  750. package/docs/api/processing-hdr.md +113 -0
  751. package/docs/api/processing-panorama.md +82 -0
  752. package/docs/api/processing-processing-task.md +107 -0
  753. package/docs/api/processing-tone-mapping.md +142 -0
  754. package/docs/api/schema-camera.md +6 -4
  755. package/docs/api/schema-illumination-spectral.md +10 -11
  756. package/docs/api/schema-illumination-temporal.md +13 -15
  757. package/docs/api/schema-illumination.md +4 -4
  758. package/docs/api/schema-scene-radiance-temporal.md +10 -11
  759. package/docs/api/schema-scene-radiance.md +18 -17
  760. package/docs/api/schema-scene.md +9 -9
  761. package/docs/api/schema-validation.md +1 -1
  762. package/docs/api/sensor-accumulated-charge.md +12 -20
  763. package/docs/api/sensor-architecture.md +15 -16
  764. package/docs/api/sensor-camera-saturation-capacity.md +9 -11
  765. package/docs/api/sensor-capture-color-sampling-binding.md +47 -51
  766. package/docs/api/sensor-capture-mode-timing.md +9 -9
  767. package/docs/api/sensor-capture-mode.md +29 -30
  768. package/docs/api/sensor-color-sampling.md +31 -33
  769. package/docs/api/sensor-constant-rate-temporal-integration.md +10 -11
  770. package/docs/api/sensor-dark-current.md +30 -14
  771. package/docs/api/sensor-environment-photo-signal.md +13 -6
  772. package/docs/api/sensor-eqe-electron-rate.md +9 -8
  773. package/docs/api/sensor-eqe-local-exposure.md +18 -17
  774. package/docs/api/sensor-eqe-temporal-exposure.md +12 -11
  775. package/docs/api/sensor-exposure-window.md +24 -24
  776. package/docs/api/sensor-fixed-pattern-noise.md +104 -0
  777. package/docs/api/sensor-iso-gain.md +63 -0
  778. package/docs/api/sensor-iso-signal-chain.md +13 -22
  779. package/docs/api/sensor-local-exposure-binding.md +12 -13
  780. package/docs/api/sensor-optical-stack.md +37 -40
  781. package/docs/api/sensor-photon-energy.md +10 -11
  782. package/docs/api/sensor-physical-charge-capacity.md +8 -13
  783. package/docs/api/sensor-pixel-pitch.md +1 -1
  784. package/docs/api/sensor-radiometry-readiness.md +9 -9
  785. package/docs/api/sensor-raw-readout.md +118 -52
  786. package/docs/api/sensor-raw-reconstruction.md +97 -20
  787. package/docs/api/sensor-readout-exposure-linkage.md +120 -24
  788. package/docs/api/sensor-readout-timing.md +33 -35
  789. package/docs/api/sensor-response-application-compatibility.md +9 -11
  790. package/docs/api/sensor-response-operating-range.md +14 -18
  791. package/docs/api/sensor-responsivity-photocurrent.md +9 -12
  792. package/docs/api/sensor-sampling-aperture.md +22 -25
  793. package/docs/api/sensor-scene-eqe-temporal-exposure.md +9 -8
  794. package/docs/api/sensor-sensor-geometry.md +23 -24
  795. package/docs/api/sensor-signal-noise.md +10 -10
  796. package/docs/api/sensor-spatial-sample-reduction.md +27 -30
  797. package/docs/api/sensor-spatial-sampling-quadrature.md +37 -39
  798. package/docs/api/sensor-spatio-spectral-reduction.md +27 -29
  799. package/docs/api/sensor-spectral-coverage.md +5 -5
  800. package/docs/api/sensor-spectral-quadrature.md +33 -35
  801. package/docs/api/sensor-spectral-response.md +28 -16
  802. package/docs/api/sensor-temporal-photo-signal.md +6 -6
  803. package/docs/api/simulation-poc-simulation.md +17 -16
  804. package/docs/api/stabilization-camera-shake.md +29 -10
  805. package/docs/api/stabilization-system.md +25 -21
  806. package/docs/examples/production-request.json +3821 -2157
  807. package/docs/examples/simulate-capture.mjs +14 -0
  808. package/llms.txt +35 -0
  809. package/package.json +32 -12
  810. package/AGENTS.md +0 -674
  811. package/CONTRIBUTING.md +0 -76
  812. package/DCO +0 -33
  813. package/dist/camera/equivalent-focal-length.d.ts.map +0 -1
  814. package/dist/camera/field-of-view.d.ts.map +0 -1
  815. package/dist/camera/projected-object-size.d.ts.map +0 -1
  816. package/dist/capture/capture-export-metadata.d.ts.map +0 -1
  817. package/dist/capture/environment-raw-producer.d.ts.map +0 -1
  818. package/dist/capture/export-jpeg.d.ts.map +0 -1
  819. package/dist/capture/export-tiff.d.ts.map +0 -1
  820. package/dist/capture/focus-control.d.ts.map +0 -1
  821. package/dist/capture/linear-encoding.d.ts.map +0 -1
  822. package/dist/capture/native-environment-raw.d.ts.map +0 -1
  823. package/dist/capture/native-raw-development.d.ts.map +0 -1
  824. package/dist/capture/native-raw.d.ts.map +0 -1
  825. package/dist/capture/photographic-export.d.ts.map +0 -1
  826. package/dist/capture/raw-frame-limits.d.ts.map +0 -1
  827. package/dist/capture/raw-frame-reconstruction.d.ts.map +0 -1
  828. package/dist/capture/release-sequence.d.ts.map +0 -1
  829. package/dist/capture/sensor-raw-frame.d.ts.map +0 -1
  830. package/dist/capture/sensor-raw-producer.d.ts.map +0 -1
  831. package/dist/capture/simulated-capture.d.ts.map +0 -1
  832. package/dist/color/capture-color.d.ts.map +0 -1
  833. package/dist/color/sensor-color-development.d.ts.map +0 -1
  834. package/dist/color/srgb-icc.d.ts.map +0 -1
  835. package/dist/color/srgb-transfer.d.ts.map +0 -1
  836. package/dist/color/white-balance.d.ts.map +0 -1
  837. package/dist/composition/image-formation-plan.d.ts.map +0 -1
  838. package/dist/composition/plan-consumer.d.ts.map +0 -1
  839. package/dist/core/calculation-result.d.ts.map +0 -1
  840. package/dist/core/canonical-json.d.ts.map +0 -1
  841. package/dist/core/configuration-error.d.ts.map +0 -1
  842. package/dist/core/evidence-provenance.d.ts.map +0 -1
  843. package/dist/core/image-formation.d.ts.map +0 -1
  844. package/dist/core/owned-data.d.ts.map +0 -1
  845. package/dist/core/record-validation.d.ts.map +0 -1
  846. package/dist/core/scientific-assurance.d.ts.map +0 -1
  847. package/dist/core/spectral-composition.d.ts.map +0 -1
  848. package/dist/core/spectral.d.ts.map +0 -1
  849. package/dist/core/validation.d.ts.map +0 -1
  850. package/dist/core/version.d.ts.map +0 -1
  851. package/dist/equipment/exposure-capabilities.d.ts.map +0 -1
  852. package/dist/equipment/generic-tier-assets.d.ts.map +0 -1
  853. package/dist/equipment/generic-tier-presets.d.ts.map +0 -1
  854. package/dist/equipment/iso-capabilities.d.ts.map +0 -1
  855. package/dist/equipment/metering-capabilities.d.ts.map +0 -1
  856. package/dist/equipment/release-capabilities.d.ts.map +0 -1
  857. package/dist/exposure/exposure-duration-control.d.ts.map +0 -1
  858. package/dist/exposure/exposure-mode-resolver.d.ts.map +0 -1
  859. package/dist/exposure/exposure.d.ts.map +0 -1
  860. package/dist/exposure/flash.d.ts.map +0 -1
  861. package/dist/exposure/metering-scene-radiance.d.ts.map +0 -1
  862. package/dist/exposure/metering-target.d.ts.map +0 -1
  863. package/dist/exposure/metering-temporal.d.ts.map +0 -1
  864. package/dist/exposure/metering.d.ts.map +0 -1
  865. package/dist/exposure/program-line.d.ts.map +0 -1
  866. package/dist/index.d.ts.map +0 -1
  867. package/dist/motion/camera-rotation.d.ts.map +0 -1
  868. package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +0 -1
  869. package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +0 -1
  870. package/dist/motion/capture-rotation-trajectory.d.ts.map +0 -1
  871. package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts.map +0 -1
  872. package/dist/motion/extended-object-projection.d.ts.map +0 -1
  873. package/dist/motion/projected-motion.d.ts.map +0 -1
  874. package/dist/optics/aperture.d.ts.map +0 -1
  875. package/dist/optics/circle-of-confusion.d.ts.map +0 -1
  876. package/dist/optics/complex-pupil-psf.d.ts.map +0 -1
  877. package/dist/optics/depth-of-field.d.ts.map +0 -1
  878. package/dist/optics/diffraction.d.ts.map +0 -1
  879. package/dist/optics/focus-breathing.d.ts.map +0 -1
  880. package/dist/optics/focus-state.d.ts.map +0 -1
  881. package/dist/optics/front-of-lens-filter.d.ts.map +0 -1
  882. package/dist/optics/illumination-vignetting.d.ts.map +0 -1
  883. package/dist/optics/lateral-chromatic-aberration.d.ts.map +0 -1
  884. package/dist/optics/lens-psf-profile.d.ts.map +0 -1
  885. package/dist/optics/polygon-diffraction.d.ts.map +0 -1
  886. package/dist/optics/profile-contract.d.ts.map +0 -1
  887. package/dist/optics/psf-foundation.d.ts.map +0 -1
  888. package/dist/optics/radial-distortion.d.ts.map +0 -1
  889. package/dist/optics/scene-to-sensor-irradiance.d.ts.map +0 -1
  890. package/dist/optics/scene-to-sensor-quadrature.d.ts.map +0 -1
  891. package/dist/optics/sensor-aperture-rays.d.ts.map +0 -1
  892. package/dist/optics/sensor-environment-query.d.ts.map +0 -1
  893. package/dist/optics/sensor-psf-quadrature.d.ts.map +0 -1
  894. package/dist/optics/sensor-psf-support.d.ts.map +0 -1
  895. package/dist/optics/stray-light.d.ts.map +0 -1
  896. package/dist/optics/thin-lens.d.ts.map +0 -1
  897. package/dist/output/capture-corrected-sdr.d.ts.map +0 -1
  898. package/dist/output/capture-geometry.d.ts.map +0 -1
  899. package/dist/output/capture-sdr.d.ts.map +0 -1
  900. package/dist/output/crop.d.ts.map +0 -1
  901. package/dist/output/geometric-transforms.d.ts.map +0 -1
  902. package/dist/output/lens-corrections.d.ts.map +0 -1
  903. package/dist/output/native-capture-sdr.d.ts.map +0 -1
  904. package/dist/output/print-contrast-reference.d.ts.map +0 -1
  905. package/dist/output/print-detail.d.ts.map +0 -1
  906. package/dist/output/print-jpeg.d.ts.map +0 -1
  907. package/dist/output/print-plan.d.ts.map +0 -1
  908. package/dist/output/print-region-statistics.d.ts.map +0 -1
  909. package/dist/output/sdr-rendering.d.ts.map +0 -1
  910. package/dist/output/subject-framing-crop.d.ts.map +0 -1
  911. package/dist/schema/camera.d.ts.map +0 -1
  912. package/dist/schema/camera.js +0 -3
  913. package/dist/schema/camera.js.map +0 -1
  914. package/dist/schema/illumination-spectral.d.ts.map +0 -1
  915. package/dist/schema/illumination-temporal.d.ts.map +0 -1
  916. package/dist/schema/illumination.d.ts.map +0 -1
  917. package/dist/schema/scene-radiance-temporal.d.ts.map +0 -1
  918. package/dist/schema/scene-radiance.d.ts.map +0 -1
  919. package/dist/schema/scene.d.ts.map +0 -1
  920. package/dist/schema/scene.js +0 -3
  921. package/dist/schema/scene.js.map +0 -1
  922. package/dist/schema/validation.d.ts.map +0 -1
  923. package/dist/sensor/accumulated-charge.d.ts.map +0 -1
  924. package/dist/sensor/architecture.d.ts.map +0 -1
  925. package/dist/sensor/camera-saturation-capacity.d.ts.map +0 -1
  926. package/dist/sensor/capture-color-sampling-binding.d.ts.map +0 -1
  927. package/dist/sensor/capture-mode-timing.d.ts.map +0 -1
  928. package/dist/sensor/capture-mode.d.ts.map +0 -1
  929. package/dist/sensor/color-sampling.d.ts.map +0 -1
  930. package/dist/sensor/constant-rate-temporal-integration.d.ts.map +0 -1
  931. package/dist/sensor/dark-current.d.ts.map +0 -1
  932. package/dist/sensor/environment-photo-signal.d.ts.map +0 -1
  933. package/dist/sensor/eqe-electron-rate.d.ts.map +0 -1
  934. package/dist/sensor/eqe-local-exposure.d.ts.map +0 -1
  935. package/dist/sensor/eqe-temporal-exposure.d.ts.map +0 -1
  936. package/dist/sensor/exposure-window.d.ts.map +0 -1
  937. package/dist/sensor/iso-signal-chain.d.ts.map +0 -1
  938. package/dist/sensor/local-exposure-binding.d.ts.map +0 -1
  939. package/dist/sensor/optical-stack.d.ts.map +0 -1
  940. package/dist/sensor/photon-energy.d.ts.map +0 -1
  941. package/dist/sensor/physical-charge-capacity.d.ts.map +0 -1
  942. package/dist/sensor/pixel-pitch.d.ts.map +0 -1
  943. package/dist/sensor/radiometry-readiness.d.ts.map +0 -1
  944. package/dist/sensor/raw-readout.d.ts.map +0 -1
  945. package/dist/sensor/raw-reconstruction.d.ts.map +0 -1
  946. package/dist/sensor/readout-exposure-linkage.d.ts.map +0 -1
  947. package/dist/sensor/readout-timing.d.ts.map +0 -1
  948. package/dist/sensor/response-application-compatibility.d.ts.map +0 -1
  949. package/dist/sensor/response-operating-range.d.ts.map +0 -1
  950. package/dist/sensor/responsivity-photocurrent.d.ts.map +0 -1
  951. package/dist/sensor/sampling-aperture.d.ts.map +0 -1
  952. package/dist/sensor/scene-eqe-temporal-exposure.d.ts.map +0 -1
  953. package/dist/sensor/sensor-geometry.d.ts.map +0 -1
  954. package/dist/sensor/signal-noise.d.ts.map +0 -1
  955. package/dist/sensor/spatial-sample-reduction.d.ts.map +0 -1
  956. package/dist/sensor/spatial-sampling-quadrature.d.ts.map +0 -1
  957. package/dist/sensor/spatio-spectral-reduction.d.ts.map +0 -1
  958. package/dist/sensor/spectral-coverage.d.ts.map +0 -1
  959. package/dist/sensor/spectral-quadrature.d.ts.map +0 -1
  960. package/dist/sensor/spectral-response.d.ts.map +0 -1
  961. package/dist/sensor/temporal-eqe-sum.d.ts.map +0 -1
  962. package/dist/sensor/temporal-photo-signal.d.ts.map +0 -1
  963. package/dist/sensor/temporal-sample-binding.d.ts.map +0 -1
  964. package/dist/simulation/poc-simulation.d.ts.map +0 -1
  965. package/dist/stabilization/camera-shake.d.ts.map +0 -1
  966. package/dist/stabilization/system.d.ts.map +0 -1
  967. package/docs/API_STYLE.md +0 -235
  968. package/docs/ARCHITECTURE.md +0 -356
  969. package/docs/AUTOMATION_COORDINATION.md +0 -190
  970. package/docs/CAPTURE_COLOR.md +0 -25
  971. package/docs/CAPTURE_CORRECTED_SDR.md +0 -25
  972. package/docs/CAPTURE_EXPORT_METADATA.md +0 -27
  973. package/docs/CAPTURE_SDR.md +0 -22
  974. package/docs/DEVELOPERS.md +0 -68
  975. package/docs/DIGITAL_OPTICS_FOUNDATION.md +0 -69
  976. package/docs/ENVIRONMENT_RAW_CAPTURE.md +0 -208
  977. package/docs/EXPORT_ACCEPTANCE.md +0 -133
  978. package/docs/GENERIC_TIER_PRESETS.md +0 -269
  979. package/docs/GEOMETRIC_PREPARATION_REUSE.md +0 -141
  980. package/docs/IMAGE_FORMATION.md +0 -247
  981. package/docs/LINEAR_CAPTURE_ENCODING.md +0 -25
  982. package/docs/MOTION_AND_SIGNAL.md +0 -250
  983. package/docs/NATIVE_CAPTURE_SDR.md +0 -70
  984. package/docs/NATIVE_CAPTURE_SDR_REVIEW.md +0 -37
  985. package/docs/NATIVE_CAPTURE_SDR_VALIDATION.md +0 -34
  986. package/docs/NATIVE_RAW_AND_PRINT.md +0 -47
  987. package/docs/NUMERICAL_CORRECTNESS.md +0 -191
  988. package/docs/PERFORMANCE_BASELINE.md +0 -56
  989. package/docs/PHOTOGRAPHIC_EXPORT.md +0 -206
  990. package/docs/PHYSICS_FOUNDATION.md +0 -426
  991. package/docs/POC_API.md +0 -278
  992. package/docs/POC_PROJECTION_PLATFORM_REFERENCE.md +0 -12
  993. package/docs/POC_PROJECTION_REUSE.md +0 -124
  994. package/docs/PRINT_195_196_REVIEW.md +0 -93
  995. package/docs/PRINT_196_ENGINE_ACCEPTANCE.md +0 -45
  996. package/docs/PRINT_CONTRAST_REFERENCE.md +0 -43
  997. package/docs/PRINT_DETAIL_ASSESSMENT.md +0 -81
  998. package/docs/PRINT_DETAIL_JPEG_EVIDENCE.md +0 -36
  999. package/docs/PRINT_DETAIL_SDR_EVIDENCE.md +0 -29
  1000. package/docs/PRINT_DETAIL_VALIDATION.md +0 -36
  1001. package/docs/PRINT_PLANNING.md +0 -75
  1002. package/docs/PRINT_REGION_STATISTICS.md +0 -38
  1003. package/docs/PROCESSED_OUTPUT.md +0 -157
  1004. package/docs/PRODUCTION_COMPOSITION.md +0 -373
  1005. package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +0 -131
  1006. package/docs/PROVENANCE.md +0 -115
  1007. package/docs/PSF_FOUNDATION.md +0 -165
  1008. package/docs/RAW_FRAME_ENVELOPE.md +0 -56
  1009. package/docs/RAW_FRAME_RECONSTRUCTION.md +0 -30
  1010. package/docs/RELEASE_1_0.md +0 -66
  1011. package/docs/RELEASE_1_0_1.md +0 -61
  1012. package/docs/RELEASE_1_1_0.md +0 -25
  1013. package/docs/RELEASE_1_2_0.md +0 -51
  1014. package/docs/RELEASE_1_3_0.md +0 -15
  1015. package/docs/RELEASE_1_4_0.md +0 -23
  1016. package/docs/RELEASE_AUDIT.md +0 -39
  1017. package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +0 -298
  1018. package/docs/SCENE_SENSOR_QUADRATURE.md +0 -98
  1019. package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +0 -86
  1020. package/docs/SCIENTIFIC_ASSURANCE.md +0 -280
  1021. package/docs/SCIENTIFIC_CONFORMANCE.md +0 -83
  1022. package/docs/SDR_RENDERING.md +0 -33
  1023. package/docs/SENSOR_APERTURE_RAYS.md +0 -23
  1024. package/docs/SENSOR_ENVIRONMENT_QUERY.md +0 -86
  1025. package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +0 -104
  1026. package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +0 -74
  1027. package/docs/SENSOR_PSF_QUADRATURE.md +0 -90
  1028. package/docs/SENSOR_RAW_FRAME.md +0 -20
  1029. package/docs/SENSOR_RAW_PRODUCER.md +0 -77
  1030. package/docs/SIGNAL_CONFORMANCE.md +0 -23
  1031. package/docs/SIMULATED_CAPTURE.md +0 -65
  1032. package/docs/STABILIZATION.md +0 -234
  1033. package/docs/TEMPORAL_PHOTO_RAW.md +0 -83
  1034. package/docs/TIER_ACCEPTANCE.md +0 -129
  1035. package/docs/TIER_PRESET_ACCEPTANCE.md +0 -59
  1036. package/docs/V1_COMPOSITION_MAP.md +0 -123
  1037. package/docs/V1_HELPER_REUSE_REVIEW.md +0 -60
  1038. package/docs/V1_PERFORMANCE_DISPOSITION.md +0 -88
  1039. package/docs/benchmarks/2026-10-01-main-baseline.json +0 -694
  1040. package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +0 -2190
  1041. package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +0 -2423
  1042. package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +0 -210
  1043. package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +0 -187
  1044. package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +0 -756
  1045. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +0 -711
  1046. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +0 -711
  1047. package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +0 -885
  1048. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +0 -868
  1049. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +0 -868
  1050. package/docs/licenses/castleCSF-MIT.txt +0 -21
  1051. package/docs/validation/documentation-fragments.json +0 -212
  1052. package/docs/validation/native-capture-sdr-darwin-arm64-node26-review.jsonl +0 -4
  1053. package/docs/validation/native-capture-sdr-darwin-arm64.jsonl +0 -3
  1054. package/docs/validation/native-raw-print-2026-10-04/fractional-asymmetric-crop.jpg +0 -0
  1055. package/docs/validation/native-raw-print-2026-10-04/gray-ramp.jpg +0 -0
  1056. package/docs/validation/native-raw-print-2026-10-04/linear-area-checker.jpg +0 -0
  1057. package/docs/validation/native-raw-print-2026-10-04/manifest.json +0 -218
  1058. package/docs/validation/native-raw-print-2026-10-04/megapixel-native.jpg +0 -0
  1059. package/docs/validation/native-raw-print-2026-10-04/native-color.jpg +0 -0
  1060. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel-validation.json +0 -9
  1061. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json +0 -29
  1062. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.codes.u16le.gz +0 -0
  1063. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.jpg +0 -0
  1064. package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.rgb.gz +0 -0
  1065. package/docs/validation/native-raw-print-2026-10-04/srgb.icc +0 -0
  1066. package/docs/validation/native-raw-print-2026-10-04/validation.json +0 -41
  1067. package/docs/validation/print-196-candidate-capabilities.json +0 -28
  1068. package/docs/validation/print-196-candidate-evidence.json +0 -356
  1069. package/docs/validation/print-196-engine-acceptance.json +0 -81
  1070. package/docs/validation/print-detail-capabilities.json +0 -103
  1071. package/docs/validation/print-detail-jpeg-evidence.json +0 -116
  1072. package/docs/validation/print-detail-sdr-evidence.json +0 -81
  1073. package/docs/validation/release-audit-inventory.json +0 -1306
  1074. package/docs/validation/tier-acceptance-report-v1.json +0 -2538
@@ -1,23 +1,20 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  /**
3
- * Module boundary and integration notes.
4
- * Pack validated unsigned integer tag values into little-endian BYTE, SHORT or LONG payloads; reject
5
- * values outside the selected storage range.
6
- * Describe an internal BYTE/UNDEFINED tag using the supplied byte array. The payload is borrowed here;
7
- * the final TIFF packer copies it into its owned output buffer.
3
+ * Little-endian TIFF 6.0 writer used for DNG and Exif output: helpers that pack tag values, the Exif
4
+ * APP1 block for JPEG, and the TIFF file packer (IFD0, Exif IFD and an optional uncompressed strip).
8
5
  * @see docs/SIMULATED_CAPTURE.md for equations, coordinate/unit conventions, blockers and support
9
6
  * limits.
10
7
  */
11
8
  import { InvalidConfigurationError } from "../core/configuration-error.js";
12
9
  /**
13
- * Pack validated unsigned integer tag values into little-endian BYTE, SHORT or LONG payloads; reject
14
- * values outside the selected storage range.
15
- * @param id - number. See the linked contract for coordinate, unit and profile binding semantics.
16
- * @param type - 1 | 3 | 4. See the linked contract for coordinate, unit and profile binding semantics.
17
- * @param values - readonly number[]. See the linked contract for coordinate, unit and profile binding semantics.
18
- * @returns ExportTiffTag. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
10
+ * Packs unsigned integer tag values as little-endian BYTE, SHORT or LONG. A value outside the
11
+ * chosen type's range is rejected.
12
+ * @param id - TIFF tag number.
13
+ * @param type - TIFF field type: 1 BYTE, 3 SHORT or 4 LONG.
14
+ * @param values - Unsigned integer values.
15
+ * @returns The packed tag.
19
16
  *
20
- * @see docs/API_REFERENCE.md for the root export and exact type graph.
17
+ * @see docs/API_REFERENCE.md for the package export and its full type definitions.
21
18
  */
22
19
  export function exportTiffNumbers(id, type, values) {
23
20
  const size = type === 1 ? 1 : type === 3 ? 2 : 4, data = new Uint8Array(values.length * size), view = new DataView(data.buffer);
@@ -34,26 +31,26 @@ export function exportTiffNumbers(id, type, values) {
34
31
  return { id, type, count: values.length, data };
35
32
  }
36
33
  /**
37
- * Describe an internal BYTE/UNDEFINED tag using the supplied byte array. The payload is borrowed here;
38
- * the final TIFF packer copies it into its owned output buffer.
39
- * @param id - number. See the linked contract for coordinate, unit and profile binding semantics.
40
- * @param type - 1 | 7. See the linked contract for coordinate, unit and profile binding semantics.
41
- * @param data - Uint8Array. See the linked contract for coordinate, unit and profile binding semantics.
42
- * @returns ExportTiffTag. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
34
+ * Makes a BYTE or UNDEFINED tag from a byte array. The array is not copied here; the final TIFF
35
+ * packer copies it into its own output buffer.
36
+ * @param id - TIFF tag number.
37
+ * @param type - TIFF field type: 1 BYTE or 7 UNDEFINED.
38
+ * @param data - Tag bytes.
39
+ * @returns The tag, referring to `data`.
43
40
  *
44
- * @see docs/API_REFERENCE.md for the root export and exact type graph.
41
+ * @see docs/API_REFERENCE.md for the package export and its full type definitions.
45
42
  */
46
43
  export function exportTiffBytes(id, type, data) {
47
44
  return { id, type, count: data.length, data };
48
45
  }
49
46
  /**
50
- * Encode printable ASCII with the required NUL terminator; reject unsupported characters instead of
51
- * silent lossy replacement.
52
- * @param id - number. See the linked contract for coordinate, unit and profile binding semantics.
53
- * @param value - string. See the linked contract for coordinate, unit and profile binding semantics.
54
- * @returns ExportTiffTag. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
47
+ * Encodes printable ASCII text with the required NUL terminator. Any other character is rejected,
48
+ * rather than silently replaced.
49
+ * @param id - TIFF tag number.
50
+ * @param value - Printable ASCII text.
51
+ * @returns The packed ASCII tag.
55
52
  *
56
- * @see docs/API_REFERENCE.md for the root export and exact type graph.
53
+ * @see docs/API_REFERENCE.md for the package export and its full type definitions.
57
54
  */
58
55
  export function exportTiffAscii(id, value) {
59
56
  if (!/^[\x20-\x7e]*$/.test(value))
@@ -61,7 +58,7 @@ export function exportTiffAscii(id, value) {
61
58
  const data = new TextEncoder().encode(value + "\0");
62
59
  return { id, type: 2, count: data.length, data };
63
60
  }
64
- /** Bounded rational approximation; matrix/metadata precision is explicit, never silent overflow. */
61
+ /** Packs values as TIFF RATIONAL or SRATIONAL (fractions) with a power-of-ten denominator. A value that would overflow or lose all precision is rejected, never silently changed. */
65
62
  export function exportTiffRationals(id, signed, values) {
66
63
  const data = new Uint8Array(values.length * 8), view = new DataView(data.buffer);
67
64
  values.forEach((v, i) => {
@@ -78,7 +75,70 @@ export function exportTiffRationals(id, signed, values) {
78
75
  });
79
76
  return { id, type: signed ? 10 : 5, count: values.length, data };
80
77
  }
81
- /** Independently authored little-endian TIFF6 IFD0 + EXIF IFD, with optional uncompressed strip. */
78
+ /**
79
+ * IFD0 tags that Exif 2.32 (CIPA DC-008-2019, Table 17, "Compressed" column) marks J (carried by the JPEG
80
+ * markers instead) or N (not allowed) for a JPEG-compressed primary image.
81
+ */
82
+ const JPEG_EXIF_FORBIDDEN_IFD0 = new Set([256, 257, 258, 259, 262, 273, 277, 278, 279, 284, 513, 514, 530]);
83
+ /**
84
+ * Packs the Exif APP1 TIFF structure for a JPEG-compressed primary image, with every tag that Exif 2.32
85
+ * (CIPA DC-008-2019 §4.6.8, Tables 17 and 18, "Compressed" column) marks mandatory. Caller tags take
86
+ * priority. A missing mandatory tag gets the standard's own default:
87
+ *
88
+ * - IFD0 XResolution = YResolution = 72/1 and ResolutionUnit = 2 (inches). The standard says "When the image
89
+ * resolution is unknown, 72 [dpi] shall be designated"; this is the Exif convention for an unknown
90
+ * resolution, not a physical print-size claim. The three tags are written together or not at all.
91
+ * - IFD0 YCbCrPositioning = 1 (centered, the TIFF default; the baseline encoder codes 4:4:4, so no chroma
92
+ * siting is implied).
93
+ * - Exif ExifVersion "0232", FlashpixVersion "0100", ComponentsConfiguration 1 2 3 0 (Y Cb Cr),
94
+ * PixelXDimension/PixelYDimension = the coded image size.
95
+ *
96
+ * ColorSpace (40961) is mandatory but has no default, so the caller must supply it. Tags the standard marks
97
+ * J or N for compressed data (ImageWidth, Compression, StripOffsets, YCbCrSubSampling, ...) are rejected,
98
+ * and a caller PixelX/YDimension that disagrees with the coded size is rejected.
99
+ */
100
+ export function packExportJpegExif(main, exif, dimensions) {
101
+ const { pixelWidth, pixelHeight } = dimensions;
102
+ if (![pixelWidth, pixelHeight].every((v) => Number.isSafeInteger(v) && v >= 1 && v <= 65535))
103
+ throw new InvalidConfigurationError("Exif pixel dimensions require integers from 1 to 65535.");
104
+ if (main.some((t) => JPEG_EXIF_FORBIDDEN_IFD0.has(t.id) || t.id === 34665))
105
+ throw new InvalidConfigurationError("Exif IFD0 tag is not allowed for a JPEG-compressed primary image.");
106
+ const mainIds = new Set(main.map((t) => t.id)), exifIds = new Set(exif.map((t) => t.id));
107
+ const resolution = [282, 283, 296].filter((id) => mainIds.has(id)).length;
108
+ if (resolution !== 0 && resolution !== 3)
109
+ throw new InvalidConfigurationError("Exif XResolution, YResolution and ResolutionUnit must be written together.");
110
+ if (!exifIds.has(40961))
111
+ throw new InvalidConfigurationError("Exif ColorSpace is mandatory and has no default.");
112
+ for (const [id, value] of [[40962, pixelWidth], [40963, pixelHeight]]) {
113
+ const tag = exif.find((t) => t.id === id);
114
+ if (tag && (tag.count !== 1 || (tag.type === 3 ? new DataView(tag.data.buffer, tag.data.byteOffset).getUint16(0, true) : tag.type === 4 ? new DataView(tag.data.buffer, tag.data.byteOffset).getUint32(0, true) : -1) !== value)) {
115
+ throw new InvalidConfigurationError("Exif PixelX/YDimension must equal the coded JPEG size.");
116
+ }
117
+ }
118
+ const mainDefaults = [
119
+ ...(resolution === 0 ? [exportTiffRationals(282, false, [72]), exportTiffRationals(283, false, [72]), exportTiffNumbers(296, 3, [2])] : []),
120
+ ...(mainIds.has(531) ? [] : [exportTiffNumbers(531, 3, [1])])
121
+ ];
122
+ const exifDefaults = [
123
+ ...(exifIds.has(36864) ? [] : [exportTiffBytes(36864, 7, new TextEncoder().encode("0232"))]),
124
+ ...(exifIds.has(37121) ? [] : [exportTiffBytes(37121, 7, Uint8Array.of(1, 2, 3, 0))]),
125
+ ...(exifIds.has(40960) ? [] : [exportTiffBytes(40960, 7, new TextEncoder().encode("0100"))]),
126
+ ...(exifIds.has(40962) ? [] : [exportTiffNumbers(40962, 4, [pixelWidth])]),
127
+ ...(exifIds.has(40963) ? [] : [exportTiffNumbers(40963, 4, [pixelHeight])])
128
+ ];
129
+ return packExportTiff([...main, ...mainDefaults], [...exif, ...exifDefaults]);
130
+ }
131
+ /** Packs finite numbers as little-endian IEEE-754 doubles (TIFF type 12, DOUBLE). */
132
+ export function exportTiffDoubles(id, values) {
133
+ const data = new Uint8Array(values.length * 8), view = new DataView(data.buffer);
134
+ values.forEach((v, i) => {
135
+ if (!Number.isFinite(v))
136
+ throw new InvalidConfigurationError("TIFF double must be finite.");
137
+ view.setFloat64(i * 8, v, true);
138
+ });
139
+ return { id, type: 12, count: values.length, data };
140
+ }
141
+ /** Writes a little-endian TIFF 6.0 file: IFD0 plus an EXIF IFD, with an optional uncompressed strip. Written for this project. */
82
142
  export function packExportTiff(main, exif, pixels = new Uint8Array()) {
83
143
  const pointer = { ...exportTiffNumbers(34665, 4, [0]), pointer: "exif" };
84
144
  const lists = [[...main, pointer].sort((a, b) => a.id - b.id), [...exif].sort((a, b) => a.id - b.id)];
@@ -87,10 +147,10 @@ export function packExportTiff(main, exif, pixels = new Uint8Array()) {
87
147
  throw new InvalidConfigurationError("Duplicate/oversized TIFF directory.");
88
148
  }
89
149
  /**
90
- * Directories precede their out-of-line payloads. Four-byte alignment applies to
91
- * payload addresses; values up to four bytes stay in the directory slot. Pointer
92
- * placeholders are resolved only against this newly owned buffer, preventing a
93
- * caller-supplied address from becoming an external file/memory reference.
150
+ * Each directory comes before the tag data stored outside it. That data starts on
151
+ * four-byte boundaries; values of four bytes or fewer stay in the directory entry.
152
+ * Pointer placeholders are resolved only within this new buffer, so a caller-supplied
153
+ * address can never point to another file or memory.
94
154
  */
95
155
  const exifOffset = 8 + 2 + lists[0].length * 12 + 4;
96
156
  let cursor = exifOffset + 2 + lists[1].length * 12 + 4;
@@ -1 +1 @@
1
- {"version":3,"file":"export-tiff.js","sourceRoot":"","sources":["../../src/capture/export-tiff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"export-tiff.js","sourceRoot":"","sources":["../../src/capture/export-tiff.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Little-endian TIFF 6.0 writer used for DNG and Exif output: helpers that pack tag values, the Exif\n * APP1 block for JPEG, and the TIFF file packer (IFD0, Exif IFD and an optional uncompressed strip).\n * @see docs/SIMULATED_CAPTURE.md for equations, coordinate/unit conventions, blockers and support\n * limits.\n */\n\nimport { InvalidConfigurationError } from \"../core/configuration-error.js\";\n\n/** One packed TIFF tag (internal). Pointers are resolved only inside the buffer the packer returns. */\nexport interface ExportTiffTag { id: number; type: number; count: number; data: Uint8Array; pointer?: \"exif\" | \"pixels\" }\n/**\n * Packs unsigned integer tag values as little-endian BYTE, SHORT or LONG. A value outside the\n * chosen type's range is rejected.\n * @param id - TIFF tag number.\n * @param type - TIFF field type: 1 BYTE, 3 SHORT or 4 LONG.\n * @param values - Unsigned integer values.\n * @returns The packed tag.\n *\n * @see docs/API_REFERENCE.md for the package export and its full type definitions.\n */\nexport function exportTiffNumbers(id: number, type: 1 | 3 | 4, values: readonly number[]): ExportTiffTag {\n const size = type === 1 ? 1 : type === 3 ? 2 : 4, data = new Uint8Array(values.length*size), view = new DataView(data.buffer);\n values.forEach((v, i) => {\n if (!Number.isSafeInteger(v) || v < 0 || v > (type === 1 ? 255 : type === 3 ? 65535 : 4294967295)) throw new InvalidConfigurationError(\"TIFF integer is out of range.\");\n if (size === 1) view.setUint8(i, v); else if (size === 2) view.setUint16(i*size, v, true); else view.setUint32(i*size, v, true);\n });\n return { id, type, count: values.length, data };\n}\n/**\n * Makes a BYTE or UNDEFINED tag from a byte array. The array is not copied here; the final TIFF\n * packer copies it into its own output buffer.\n * @param id - TIFF tag number.\n * @param type - TIFF field type: 1 BYTE or 7 UNDEFINED.\n * @param data - Tag bytes.\n * @returns The tag, referring to `data`.\n *\n * @see docs/API_REFERENCE.md for the package export and its full type definitions.\n */\nexport function exportTiffBytes(id: number, type: 1 | 7, data: Uint8Array): ExportTiffTag {\n return { id, type, count: data.length, data };\n}\n/**\n * Encodes printable ASCII text with the required NUL terminator. Any other character is rejected,\n * rather than silently replaced.\n * @param id - TIFF tag number.\n * @param value - Printable ASCII text.\n * @returns The packed ASCII tag.\n *\n * @see docs/API_REFERENCE.md for the package export and its full type definitions.\n */\nexport function exportTiffAscii(id: number, value: string): ExportTiffTag {\n if (!/^[\\x20-\\x7e]*$/.test(value)) throw new InvalidConfigurationError(\"TIFF text requires printable ASCII.\");\n const data = new TextEncoder().encode(value+\"\\0\"); return { id, type: 2, count: data.length, data };\n}\n/** Packs values as TIFF RATIONAL or SRATIONAL (fractions) with a power-of-ten denominator. A value that would overflow or lose all precision is rejected, never silently changed. */\nexport function exportTiffRationals(id: number, signed: boolean, values: readonly number[]): ExportTiffTag {\n const data = new Uint8Array(values.length*8), view = new DataView(data.buffer);\n values.forEach((v, i) => {\n const limit = signed ? 2147483647 : 4294967295;\n const denominator = Math.min(1000000000, 10**Math.floor(Math.log10(limit/Math.max(1,Math.abs(v))))), numerator = Math.round(v*denominator);\n if (!Number.isFinite(v) || denominator < 1 || (!signed && v < 0) || Math.abs(numerator) > limit ||\n (v !== 0 && numerator === 0)) throw new InvalidConfigurationError(\"TIFF rational exceeds supported precision/range.\");\n if (signed) view.setInt32(i*8, numerator, true); else view.setUint32(i*8, numerator, true);\n view.setUint32(i*8+4, denominator, true);\n });\n return { id, type: signed ? 10 : 5, count: values.length, data };\n}\n/**\n * IFD0 tags that Exif 2.32 (CIPA DC-008-2019, Table 17, \"Compressed\" column) marks J (carried by the JPEG\n * markers instead) or N (not allowed) for a JPEG-compressed primary image.\n */\nconst JPEG_EXIF_FORBIDDEN_IFD0 = new Set([256, 257, 258, 259, 262, 273, 277, 278, 279, 284, 513, 514, 530]);\n/** Pixel dimensions that the compressed primary image's Exif IFD must record (PixelX/YDimension). */\nexport interface ExportJpegExifDimensions { pixelWidth: number; pixelHeight: number }\n/**\n * Packs the Exif APP1 TIFF structure for a JPEG-compressed primary image, with every tag that Exif 2.32\n * (CIPA DC-008-2019 §4.6.8, Tables 17 and 18, \"Compressed\" column) marks mandatory. Caller tags take\n * priority. A missing mandatory tag gets the standard's own default:\n *\n * - IFD0 XResolution = YResolution = 72/1 and ResolutionUnit = 2 (inches). The standard says \"When the image\n * resolution is unknown, 72 [dpi] shall be designated\"; this is the Exif convention for an unknown\n * resolution, not a physical print-size claim. The three tags are written together or not at all.\n * - IFD0 YCbCrPositioning = 1 (centered, the TIFF default; the baseline encoder codes 4:4:4, so no chroma\n * siting is implied).\n * - Exif ExifVersion \"0232\", FlashpixVersion \"0100\", ComponentsConfiguration 1 2 3 0 (Y Cb Cr),\n * PixelXDimension/PixelYDimension = the coded image size.\n *\n * ColorSpace (40961) is mandatory but has no default, so the caller must supply it. Tags the standard marks\n * J or N for compressed data (ImageWidth, Compression, StripOffsets, YCbCrSubSampling, ...) are rejected,\n * and a caller PixelX/YDimension that disagrees with the coded size is rejected.\n */\nexport function packExportJpegExif(main: readonly ExportTiffTag[], exif: readonly ExportTiffTag[], dimensions: ExportJpegExifDimensions): Uint8Array {\n const { pixelWidth, pixelHeight } = dimensions;\n if (![pixelWidth, pixelHeight].every((v) => Number.isSafeInteger(v) && v >= 1 && v <= 65535)) throw new InvalidConfigurationError(\"Exif pixel dimensions require integers from 1 to 65535.\");\n if (main.some((t) => JPEG_EXIF_FORBIDDEN_IFD0.has(t.id) || t.id === 34665)) throw new InvalidConfigurationError(\"Exif IFD0 tag is not allowed for a JPEG-compressed primary image.\");\n const mainIds = new Set(main.map((t) => t.id)), exifIds = new Set(exif.map((t) => t.id));\n const resolution = [282, 283, 296].filter((id) => mainIds.has(id)).length;\n if (resolution !== 0 && resolution !== 3) throw new InvalidConfigurationError(\"Exif XResolution, YResolution and ResolutionUnit must be written together.\");\n if (!exifIds.has(40961)) throw new InvalidConfigurationError(\"Exif ColorSpace is mandatory and has no default.\");\n for (const [id, value] of [[40962, pixelWidth], [40963, pixelHeight]] as const) {\n const tag = exif.find((t) => t.id === id);\n if (tag && (tag.count !== 1 || (tag.type === 3 ? new DataView(tag.data.buffer, tag.data.byteOffset).getUint16(0, true) : tag.type === 4 ? new DataView(tag.data.buffer, tag.data.byteOffset).getUint32(0, true) : -1) !== value)) {\n throw new InvalidConfigurationError(\"Exif PixelX/YDimension must equal the coded JPEG size.\");\n }\n }\n const mainDefaults: ExportTiffTag[] = [\n ...(resolution === 0 ? [exportTiffRationals(282, false, [72]), exportTiffRationals(283, false, [72]), exportTiffNumbers(296, 3, [2])] : []),\n ...(mainIds.has(531) ? [] : [exportTiffNumbers(531, 3, [1])])\n ];\n const exifDefaults: ExportTiffTag[] = [\n ...(exifIds.has(36864) ? [] : [exportTiffBytes(36864, 7, new TextEncoder().encode(\"0232\"))]),\n ...(exifIds.has(37121) ? [] : [exportTiffBytes(37121, 7, Uint8Array.of(1, 2, 3, 0))]),\n ...(exifIds.has(40960) ? [] : [exportTiffBytes(40960, 7, new TextEncoder().encode(\"0100\"))]),\n ...(exifIds.has(40962) ? [] : [exportTiffNumbers(40962, 4, [pixelWidth])]),\n ...(exifIds.has(40963) ? [] : [exportTiffNumbers(40963, 4, [pixelHeight])])\n ];\n return packExportTiff([...main, ...mainDefaults], [...exif, ...exifDefaults]);\n}\n/** Packs finite numbers as little-endian IEEE-754 doubles (TIFF type 12, DOUBLE). */\nexport function exportTiffDoubles(id: number, values: readonly number[]): ExportTiffTag {\n const data = new Uint8Array(values.length*8), view = new DataView(data.buffer);\n values.forEach((v, i) => {\n if (!Number.isFinite(v)) throw new InvalidConfigurationError(\"TIFF double must be finite.\");\n view.setFloat64(i*8, v, true);\n });\n return { id, type: 12, count: values.length, data };\n}\n/** Writes a little-endian TIFF 6.0 file: IFD0 plus an EXIF IFD, with an optional uncompressed strip. Written for this project. */\nexport function packExportTiff(main: readonly ExportTiffTag[], exif: readonly ExportTiffTag[], pixels = new Uint8Array()): Uint8Array {\n const pointer: ExportTiffTag = { ...exportTiffNumbers(34665, 4, [0]), pointer: \"exif\" };\n const lists = [[...main, pointer].sort((a,b) => a.id-b.id), [...exif].sort((a,b) => a.id-b.id)];\n for (const tags of lists) {\n if (tags.length > 128 || new Set(tags.map((t) => t.id)).size !== tags.length) throw new InvalidConfigurationError(\"Duplicate/oversized TIFF directory.\");\n }\n/**\n * Each directory comes before the tag data stored outside it. That data starts on\n * four-byte boundaries; values of four bytes or fewer stay in the directory entry.\n * Pointer placeholders are resolved only within this new buffer, so a caller-supplied\n * address can never point to another file or memory.\n */\n const exifOffset = 8+2+lists[0]!.length*12+4;\n let cursor = exifOffset+2+lists[1]!.length*12+4;\n const offsets = new Map<ExportTiffTag, number>();\n for (const tags of lists) for (const t of tags) {\n if (t.data.length > 4) { cursor = (cursor+3)&~3; offsets.set(t,cursor); cursor += t.data.length; }\n }\n const pixelOffset = (cursor+3)&~3, result = new Uint8Array(pixelOffset+pixels.length), view = new DataView(result.buffer);\n result.set([73,73,42,0,8,0,0,0]);\n lists.forEach((tags, directory) => {\n const base = directory === 0 ? 8 : exifOffset; view.setUint16(base,tags.length,true);\n tags.forEach((t,i) => {\n const p = base+2+i*12; view.setUint16(p,t.id,true); view.setUint16(p+2,t.type,true); view.setUint32(p+4,t.count,true);\n if (t.pointer) view.setUint32(p+8,t.pointer === \"exif\" ? exifOffset : pixelOffset,true);\n else if (t.data.length <= 4) result.set(t.data,p+8);\n else { view.setUint32(p+8,offsets.get(t)!,true); result.set(t.data,offsets.get(t)!); }\n });\n });\n result.set(pixels,pixelOffset); return result;\n}\n"]}
@@ -29,8 +29,8 @@ interface FocusTargetObservationBase {
29
29
  export type FocusTargetObservation = (FocusTargetObservationBase & {
30
30
  kind: "finite-surface";
31
31
  /**
32
- * Longitudinal camera-space/conjugate distance from #103, not renderer
33
- * ray length.
32
+ * Distance along the camera's optical axis (the same convention as
33
+ * FocusPlane), not the renderer's ray length to the point.
34
34
  */
35
35
  longitudinalDistanceM: number;
36
36
  }) | (FocusTargetObservationBase & {
@@ -40,11 +40,12 @@ export type FocusTargetObservation = (FocusTargetObservationBase & {
40
40
  reason: FocusTargetLossReason;
41
41
  });
42
42
  /**
43
- * Immutable logical MF/single-AF/continuous-AF state. Resolved focus remains a
44
- * finite longitudinal distance in metres or explicit infinity. Acquisition, loss,
45
- * reacquisition and lock records explain why a target is usable; a focus-release
46
- * gate remains separate from shutter sequencing. The ideal actuator does not model
47
- * commercial AF measurement accuracy or physical acquisition time.
43
+ * Immutable focus-controller state for MF, AF-S or AF-C.
44
+ *
45
+ * The resolved focus is a finite distance along the optical axis in metres, or infinity.
46
+ * Acquisition, loss, reacquisition and lock records explain why a target can be used. The
47
+ * focus-release check is separate from shutter sequencing. The ideal actuator does not model
48
+ * real AF accuracy or the physical time focusing takes.
48
49
  */
49
50
  export interface FocusControlState {
50
51
  version: typeof FOCUS_CONTROL_STATE_VERSION;
@@ -124,87 +125,63 @@ export interface FocusReleaseGateAssessment {
124
125
  exposureModified: false;
125
126
  }
126
127
  /**
127
- * Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
128
- * missing required fields and incompatible scientific data fail at this boundary.
128
+ * Validates an untrusted focus-control profile and returns it normalized. Unknown enum values,
129
+ * missing required fields and inconsistent scientific data are rejected.
129
130
  *
130
- * Focus is a longitudinal plane or explicit infinity state, never a screen-space distance. The ideal
131
- * actuator resolves supplied target observations; it does not infer a commercial AF sensor, focus-ring
132
- * scale or acquisition latency. Target loss, reacquisition, focus lock and release priority remain
133
- * separate state transitions.
134
- * @param value - unknown. Treated as untrusted data; static typing alone is not validation.
135
- * @returns FocusControlProfile. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
131
+ * Focus is a distance along the optical axis or infinity, never a distance on screen. The ideal
132
+ * actuator focuses on the target observations it is given. It does not model a real AF sensor, a
133
+ * focus-ring scale or focusing time.
134
+ * @param value - Untrusted data. TypeScript types alone are not validation.
135
+ * @returns The validated profile. Success does not imply calibration.
136
136
  *
137
- * @see docs/API_REFERENCE.md for the root export and exact type graph.
137
+ * @see docs/API_REFERENCE.md for the package export and its full type definitions.
138
138
  */
139
139
  export declare function parseFocusControlProfile(value: unknown): FocusControlProfile;
140
140
  /**
141
- * Create the initial ideal focus-controller state from an explicit profile, focus plane and public
142
- * state identity.
143
- *
144
- * Focus is a longitudinal plane or explicit infinity state, never a screen-space distance. The ideal
145
- * actuator resolves supplied target observations; it does not infer a commercial AF sensor, focus-ring
146
- * scale or acquisition latency. Target loss, reacquisition, focus lock and release priority remain
147
- * separate state transitions.
148
- * @param input - CreateFocusControlStateInput. See the linked contract for coordinate, unit and profile binding semantics.
149
- * @returns FocusControlState. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
141
+ * Creates the initial ideal focus-controller state from a profile, a focus plane and a public
142
+ * state ID.
143
+ * @param input - New state ID, profile, focus mode, initial focus plane and optional start time.
144
+ * @returns The initial state. Success does not imply calibration.
150
145
  *
151
- * @see docs/API_REFERENCE.md for the root export and exact type graph.
146
+ * @see docs/API_REFERENCE.md for the package export and its full type definitions.
152
147
  */
153
148
  export declare function createFocusControlState(input: CreateFocusControlStateInput): FocusControlState;
154
149
  /**
155
- * Return a manual focus transition to the supplied finite/infinity plane without inventing a lens
156
- * actuator or focus-ring conversion.
157
- *
158
- * Focus is a longitudinal plane or explicit infinity state, never a screen-space distance. The ideal
159
- * actuator resolves supplied target observations; it does not infer a commercial AF sensor, focus-ring
160
- * scale or acquisition latency. Target loss, reacquisition, focus lock and release priority remain
161
- * separate state transitions.
162
- * @param input - SetManualFocusStateInput. See the linked contract for coordinate, unit and profile binding semantics.
163
- * @returns FocusControlState. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
150
+ * Returns the state after manually focusing on the given finite or infinity plane. No lens
151
+ * actuator or focus-ring conversion is modelled.
152
+ * @param input - Current state, new state ID, new focus plane and event time.
153
+ * @returns The new state. Success does not imply calibration.
164
154
  *
165
- * @see docs/API_REFERENCE.md for the root export and exact type graph.
155
+ * @see docs/API_REFERENCE.md for the package export and its full type definitions.
166
156
  */
167
157
  export declare function setManualFocusState(input: SetManualFocusStateInput): FocusControlState;
168
158
  /**
169
- * Resolve an explicit available/lost target observation under the selected single/continuous AF
170
- * policy, retaining acquisition and reacquisition disposition.
159
+ * Applies one target observation (target available or lost) under the selected AF-S or AF-C
160
+ * policy, and records whether the target was acquired or reacquired.
171
161
  *
172
- * Focus is a longitudinal plane or explicit infinity state, never a screen-space distance. The ideal
173
- * actuator resolves supplied target observations; it does not infer a commercial AF sensor, focus-ring
174
- * scale or acquisition latency. Target loss, reacquisition, focus lock and release priority remain
175
- * separate state transitions.
176
- * @param input - ResolveFocusTargetObservationInput. See the linked contract for coordinate, unit and profile binding semantics.
177
- * @returns FocusTargetResolution. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
162
+ * The ideal actuator focuses on the observation as given. Target loss, reacquisition, focus
163
+ * lock and release priority are separate state changes.
164
+ * @param input - Current state, new state ID, control event and target observation.
165
+ * @returns The resolution and new state. Success does not imply calibration.
178
166
  *
179
- * @see docs/API_REFERENCE.md for the root export and exact type graph.
167
+ * @see docs/API_REFERENCE.md for the package export and its full type definitions.
180
168
  */
181
169
  export declare function resolveFocusTargetObservation(input: ResolveFocusTargetObservationInput): FocusTargetResolution;
182
170
  /**
183
- * Return an explicit lock/unlock transition without changing the underlying physical focus plane.
171
+ * Locks or unlocks focus. The physical focus plane does not change.
172
+ * @param input - Current state, new state ID, lock setting and event time.
173
+ * @returns The new state. Success does not imply calibration.
184
174
  *
185
- * Focus is a longitudinal plane or explicit infinity state, never a screen-space distance. The ideal
186
- * actuator resolves supplied target observations; it does not infer a commercial AF sensor, focus-ring
187
- * scale or acquisition latency. Target loss, reacquisition, focus lock and release priority remain
188
- * separate state transitions.
189
- * @param input - SetFocusLockInput. See the linked contract for coordinate, unit and profile binding semantics.
190
- * @returns FocusControlState. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
191
- *
192
- * @see docs/API_REFERENCE.md for the root export and exact type graph.
175
+ * @see docs/API_REFERENCE.md for the package export and its full type definitions.
193
176
  */
194
177
  export declare function setFocusLock(input: SetFocusLockInput): FocusControlState;
195
178
  /**
196
- * Report whether release may proceed under focus-priority or release-priority policy; this does not
197
- * operate a shutter.
198
- *
199
- * Focus is a longitudinal plane or explicit infinity state, never a screen-space distance. The ideal
200
- * actuator resolves supplied target observations; it does not infer a commercial AF sensor, focus-ring
201
- * scale or acquisition latency. Target loss, reacquisition, focus lock and release priority remain
202
- * separate state transitions.
203
- * @param input - AssessFocusReleaseGateInput. See the linked contract for coordinate, unit and profile binding semantics.
204
- * @returns FocusReleaseGateAssessment. Read structured blockers before consuming an authorization.
179
+ * Reports whether the shutter may be released under the focus-priority or release-priority
180
+ * policy. It does not operate the shutter.
181
+ * @param input - Current state, profile and release priority.
182
+ * @returns The assessment. Read its structured blockers before acting on an authorization.
205
183
  *
206
- * @see docs/API_REFERENCE.md for the root export and exact type graph.
184
+ * @see docs/API_REFERENCE.md for the package export and its full type definitions.
207
185
  */
208
186
  export declare function assessFocusReleaseGate(input: AssessFocusReleaseGateInput): FocusReleaseGateAssessment;
209
187
  export {};
210
- //# sourceMappingURL=focus-control.d.ts.map