t2p TODO list $Id: TODO,v 1.8 2003/02/21 01:12:05 eric Exp $ No particular order. ----------------------------------------------------------------------------- t2p: * bookmark format string processing * bitblt library: * run length encoding (needed for G4 compression) * optimize * replace inner loops in flip_h and flip_v with Duff's Device * check for endian problems * 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? * sort out use of float and double types * range checking * rotation (0, 90, 180, or 270) * page number style (D, r, R, a, A) * watermarking - in image? * flip, transpose * support JPEG, PNG, 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 * thresholding of color and grey scale input * automatic separation using timify code from Tim Shoppa? * automatic image detection using DCT or FFT * bilevel thresholding * downsampling * ??? split into two tools, one to process TIFF files, and one to convert a single multipage TIFF into a PDF ----------------------------------------------------------------------------- bitblt routines: * finish optimized bitblt code ----------------------------------------------------------------------------- PDF routines: [Page numbers refer to _Portable Document Format Reference Manual_ by Adobe Systems Incorporated, Addison-Wesley, 1993.] * G4 fax encoding * proper output of real numbers - variable precision, no exponent * bookmarks (outline) * name trees, number trees * page labels * balance pages tree - currently a degenerate single-level tree, but the PDF spec recommends max. of 6 children per parent * ImageMask (p. 79) using fill color (g, k, or rg operator, p. 95) * thumbnails * PDF Page rotate attribute (p. 53)? * fix array element ordering * 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 * buffered streams (vs. current callback mechanism for unbuffered streams) * add support for streams with multiple filters