]> git.imager.perl.org - imager.git/blob - TODO
text, text, text
[imager.git] / TODO
1                          *** TODO ***
2
3
4 Iolayer:
5 - Add scalar/mmap to iolayer
6 - Add close() code to iolayer for fakeseek sources.
7 - Merge callback interface into iolayer
8 - and raw
9 - Implment the maxread threshold (Indicates how much can
10   be read from a source before it stops reading from its
11   underlying source.  For making sure only the relevant
12   data is read from a socket for example. 
13
14
15 Enhanched internal structure:
16
17 MultiImage & metadata support:
18 - Figure what interface should be between C and perl?
19 - How to store data in the C interface for tags/metadata?
20   Support tiff's madness, i.e. tags and options.
21 - Error handling, make a general i_errstr object and arrange
22   such that each image has an i_errstr object to hold its
23   local errors?
24 - SEE design/represent.txt for proposed new structure and
25   interface design that takes these factors into account.
26 - define common i_* tags for specifying attribute common among images
27   like spatial resolution (implement for other image types, especially 
28   TIFF)  (Spatial resolution is supported for all types that support 
29   it - are there any other common properties we can add?)
30 - implement the i_incomplete tag for other formats  
31
32 New Features:
33 - Add mng support, pcx and aalib support.
34   - Windows icon files (.ico)
35   - ILBM (Amiga) images
36   - photoshop files (I think I've seen docs)
37   - XBM
38   - FITS
39   - WMF (extract bitmap data on read)
40   - gzip or bzip2 compressed raw
41   - postscript for output
42
43 - Transforms, interpolated multidimensional lookup tables.
44   Usefull for CMYK <-> RGB table lookup.
45
46 - advanced font layout (spacing, kerning, alignment) (Artur?)
47
48 - ways to check if characters are present in a font, eg. checking if
49   ligatures are present (done for FreeType2)
50
51 - font synthesis - synthesize a bold or slanted font from a normal font
52   (or even from an existing bold or slanted font)
53
54 - utf8 support for text output
55   (available for freetype2, should be easy for Win32, may need to fiddle 
56    with cache under FT1)
57
58 - easy interfaces for text output:
59   - align text around point, including:
60     - left, center, right horizontal alignment
61     - top, center, baseline, bottom alignment
62     - choose whether to base alignment upon character cells or font 
63       metrics to avoid spacing problems between lines
64   - fill a box from text, with newline handling
65     - an option to just return the information that would be used to 
66       output the text, so it can be used for sizing calculations
67     - how much text fit in the box/how much space is left in the box
68   - fill a box with rich text (size and font changes)
69     - as above
70     - wrapping around boxes/images
71   - pod2Imager :)
72
73 - tools to get more information about fonts/characters:
74   - name of font "Arial Bold Italic" vs "arialbi.ttf"
75   - ABC widths for characters (currently the only way to get the C width 
76     for a character is to get the width with a following space and without
77     and then compare)
78   - character names
79
80 - encodings for text output (maybe using the Encode module to work 
81   between encodings)
82
83 - image rotation, 3 ways of doing rotation:
84   - rotation by shearing, which produces makes lengths in the image larger,
85     but could be useful
86   (2 of the 3 have been done)
87
88 - read_multi() needs to handle other multi-image types,
89    (handles TIFF and GIF)
90
91 - write_multi() to save other multi-image types, (handles TIFF and GIF)
92
93 - compose channels - build a new image based on channels from several
94   images
95
96 - arc outlines
97
98 Clean up:
99 - Make sure everything is doable with the OO interface
100   i_flood_fill() for example.
101
102 - Compile with memory debugging enabled and fix all leaks
103
104 - dynaload.c is strongly tied to perl
105
106 - Add mycalloc() memory allocation wrappers.
107
108 - should we overload <=> or cmp for Imager::Color objects?
109   too many worms, leave it out
110
111 - should the interlace option for reading raw images have 
112   symbolic names in the OO interface?
113
114 - improve consistency in the interfaces, both in trying to use named
115   parameters where possible but also in using consistent names, eg.
116   (tx, ty) vs (left, top) in rubthrough() vs paste().  Do we want a (simple)
117   standard for this (suggested names)?  Remember to preserve the old 
118   interface where possible.
119
120 - try to clean up the inconsistencies between font types:
121   - utf8 (even if we just treat characters over 0xFF as missing for T1)
122   - transformations
123   - has_char() method
124
125 Format specific issues:
126 - provide patches for libgif and libungif that fix their bugs
127   and give a useful extension interface.  Probe for the 
128   installation of the patches in Makefile.PL to let gif.c
129   know what features it can use.
130
131 - Add options for pnm writer to save in any of the p1..P6
132   formats.  Even if the input has 1 channel, write 3 and such
133   cases.  Also allow ascii mode.  Need to be able to write 
134   pbm images which needs ties to the quantization code.
135
136 - save paletted images as paletted where that's supported.  Done
137   for gif/tga/bmp/tiff.  Not done for png yet.
138
139 - read other format paletted images as paletted images.  This has 
140   been done for gif/tga/bmp/tiff formats but not for png.
141
142 - read/write 16-bit/sample images as such for tiff
143
144 - read more metadata from images, esp tiff tags, EXIF format information 
145   from TIFF and JPEG.
146
147 Documentation:
148 - Add to the documentation
149 - Write a tutorial?
150 - sample code and Imager/Samples.pod describing them
151 - Imager/Cookbook.pod
152 - Write a guide to installing the helper libraries
153 - Go through the entire project and add comments in pod
154   so doco.perl can be used to read them.
155 - see the IRC log in design/doclayout.txt