Commit | Line | Data |
---|---|---|
b921d414 | 1 | *** TODO *** |
b921d414 AMH |
2 | |
3 | ||
4 | Iolayer: | |
5 | - Add scalar/mmap to iolayer | |
a106216b | 6 | - Add close() code to iolayer for fakeseek sources. |
b921d414 | 7 | - Merge callback interface into iolayer |
a106216b AMH |
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 | ||
b921d414 | 14 | |
b921d414 AMH |
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. | |
faa9b3e7 TC |
26 | - define common i_* tags for specifying attribute common among images |
27 | like spatial resolution (implement for other image types, especially | |
10461f9a TC |
28 | TIFF) (Spatial resolution is supported for all types that support |
29 | it - are there any other common properties we can add?) | |
faa6fa9b | 30 | - implement the i_incomplete tag for other formats |
b921d414 AMH |
31 | |
32 | New Features: | |
a106216b | 33 | - Add mng support, pcx and aalib support. |
13db6021 TC |
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 | |
10461f9a | 41 | - postscript for output |
5f5fe73e | 42 | |
b921d414 AMH |
43 | - Transforms, interpolated multidimensional lookup tables. |
44 | Usefull for CMYK <-> RGB table lookup. | |
45 | ||
a106216b | 46 | - advanced font layout (spacing, kerning, alignment) (Artur?) |
faa9b3e7 | 47 | |
bf9dd17c | 48 | - ways to check if characters are present in a font, eg. checking if |
9c5ed9a7 | 49 | ligatures are present (done for FreeType2) |
bf9dd17c | 50 | |
faa9b3e7 TC |
51 | - font synthesis - synthesize a bold or slanted font from a normal font |
52 | (or even from an existing bold or slanted font) | |
bf9dd17c | 53 | |
faa9b3e7 | 54 | - utf8 support for text output |
c855ad0e TC |
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) | |
faa9b3e7 TC |
82 | |
83 | - image rotation, 3 ways of doing rotation: | |
faa9b3e7 TC |
84 | - rotation by shearing, which produces makes lengths in the image larger, |
85 | but could be useful | |
a010a7d3 | 86 | (2 of the 3 have been done) |
faa9b3e7 | 87 | |
9c5ed9a7 TC |
88 | - read_multi() needs to handle other multi-image types, |
89 | (handles TIFF and GIF) | |
b921d414 | 90 | |
9c5ed9a7 | 91 | - write_multi() to save other multi-image types, (handles TIFF and GIF) |
f62b2d84 | 92 | |
362e7486 TC |
93 | - compose channels - build a new image based on channels from several |
94 | images | |
95 | ||
da77e827 TC |
96 | - arc outlines |
97 | ||
b921d414 AMH |
98 | Clean up: |
99 | - Make sure everything is doable with the OO interface | |
5f5fe73e | 100 | i_flood_fill() for example. |
f1ac5027 | 101 | |
b921d414 AMH |
102 | - Compile with memory debugging enabled and fix all leaks |
103 | ||
104 | - dynaload.c is strongly tied to perl | |
105 | ||
a106216b | 106 | - Add mycalloc() memory allocation wrappers. |
b921d414 AMH |
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 | ||
f2bc9b80 TC |
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. | |
b921d414 | 119 | |
c855ad0e TC |
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 | ||
b921d414 | 125 | Format specific issues: |
b921d414 AMH |
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 | ||
a106216b | 131 | - Add options for pnm writer to save in any of the p1..P6 |
b921d414 AMH |
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 | ||
a106216b | 136 | - save paletted images as paletted where that's supported. Done |
f62b2d84 | 137 | for gif/tga/bmp/tiff. Not done for png yet. |
f873cb01 | 138 | |
a106216b | 139 | - read other format paletted images as paletted images. This has |
f62b2d84 TC |
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 | |
27d9683e | 143 | |
faa6fa9b TC |
144 | - read more metadata from images, esp tiff tags, EXIF format information |
145 | from TIFF and JPEG. | |
146 | ||
b921d414 AMH |
147 | Documentation: |
148 | - Add to the documentation | |
149 | - Write a tutorial? | |
faa9b3e7 TC |
150 | - sample code and Imager/Samples.pod describing them |
151 | - Imager/Cookbook.pod | |
b921d414 AMH |
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. | |
faa6fa9b | 155 | - see the IRC log in design/doclayout.txt |