Made TODO into a seperate file and removed it from the Changes file.
authorArnar Mar Hrafnkelsson <addi@cpan.org>
Thu, 17 May 2001 08:10:08 +0000 (08:10 +0000)
committerArnar Mar Hrafnkelsson <addi@cpan.org>
Thu, 17 May 2001 08:10:08 +0000 (08:10 +0000)
Also added i_errmsg to the image structure in design/represent.txt
since that is sort of the next generation image structure.

Changes
TODO [new file with mode: 0644]
design/represent.txt

diff --git a/Changes b/Changes
index 1e040b0..1acc40c 100644 (file)
--- a/Changes
+++ b/Changes
@@ -417,82 +417,10 @@ Revision history for Perl extension Imager.
         - changed README note on libgif bug to refer to t105gif.t instead
          of t10formats.t
 
-~~~~~~~~~~~~~^ ^ ^~~~~~~~~~~~~~
-
-
-0.40    TODO list
-        iolayer:
-        - Add scalar/mmap to iolayer
-        - Add close() code to iolayer
-        - Merge callback interface into iolayer
-        - Add interface for writing to all formats but tiff
-        - Add interface for reading for png (started), 
-          gif (merge with cb patch), ppm and raw
-        - Add make new tests once all formats support io_layer
-        - Implment the maxread threshold (Indicates how far 
-          a library can read before it indicates that it's done).
-
-        MultiImage & metadata support:
-        - Figure what interface should be between C and perl?
-        - How to store data in the C interface for tags/metadata?
-
-        - other internal image representations (design/represent.txt)
-
-       - Error handling, make a general i_errstr object and arrange
-          such that each image has an i_errstr object to hold its
-          local errors?
-
-       Good stuff:
-       - image colour transformations based on input images, see 
-          design/cmyktorgb.txt for Addi's description
-       - eventually support tiff's madness
-
-        Old sins:
-        - Make sure everything is doable with the OO interface
-        - Split the other classes into seperate files
-        - Compile with memory debugging enabled and fix leaks
-        - dynaload.c is strongly tied to perl
-        - Add mycalloc() and myrealloc() to the malloc() wrappers.
-       
-       - should i_readgif returned colormap be an arrayref of 
-          Imager::Color objects?  Note that this will break 
-          compatibility with previous releases.
-
-       - should Imager::Font be split into a base class whose  
-       new chooses a base class (ttf, t1 or win32?) to 
-       instantiate.  Currently Imager::Font uses if() statements to
-       select between each type of font.  It should.
-
-       - should we overload <=> or cmp for Imager::Color objects?
-        too many worms, leave it out
-
-       - if gif_delays is a number instead of an arrayref, use that 
-       number for each frame
-
-        - provide patches for libgif and libungif that fix their bugs
-          and give a useful extension interface.  Probe for the 
-          installation of the patches in Makefile.PL to let gif.c
-          know what features it can use.
-
-        - Add options for pnm, writer to save in any of the p1..P6
-          formats.  Even if the input has 1 channel, write 3 and such
-          cases.  Also allow ascii mode.  Need to be able to write 
-          pbm images which needs ties to the quantization code.
-
-        Documentation:
-        - Add to the documentation
-        - Write a tutorial?
-        - Write a guide to installing the helper libraries
-        - Go through the entire project and add comments in pod
-          so doco.perl can be used to read them.
-
-        - should the interlace option for reading raw images have 
-          symbolic names in the OO interface?
-
-===================================================
+=================================================================
 
         For latest versions check the Imager-devel pages:
         http://www.eecs.umich.edu/~addi/perl/Imager/devel/
 
-===================================================
+=================================================================
 
diff --git a/TODO b/TODO
new file mode 100644 (file)
index 0000000..551a908
--- /dev/null
+++ b/TODO
@@ -0,0 +1,81 @@
+                         *** TODO ***
+                        
+
+
+Iolayer:
+- Add scalar/mmap to iolayer
+- Add close() code to iolayer
+- Merge callback interface into iolayer
+- Add interface for writing to all formats but tiff
+- Add interface for reading for png (started), 
+  gif (merge with cb patch), ppm and raw
+- Add new tests once all formats support io_layer
+- Implment the maxread threshold (Indicates how far 
+  a library can read before it indicates that it's done).
+
+
+Enhanched internal structure:
+
+MultiImage & metadata support:
+- Figure what interface should be between C and perl?
+- How to store data in the C interface for tags/metadata?
+  Support tiff's madness, i.e. tags and options.
+- Error handling, make a general i_errstr object and arrange
+  such that each image has an i_errstr object to hold its
+  local errors?
+- SEE design/represent.txt for proposed new structure and
+  interface design that takes these factors into account.
+
+New Features:
+- Transforms, interpolated multidimensional lookup tables.
+  Usefull for CMYK <-> RGB table lookup.
+
+- Finish antialiased filled polygon function.
+
+
+Clean up:
+- Make sure everything is doable with the OO interface
+  i_flood_fill() f. example.
+- Split the other classes into seperate files
+  Imager::Font::TT, Imager::Font::T1, currently 
+  an if statement is used to choose what code to
+  run.
+- Compile with memory debugging enabled and fix all leaks
+
+- dynaload.c is strongly tied to perl
+
+- Add mycalloc() and myrealloc() to the malloc() wrappers.
+
+- should we overload <=> or cmp for Imager::Color objects?
+  too many worms, leave it out
+
+- should the interlace option for reading raw images have 
+  symbolic names in the OO interface?
+
+
+
+Format specific issues:
+- should i_readgif returned colormap be an arrayref of 
+  Imager::Color objects?  Note that this will break 
+  compatibility with previous releases.
+
+- if gif_delays is a number instead of an arrayref, use that 
+  number for each frame
+
+- provide patches for libgif and libungif that fix their bugs
+  and give a useful extension interface.  Probe for the 
+  installation of the patches in Makefile.PL to let gif.c
+  know what features it can use.
+
+- Add options for pnm, writer to save in any of the p1..P6
+  formats.  Even if the input has 1 channel, write 3 and such
+  cases.  Also allow ascii mode.  Need to be able to write 
+  pbm images which needs ties to the quantization code.
+
+
+Documentation:
+- Add to the documentation
+- Write a tutorial?
+- Write a guide to installing the helper libraries
+- Go through the entire project and add comments in pod
+  so doco.perl can be used to read them.
index 28370d5..aa69660 100644 (file)
@@ -171,11 +171,13 @@ The basic interface would include:
     unsigned char channels[MAX_CHANNELS];
     /* and others as we currently have */
   } i_color;
+
   typedef struct {
     struct { double char r, g, b, a; } rgb;
     double channels[MAX_CHANNELS];
     /* and others as we currently have */
   } i_fcolor;
+
   typedef struct i_img_tag i_img;
   typedef int (*i_f_ppix_t)(i_img *im, int x, int y, i_color *pix);
   typedef int (*i_f_ppixf_t)(i_img *im, int x, int y, i_fcolor *pix);
@@ -185,10 +187,12 @@ The basic interface would include:
   typedef int (*i_f_gpixf_t)(i_img *im, int x, int y, i_fcolor *pix);
   typedef int (*i_f_glin_t)(i_img *im, int x, int r, int y, i_color *vals);
   typedef int (*i_f_glinf_t)(i_img *im, int x, int r, int y, i_fcolor *vals);
+
   typedef enum {
     i_literal_type, /* keeps RGB values per pixel */
     i_palette_type, /* keeps a palette index per pixel */
   } i_img_types;
+
   /* interface functions 
   typedef int (*i_f_gpal_t)(i_img *im, int x, int r, int y, i_palidx *vals);
   typedef int (*i_f_ppal_t)(i_img *im, int x, int r, int y, i_palidx *vals);
@@ -196,6 +200,7 @@ The basic interface would include:
   typedef int (*i_f_getcolor_t)(i_img *im, int i, i_color *);
   typedef int (*i_f_colorcount_t)(i_img *im);
   typedef int (*i_f_findcolor_t)(i_img *im);
+
   typedef enum { 
     /* bits per sample, not per pixel */
     /* a paletted image might have one bit perl sample */
@@ -203,17 +208,25 @@ The basic interface would include:
     i_16_bits = 16,
     i_double_bits = 64
   } i_img_bits;
+
+  typedef struct {
+    char *msg;
+    int code;
+  } i_errmsg;
+
   typedef struct {
     char *name; /* name of a given tag, might be NULL */
     int code; /* number of a given tag, -1 if it has no meaning */
     char *data; /* value of a given tag if it's not an int, may be NULL */
     int idata; /* value of a given tag if data is NULL */
   } i_img_tag;
+
   typedef struct {
     int count; /* how many tags have been set */
     int alloc; /* how many tags have been allocated for */
     i_img_tag *tags;
   } i_img_tags;
+
   typedef struct {
     int channels;
     int xsize, ysize, bytes;
@@ -225,6 +238,8 @@ The basic interface would include:
                 /* can be NULL if virtual is non-zero */
     i_img_tags tags;
 
+    i_errmsg error_stack[ERRSTK]; /* Store errors with image */
+
     /* interface functions */
     i_f_ppix_t i_f_ppix;
     i_f_ppixf_t i_f_ppixf;
@@ -261,5 +276,6 @@ Tony Cook <tony@develop-help.com>
 =head1 HISTORY
 
 16May2001 - initially completed version, could use some polishing
+16May2001 - Added i_error stack to the image structure.
 
 =cut