clone

a photo toolkit for your phone that never uploads: fuji film looks for raw files, social crops, error level analysis

main
gudpics / NOTICE.md
NOTICE.md 4.4K rendered
1# gud.pics — source, licenses, and changes23Independent browser prototype. Not affiliated with or endorsed by darktable or Adobe.45## Source provenance67Vendored darktable revision: `0286264e169eec79ce8d3744d6e477dcb18d9d94`.8Repository: https://github.com/darktable-org/darktable910- `native/upstream/ashift.c`: darktable developers, GPL-3.0-or-later.11- `native/upstream/ashift_lsd.c`: darktable integration, GPL-3.0-or-later; embedded LSD 1.6 by Rafael Grompone von Gioi et al., AGPL-3.0-or-later.12- `native/upstream/ashift_nmsimplex.c`: darktable integration, GPL-3.0-or-later; embedded Nelder–Mead implementation by Michael F. Hutt, MIT-style permission notice retained in full.13- Emscripten-generated runtime: Emscripten authors, MIT / University of Illinois/NCSA; see `LICENSES/EMSCRIPTEN.txt`.14- New adapter, browser code, crop algorithm, and build scripts: AGPL-3.0-or-later. Provided without warranty.1516Original notices are retained in the source. Both GPL and AGPL license texts are supplied. GPLv3 §13 and AGPLv3 §13 address their combination. The public repository at https://github.com/FelineStateMachine/gudpics contains the preferred editable forms and build instructions; keep it available when distributing this combined work. No paid or proprietary assets are used.1718## Fuji tool1920- LibRaw (https://github.com/LibRaw/LibRaw), revision `116924e5bcb9483ef9c5fbe7f3cfc5a8a4b97064`, unmodified, compiled to WebAssembly with the thin wrapper in `native/raw/wrapper.cpp`. LibRaw is used under the LGPL-2.1; see `LICENSES/LGPL-2.1.txt` and `LICENSES/LIBRAW-COPYRIGHT.txt`. Obtain its source at the URL above at the pinned revision.21- Film simulation LUTs in `assets/luts/` (provia, velvia, astia, classic_chrome, pro_neg_std, pro_neg_high, eterna, acros, mono and filter variants, sepia): Bastian Bechtold, https://github.com/bastibe/Fujifilm-Auto-Settings-for-Darktable revision `79a458ce9bc28c870091c978b829aaed8dbdb45a`, GPL, unmodified. They were fitted from a Fujifilm camera's own renders against darktable's default render and approximate the camera looks.22- `lens.mjs`: Fujifilm in-camera lens correction (distortion, chromatic aberration, vignetting) from the RAF metadata splines. Algorithm adapted from darktable 4.6 `src/iop/lens.cc` and RawTherapee `rtengine/lensmetadata.cc`, both GPL-3.0-or-later.23- `assets/luts/neutral-dr*.png`: generated by `scripts/neutral-lut.py` using darktable-cli 5.6.1 (GPL-3.0-or-later). They map LibRaw's render to darktable's default scene-referred render so the film simulation LUTs apply as intended. Film simulation names are Fujifilm trademarks used to identify the looks being approximated; this project is not affiliated with Fujifilm.2425- Interface glyphs on the landing page and empty states: Lucide Icons (https://lucide.dev), ISC license, see `LICENSES/LUCIDE.txt`.2627## Extraction changes (2026-09-21)2829`scripts/extract.py` reproducibly selects darktable's original constants, line classification, vector helpers, homography, RANSAC, model fitness and Nelder–Mead fit from the pinned source. It uses the original LSD detector and simplex implementation.3031Changes: remove GTK, image pipeline and OpenMP dependencies; supply portable math helpers; keep minimal fit state behind a C API; accept display-referred RGBA rather than RAW; omit the optional detail and edge enhancement preprocessing; replace darktable logging in LSD with stderr. Keep one/two-line selections when RANSAC is skipped. Seed RANSAC deterministically. Add input and finite-result checks at the browser boundary. The generic 28 mm lens model is used, without EXIF focal-length inference.3233Browser preview/export uses a new inverse-mapped bilinear renderer. Automatic crop uses a new conservative polygon scan; it does not reproduce darktable's crop optimizer. Analysis is limited to 960 pixels on the long edge; export to 2560 pixels and 4 megapixels. The browser supplies decoding, orientation, and canvas color conversion. Results are not claimed to be pixel-identical to darktable or Lightroom.3435## Source references3637- Module: https://github.com/darktable-org/darktable/blob/0286264e169eec79ce8d3744d6e477dcb18d9d94/src/iop/ashift.c38- Detector: https://github.com/darktable-org/darktable/blob/0286264e169eec79ce8d3744d6e477dcb18d9d94/src/iop/ashift_lsd.c39- Optimizer: https://github.com/darktable-org/darktable/blob/0286264e169eec79ce8d3744d6e477dcb18d9d94/src/iop/ashift_nmsimplex.c40- Manual: https://darktable-org.github.io/dtdocs/en/module-reference/processing-modules/rotate-perspective/