Commit Graph
336 Commits
Author SHA1 Message Date
Dylan M. Taylor 29fb8f8e86 Merge pull request #1216 from dotCooCoo/feat/craft-texture-planes
craft-texture: add bounded float image planes and texture sampling
2026-11-14 11:28:44 -05:00
Dylan M. Taylor a5ac3aa05c Merge pull request #1322 from storytold/codex/craft-xml-dtd
prepress: share PDF/X-1a finalization and checks (official replacement)
2026-11-14 10:14:26 -05:00
Dylan M. Taylor 1a950613f9 Merge remote-tracking branch 'origin/main' into codex/jpeg-baseline-encoder 2026-11-14 11:13:33 +00:00
41fb227542 feat(ps): add bounded shared PostScript EPS reader (#1276)
* feat(ps): add craft-ps with an EPS reader (read feature)

The reading half of craft-ps (#115): a clean-room PostScript interpreter
that runs an EPS and returns what it paints as a one-page vector PDF of
its bounding box, colours kept, so apps can draw and export EPS as a
placed PDF. Moved from DesignCraft (storytold/designcraft, where it was
written for placed EPS), with its app-specific names made neutral.

Written from the PostScript Language Reference (3rd ed.), the EPS
specification, the Type 1 Font Format and Adobe TN 5012/5176/5177.
Covers the language, paths, clipping, strokepath, device/Separation/
DeviceN/Indexed/ICCBased/Lab colour, images with lazily decoded filters,
shadings 1-7 and patterns, and Type 1/3/42/CFF/CID text through CMaps,
horizontal and vertical.

Bounded: each operator charges work proportional to its operands
against the step limit as it goes, every byte read or decoded counts,
copies count against the memory cap; defaults 50 M steps / 1 GiB, and
20 M / 256 MiB on wasm32. No panics (deny lints, fuzzed in debug
builds). 34 tests, the Type 42 one on a TrueType font built in the
test. No new external crates: pdf-writer, miniz_oxide, weezl, skrifa
and kurbo are already locked at these versions.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* clippy(ps): document stateful decoder complexity

* fix(ps): bound huge arc angle normalization

* fix(ps): preserve EffectCraft EPS text and limits parity

* fix(ps): address interpreter review findings

* fix(ps): preserve composite glyph paint order

* fix(ps): address interpreter review findings

* fix(ps): bound filter buffers and preserve file aliases

* fix(ps): make predictor allocation fallible

---------

Co-authored-by: markus.doebele <markus.doebele@top21.sh>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-14 06:10:27 -05:00
Dylan M. Taylor 1cc7a21416 jpeg: add optimized baseline encoder 2026-11-14 11:05:21 +00:00
dotCooCoo abcfe7ddc3 Merge main into feat/craft-texture-planes 2026-11-14 02:45:18 -08:00
Dylan M. Taylor c526df24f3 image-codecs: delegate metadata edits to shared crate 2026-11-14 04:22:36 +00:00
Dylan M. Taylor b77af389f3 Merge pull request #1245 from storytold/codex/anicraft-envelope
feat(anicraft-format): extract native JSON envelope
2026-11-13 23:01:08 -05:00
Dylan M. Taylor fd708734aa Merge pull request #1182 from storytold/codex/photocraft-file-caps
Add shared format capability catalog
2026-11-13 22:38:59 -05:00
Dylan M. Taylor c82c83043a Update lockfile after main merge 2026-11-14 03:12:15 +00:00
Dylan M. Taylor 840d156fbf Merge current main into image codec extraction 2026-11-14 03:10:53 +00:00
Dylan M. Taylor 427fa15899 Merge pull request #1223 from storytold/codex/anicraft-xfl-format
Add bounded XFL FLA package reader
2026-11-13 22:01:31 -05:00
Dylan M. Taylor 5df4b49f8c feat(anicraft-format): extract versioned JSON envelope 2026-11-14 02:46:10 +00:00
Dylan M. Taylor 6d620e971e Merge pull request #1229 from storytold/codex/craft-jxl-extraction
Add shared JPEG XL decoder and encoder
2026-11-13 19:39:17 -05:00
Dylan M. Taylor 8fcb191515 Preserve JPEG XL color rendering options 2026-11-13 23:06:05 +00:00
Dylan M. Taylor 4d3e920954 Add shared JPEG XL decoder and encoder 2026-11-13 22:47:47 +00:00
Dylan M. Taylor 888bffcbb3 Add shared DWG-DXF byte bridge 2026-11-13 22:45:07 +00:00
Dylan M. Taylor b4d1e249d9 Add bounded XFL FLA package reader 2026-11-13 22:05:11 +00:00
dotCooCoo 3c3a83151d craft-texture: add bounded float image planes and texture sampling
Adds crates/texture (craft-texture), the first step of RFC-0032
(storytold/craft-contrib#50). The code comes from MaterialCraft
crates/image/src/lib.rs at 31330629, with its six tests unchanged. No app
uses the crate yet.

Changes from the source:
- Image fields are private; from_data checks the size and the buffer
  length, so a zero side can no longer reach a panic and a short buffer
  is rejected instead of read with defaults.
- Limits caps the side, pixels and bytes; the try_ constructors and
  try_map, try_to_kind, try_resize and try_to_rgba8_display reserve
  memory first and return an error.
- Repeat sampling reduces the coordinate to its fractional part, so the
  period holds at large coordinates.
- Bilinear sampling sums the four weighted texels and skips zero weights;
  box shrinking sums in f64.
- generate_uv clamps the size before computing pixel centers.
- linear_to_srgb(NaN) returns NaN.
- rayon is behind the parallel feature.
2026-11-13 13:14:55 -08:00
Dylan M. Taylor 1128493ccc chore: update lockfile for GIF regression fixture 2026-11-13 19:04:37 +00:00
Dylan M. Taylor b7b9f8eb7c feat(lottie): share bounded dotLottie ZIP handling 2026-11-13 14:37:26 +00:00
Dylan M. Taylor 8ebdc499a5 Merge pull request #1186 from dylanmtaylor/codex/stencilcraft-file-import-registry
Add shared neutral file import and writer registry
2026-11-13 09:04:29 -05:00
Dylan M. Taylor 0e2a717c64 Merge pull request #1176 from storytold/feat/figcraft-native-format
Add shared native FigCraft project format crate
2026-11-13 08:42:00 -05:00
Dylan M. Taylor 93d0998383 Merge pull request #1184 from storytold/codex/designcraft-native-format
Add shared DesignCraft native format codec
2026-11-13 08:05:30 -05:00
Dylan M. Taylor 62e2328905 Add shared neutral file import and writer registry 2026-11-13 07:36:18 -05:00
Dylan M. Taylor 59c52ac1dc Merge pull request #1174 from dylanmtaylor/codex/vector-file-imports
Add shared vector path import APIs
2026-11-13 07:35:46 -05:00
Dylan M. Taylor 33eb0ef9e2 Merge remote-tracking branch 'origin/main' into feat/figcraft-native-format 2026-11-13 12:31:13 +00:00
Dylan M. Taylor d436bebe88 Lock shared PDF XMP parser dependency 2026-11-13 06:33:23 -05:00
Dylan M. Taylor 2cd289fad6 Route container and raw signatures through shared formats 2026-11-13 05:46:14 -05:00
Dylan M. Taylor 58ae17473c Merge pull request #1179 from dylanmtaylor/codex/stencilcraft-typed-format
StencilCraft: share the native document model and codec
2026-11-13 05:33:43 -05:00
Dylan M. Taylor 65b2a68df0 Add shared DesignCraft native format codec 2026-11-13 05:12:58 -05:00
Dylan M. Taylor 6de1ffc9d7 Add shared format capability catalog 2026-11-13 04:53:57 -05:00
Dylan M. Taylor 00d82f5bc7 Add bounded SVG tree rendering facade 2026-11-13 04:31:22 -05:00
Dylan M. Taylor 68ad072e4a Merge remote-tracking branch 'origin/main' into codex/soundcraft-format 2026-11-13 09:12:20 +00:00
Dylan M. Taylor 915fc54458 Merge pull request #1164 from storytold/codex/craft-time-soundcraft
craft-time: preserve SoundCraft sample-time APIs
2026-11-13 04:10:26 -05:00
Dylan M. Taylor 59eccec4ff Merge remote-tracking branch 'upstream/main' into HEAD
# Conflicts:
#	Cargo.lock
2026-11-13 04:06:48 -05:00
Dylan M. Taylor 7c56d282a2 Merge pull request #1170 from dylanmtaylor/codex/designcraft-format-migration
Add reusable document bundle and SVG preflight APIs
2026-11-13 04:03:23 -05:00
Dylan M. Taylor b373553e98 Add shared vector path import APIs 2026-11-13 03:58:21 -05:00
Dylan M. Taylor 686b5478ea Merge pull request #1173 from dylanmtaylor/codex/file-formats-api
Add shared file format detection
2026-11-13 03:55:21 -05:00
Dylan M. Taylor fd9e3d67e6 Merge pull request #1177 from dylanmtaylor/codex/craft-pcraft-bundle
Add shared .pcraft bundle storage
2026-11-13 03:48:30 -05:00
Dylan M. Taylor 166d0d2127 craft-stencilcraft-document: share the native document model 2026-11-13 03:46:47 -05:00
Dylan M. Taylor 4d709b5e0e Merge remote-tracking branch 'upstream/main' into HEAD
# Conflicts:
#	Cargo.lock
#	crates/raster-codecs/Cargo.toml
#	crates/raster-codecs/src/common.rs
2026-11-13 03:30:22 -05:00
Dylan M. Taylor 01452740b6 Merge pull request #1169 from dylanmtaylor/codex/stencilcraft-format-api
Add bounded common raster codec facade
2026-11-13 03:25:55 -05:00
Dylan M. Taylor 5e24ea380e Avoid duplicated timeline time primitives 2026-11-13 07:47:44 +00:00
Dylan M. Taylor fd5133174b Add shared pcraft bundle storage 2026-11-13 02:23:08 -05:00
Dylan M. Taylor e2cab3f651 Merge pull request #1158 from storytold/feat/stencilcraft-format
Add versioned flattened JSON format schema
2026-11-13 02:13:29 -05:00
Dylan M. Taylor eeee3d08b6 Add shared Base64 PNG helpers 2026-11-13 02:03:55 -05:00
Dylan M. Taylor c5d1e937ae feat(materialx): add bounded reader and OpenPBR writer (#1167)
* feat(materialx): add bounded document reader and OpenPBR writer

* proof, video, latex, cms: satisfy the clippy lints that ship with Rust 1.100

The newer clippy flags needless bool guards and range loops whose index
only indexes one slice; express both with the equivalent iterators so
the workspace lint stays green on every platform.

* cms: index the ink loops instead of a range loop, which newer clippy rejects

* feat(materialx): resolve shader graphs and write OpenPBR materials

* feat(materialx): resolve shader graphs and write OpenPBR materials
2026-11-13 02:03:31 -05:00
Dylan M. Taylor d6f65e29e0 feat(figcraft-format): support seekable native readers 2026-11-13 06:58:38 +00:00
Dylan M. Taylor fccc008271 Detect DesignCraft and IDML document content 2026-11-13 01:44:49 -05:00