Examples ======== Example 1 --------- .. literalinclude:: ../src/pptest1.c Example 2 --------- .. literalinclude:: ../src/pptest2.c Example 3 --------- .. literalinclude:: ../src/pptest3.c ppapi.h ------- .. literalinclude:: ../src/ppapi.h Changes ======= v0.97 ----- First release integrated with luatex sources, plus portability changes from Luigi. v0.98 ----- Changed references resolving in case of incremental updates; tech notes ppxref_find() in ppxref.c. v0.99 ----- Fixed streams handling; null characters should NOT be gobbled after "stream" keyword v1.00 ----- Fixed streams handling (Luigi); object streams updated before other streams Revised streams handling, ppstream API extended v1.01 ----- Fixed names handling (thanks Hans); digits after '#' weren't skipped v1.02 ----- Fixed page finder (thanks Luigi) v1.03 ----- Fixed TIFF predictor (thanks folks) v1.04 ----- Fixed TIFF predictor for ARM v1.05 ----- Attempt to fix parsing inline images crap v2.00 ----- Deep rework on allocators. Deep rework on strings and names. v2.01 ----- Fixed invalid stream buffer handling; ``iof_discard()`` no longer reclaims the source (``filter->next``) filter. Sanity alignment adjustments in ``iof_heap``. v2.02 ----- Fixed incorrect encoding of strings alterego with octal escaping, thanks Luigi. On Hans request added ``ppdoc_filehandle()`` function and ``ppdoc_file()`` macro for loading ppdoc from ``FILE *``. v2.03 ----- Fixed alloc/free of ``ppdoc`` heap; ``ppdoc`` is now mallocated, no longer taken from its own heap. Again, thanks Luigi. Fixed warnings about dereferencing type-puned pointers, and some others. v2.04 ----- Byte lookups for names/strings loaders are now int8_t, as char might be signed. ppdoc_first_page() / ppdoc_next_page() iterator now handles a case when /Kids array is empty. Fixed generating keys for encrypted streams; ppstring_internal() returns the string of the proper size. More stream tests in pptest3.c. Some rework on md5 and sha2. v2.05 ----- uint8_t instead of ppbyte in internals; ppbyte intent is "the most natural 8-bit integer", so it is 'char', but internally we almost always need uint8_t (char may be signed or not..) TODO ==== - external streams (egzotic)