t2p TODO list
$Id: TODO,v 1.13 2003/03/12 00:18:04 eric Exp $

No particular order.

-----------------------------------------------------------------------------

t2p:

* pages containing multiple images

* support JPEG (JFIF, EXIF)

* page labels

* crop

* page sizes
    * metric
    * check page size, if off by too much, generate warning message and
      use actual scan size
    * multiple page sizes, pick the right one?

* range checking
    * rotation (0, 90, 180, or 270)
    * page number style (D, r, R, a, A)

* watermarking - in image?

* flip, transpose

* support PNG, BMP, and other input file formats

* generate text, line art - option to embed fonts

* overlay G4 images in different colors - use ImageMask and the fill color

* bilevel thresholding of color and grey scale input

* automatic separation using timify code from Tim Shoppa?

* automatic image detection using DCT or FFT

* downsampling

-----------------------------------------------------------------------------

bitblt routines:

* optimize G4 fax encoding

* finish optimized bitblt code

* optimize inner loops in flip_h and flip_v with Duff's Device

* check for endian problems

-----------------------------------------------------------------------------

PDF routines:

[Page numbers refer to _Portable Document Format Reference Manual_ by
Adobe Systems Incorporated, Addison-Wesley, 1993.]

* proper output of real numbers - variable precision, no exponent

* bookmarks (outline) should allow alternate destination specs, currently
  only /Fit is supported

* balance pages tree - currently a degenerate single-level tree, but the
  PDF spec recommends max. of 6 children per parent

* thumbnails

* PDF Page rotate attribute (p. 53)?

* memory management - need to reference count all structures and free
  them as appropriate - not necessary for t2p program

* when an object is written to the file, set a flag to indicate that
  it is now immutable

* name trees, number trees - when finalize is called, set immutable flag
  and allow no further changes

* buffered streams (vs. current callback mechanism for unbuffered streams)

* add support for streams with multiple filters

* linearize ("optimize")
