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