]> git.imager.perl.org - imager.git/blobdiff - TODO
- fix a few compiler warnings
[imager.git] / TODO
diff --git a/TODO b/TODO
index a53f0816f6076ef2873496e4e6e8ddda63df7c5f..6864a30e601a83991d22a98efdb1960b675683e2 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,5 +1,72 @@
                          *** TODO ***
 
+Release Plans (subject to change)
+-------------
+
+brown-bag bugs may add intermediate releases.  The dates are goals,
+not commitments.
+
+0.45: (march 2005?)
+- audit pnm.c (done)
+- audit tga.c (done)
+- audit rgb.c and add tests
+- add META.yml (bypass EU::MM's limited mechanism) (done)
+- implement i_incomplete for bmp files
+- check if freetype 2 is faster/slower than freetype 1 with Imager's glyph
+  caching.  If FT1 is faster, add caching as a TODO for FT2.
+- add XS for i_tags_get_string() and test it.
+- test and fix problem with fallback value for 
+  Imager::Font::BBox->advance_width.
+- add sample CGI that handles an uploaded image (done)
+- examples for fountain filter in Imager::Filters
+- allow Imager::Fountain to take color descriptions (eg. blue, FF000)
+  instead of color objects for c0 and c1 (done)
+- support newer GIMP gradient files with the Name line (done)
+- provide access to right-side bearing information from the bounding box
+  function
+- capture TIFF read warnings (i_warnings tag?) (done)
+- add Imager::Cookbook with at least 5 recipes (done)
+- store floating point tags in an appropriate precision (done)
+- allow image creation to fail on malloc() failure for the image data
+  rather than aborting.  The current behaviour could be a denial of
+  service attack.  This has limited utility because of the way memory
+  over commitment works on Linux (done but reverted)
+- eliminate unused variable warning (especially the RETVAL ones in Imager.xs)
+  (done)
+- handle probing for libraries better (use pkg-config or I<library>-config
+  where possible (freetype2 and libpng)) (done)
+- add concept index to Imager.pm pod (done, still working it)
+- replace testimg/penguin-base.ppm with a smaller image (done)
+- add a sample CGI HTML and image generation scripts that work together,
+  with appropriate security management (done)
+
+0.46: (june 2005)
+- allow limits to be set on the size of an image read from a file.  This is
+  to prevent an attacker supplying huge images that consume all of 
+  memory causing a denial of service attack.
+- add Imager::Tutorial (see Tk::UserGuide for a structure)
+  don't cover installation - belongs in README or INSTALL
+  it doesn't need to cover everything - read/write/create/simple drawing
+  and simple text - other stuff belongs in the cookbook or in sample code
+- add 5 more recipes to Imager::Cookbook
+- implement gsamp()/gsampf()/plin() etc methods for those low level image
+  interfaces which don't yet have methods.
+- implement i_incomplete for png and gif files.
+- documentation audit, check:
+  - every method has at least one example, but if the method is complex
+    (like transform2, to_paletted, string() for example) it should include 
+    a range of examples
+  - check each method description to ensure it's reasonably clear.
+  - check POD sections (SEE ALSO in particular)
+- rework handling of antialiasing against transparent images
+
+Speculation
+-----------
+
+Some of what's listed below has been implemented.
+
+- should i_incomplete be optional?  ie. reading a short image results in
+  an error unless the user requests incomplete images.
 
 Iolayer:
 - Add scalar/mmap to iolayer
@@ -11,7 +78,6 @@ Iolayer:
   underlying source.  For making sure only the relevant
   data is read from a socket for example. 
 
-
 Enhanched internal structure:
 
 MultiImage & metadata support:
@@ -39,6 +105,7 @@ New Features:
   - WMF (extract bitmap data on read)
   - gzip or bzip2 compressed raw
   - postscript for output
+  - PAM file support (man pam in recent PNM tools)
 
 - Transforms, interpolated multidimensional lookup tables.
   Usefull for CMYK <-> RGB table lookup.
@@ -88,6 +155,7 @@ New Features:
    (handles TIFF and GIF)
 
 - write_multi() to save other multi-image types, (handles TIFF and GIF)
+  - pnm binary formats support multiple images per file
 
 - compose channels - build a new image based on channels from several
   images
@@ -113,14 +181,15 @@ New Features:
     the things I expect Imager to be used for.
   - http://www.develop-help.com/imager/strokes.png (.jpg for smaller version)
 
+- have Imager::Color{::Float}? use Graphics::ColorNames if present.
+
 Clean up:
 - Make sure everything is doable with the OO interface
   i_flood_fill() for example.
+  - include low-level functions like gsamp() and so on
 
 - Compile with memory debugging enabled and fix all leaks
 
-- dynaload.c is strongly tied to perl
-
 - Add mycalloc() memory allocation wrappers.
 
 - should we overload <=> or cmp for Imager::Color objects?
@@ -137,8 +206,9 @@ Clean up:
 
 - try to clean up the inconsistencies between font types:
   - utf8 (even if we just treat characters over 0xFF as missing for T1)
-  - transformations
-  - has_char() method
+    (done for FT2, FT1, T1)
+  - transformations (done for FT2)
+  - has_char() method (done for FT2, FT1, T1)
 
 Format specific issues:
 - provide patches for libgif and libungif that fix their bugs
@@ -162,6 +232,8 @@ Format specific issues:
 - read more metadata from images, esp tiff tags, EXIF format information 
   from TIFF and JPEG.
 
+- handle 16-bit/sample pgm/ppm files
+
 Documentation:
 - Add to the documentation
 - Write a tutorial?
@@ -173,3 +245,45 @@ Documentation:
 - see the IRC log in design/doclayout.txt
 - method index?
 - concept index?
+
+Build/configure:
+- use prompt() (from ExtUtils::MakeMaker) for questions in Makefile.PL
+- use the library's mechanism's to find the library if needed, for
+  example, freetype-config for FT2
+- the freetype2 library is built as "freetype.lib" on Win32 and needs
+  to be renamed to be found by the configuration process and included
+  with -lfreetype.  Try to work around that.
+- freetype2 and freetype1 tend to be installed in /usr/include/freetype2
+  and /usr/include/freetype directories, or similarly named (somedir/freetype
+  for example), instead of putting these directly into the search path
+  search for the freetype{2}?/someheader and then add the subdirectory if
+  we find the file in that directory.
+- switch to Test::More
+- change headers to use more unique re-include protection macros
+
+Old release checklists
+----------------------
+
+0.44: (december 2004)
+- set i_format for every file type on read and test for it:
+  - bmp - done
+  - jpeg - done
+  - tiff - done
+  - tga - done
+  - rgb - no read function anyway
+  - png - done
+  - gif - done
+  - pnm - done
+  - raw - done
+- check each file reader for possible integer overflows
+  - bmp - done
+  - tiff
+  - tga
+  - rgb
+  - png
+  - gif
+  - pnm
+- check bmp code uses image data offset correctly - done
+- check quant code for integer overflows - done
+- check for old URLs (umich and imager.perl.org/~addi/...) - done
+