Nico Weber
ec739460e0
LibPDF: Add test for SampledFunction and fix bugs found by it
...
* SampledFunction now keeps the StreamObject it gets data from alive
(doesn't matter too much in practice, but does matter in the test,
where nothing else keeps the stream alive).
* If a sample is an integer, we would previously sample that value
twice and then divide by zero when interpolating. Make sure to
sample 1 unit apart.
2023-11-11 08:55:37 +01:00
Nico Weber
323ba7404c
LibPDF: Implement SampledFunction::evaluate() for some sampled functions
...
Things now work for functions that are all of:
* linear
* 1-D input
* 8 bits per sample
2023-11-10 15:03:30 +00:00
Nico Weber
fd1876441a
LibPDF: Implement SampledFunction::create()
2023-11-10 15:03:30 +00:00
Nico Weber
cd9f4655ec
LibPDF: Tweak implementation of postscript roll
op
...
Since positive offsets roll to the right, it makes more sense
to do the big reverse first. Gets rid of an awkward minus sign.
No behavior change.
2023-11-10 14:45:38 +01:00
Nico Weber
b23ed86889
LibPDF: Implement StitchingFunction::evaluate()
2023-11-10 14:45:16 +01:00
Nico Weber
ba34ddeb21
LibPDF: Implement StitchingFunction creation
2023-11-10 14:45:16 +01:00
Nico Weber
80eec1e16b
LibPDF: Implement PostScriptCalculatorFunction
...
Includes a tokenizer and interpreter for the subset of PostScript
supported in PDF type 4 functions.
2023-11-09 16:06:25 +01:00
Nico Weber
bbd86ee4f3
LibPDF: Implement ExponentialInterpolationFunction
2023-11-06 10:01:05 +01:00
Nico Weber
1aed465efe
LibPDF: Implement Fuction::create()
2023-11-06 10:01:05 +01:00
Nico Weber
9204252d02
LibPDF: Add scaffolding for function objects
...
See PDF 1.7 Spec, "3.9 Functions".
2023-11-06 10:01:05 +01:00