- 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/
-===================================================
+=================================================================
--- /dev/null
+ *** 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.
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);
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);
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 */
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;
/* 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;
=head1 HISTORY
16May2001 - initially completed version, could use some polishing
+16May2001 - Added i_error stack to the image structure.
=cut