mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-10-25 10:17:02 -06:00
The PostScript interpreter that reads EPS and PostScript files had no CCITTFaxDecode filter. Reading a file whose image data went through it stopped at an error naming the filter, and the file opened from a fallback, such as its preview or the art drawn before the image, or did not open. CCITTFaxDecode now decodes CCITT Group 4 (ITU-T T.6) and Group 3 one-dimensional and mixed (ITU-T T.4) data to rows of 1-bit samples. It reads K, Columns, Rows, EndOfBlock, EndOfLine, EncodedByteAlign and BlackIs1 (PLRM 3rd ed., §3.13; ISO 32000-2, §7.4.6). With EndOfBlock the data ends at its EOFB or RTC regardless of Rows, and the RTC of mixed Group 3 data, six EOLs each with a tag bit, is found by the filter. Damaged data keeps the rows decoded before it, and damage in the first row is an ioerror. Columns outside 1 to 65,535 and Rows below 0 are a rangecheck, and data that would decode to more than 256 MiB is refused. hayro-ccitt 0.3.0, already in Cargo.lock through hayro-syntax, becomes a dependency of vectorcraft-eps. The tests encode their images in the test, with the fax crate's Group 4 encoder and T.4 run codes (a dev-dependency, already in Cargo.lock through tiff), and fail without the change. The import fuzz tests read a Group 4 and a Group 3 image coded by hand from the T.4 and T.6 tables, read the same file with random damage, and add the filter and its parameters to the hostile programs. Docs: docs/file-format-parity.md, docs/target-app-parity.md.
37 lines
1.3 KiB
TOML
37 lines
1.3 KiB
TOML
[package]
|
|
name = "vectorcraft-eps"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
description = "VectorCraft Encapsulated PostScript: a hand-written EPS writer (PostScript Level 2 and 3) with TIFF previews"
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dependencies]
|
|
vectorcraft-geom = { workspace = true }
|
|
vectorcraft-color = { workspace = true }
|
|
vectorcraft-doc = { workspace = true }
|
|
vectorcraft-effects = { workspace = true }
|
|
vectorcraft-brush = { workspace = true }
|
|
vectorcraft-text = { workspace = true }
|
|
# Windows metafile previews, opened when a file's PostScript can't be read.
|
|
vectorcraft-metafile = { workspace = true }
|
|
# Non-native art in Illustrator editing data (a placed PDF's content, kept as a PDF).
|
|
vectorcraft-pdf = { workspace = true }
|
|
# The TIFF writer (previews) and PackBits, shared with raster export.
|
|
vectorcraft-render = { workspace = true }
|
|
kurbo = { workspace = true }
|
|
image = { workspace = true }
|
|
flate2 = { workspace = true }
|
|
ruzstd = { workspace = true }
|
|
# Images read through `CCITTFaxDecode`.
|
|
hayro-ccitt = { workspace = true }
|
|
# Live effects' params, as the art styles that name them give them.
|
|
serde_json = { workspace = true }
|
|
|
|
[dev-dependencies]
|
|
vectorcraft-testkit = { workspace = true }
|
|
# Tests: a Group 4 encoder and the T.4 run codes, to write CCITT test images.
|
|
fax = "0.2"
|