summaryrefslogtreecommitdiff
path: root/DevIL/TODO
blob: 476ce5ecf80fce86975bf837b55cca69efb5b796 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
DevIL TODO:

-----------

Denton:

Bugs:
- Conversion to IL_ALPHA seems to be crashing (WindowsTest.cpp).
- Conversion to IL_ALPHA can be flipped?


By next release:

- NVTT.dll as a delay-loaded DLL.
- Update docs with next DXT code, new mipmap/cubemap access, new SaveL code.
- Update DevIL website with file formats (psd-saving, etc.).
- Add Nebula Device to projects page.
- Add VTF Edit to projects page.
- Add http://vrml.cip.ica.uni-stuttgart.de/dune/install.html to projects page.
- Verify all formats are listed in il_io.c Doxygen documentation.
- http://www.fileformat.info/format/drhalo/sample/index.htm - Check these.
- Update Portable Any Map name in manual and code. http://www.bbhscanners.com/support/infinity_WF/faqs/faq_001.html
- Update http://en.wikipedia.org/wiki/Tagged_Image_File_Format name as above.
- Same with MNG
- Update Targa extensions in manual.
- Update license page on the website.


Easier:
- Find out what is different in the VTF headers that are 64 bytes.
- Make DXT1 decompression function that does not do alpha.
- Implement ilIsValid calls for ROT.
- Make sure ilFixImage is called everytime something is loaded.
- Add BLP loading of alpha sizes other than 0 and 1 for BLP2 RAW.
- Add BLP loading of mipmaps for all other types (jpeg will be the hardest).
- Find out why BLP2 files do not follow DXTC specs when width or height < 4.
  It looks like they are not wasting space with the small mipmaps.
  An example is a 2x8 image in DXT5.  Their mipmap length claims to be 16, instead of 32.
- Recompile libtiff with extra options (but not jpeg...).
- Clean up ilSetAlpha.
- DxtcReadColor and DxtcReadColors need to expand the colours from 565 to 888 properly.
- Add faces to WindowsTest.
- Add reading other files in directory to WindowsTest, so you can easily view all files in a dir.
- Finish BLP loading (indexed mipmaps, jpeg data).
- dcraw support
- http://en.wikipedia.org/wiki/2xSaI
- Clean up WDP code.
- Get WDP code to do conversions within the WDP library (check to see if type/format set by user).
- Get WDP code to properly do float, short, etc.
- Make DecompressDXT1 and DecompressDXT1a functions separate (.blp files could use this).
- Keep TPL DXT data.
- DecompressDXT1 (and more) do not set an error if returning IL_FALSE (should be an internal error, I think).
- Add ilIsValidFits* functions to il_io.c.
- Add ilIsValidWdp* functions.
- iGetString may not work properly with Unicode strings.
- Look at adding ilIsValid* for mng, iff, wbmp, wal and pxr.
- Added ilSetError error codes to il_files.c.
- Get rid of check for precache.
- If IL_NO_JP2 is defined, lines 306-307 shouldn't just cause the entire thing to fail.  We should just skip that entry.
- Change ilConvertBuffer to be able to convert paletted images as well.
- Fix MSVC8 solutions for text files.
- ilSavePnmF needs to set FName if not called by ilSavePnm.
- Make TPL_CMP case in iLoadTplInternal code more modular (also in il_dds.c).
- Get rid of iluSwapColours call in ilutConvertToSDLSurface.
- Use GL/glext.h.
- Update Eclipse projects.
- Add Code::Blocks projects.
- Check to make sure all VTF formats are supported.
- Look at DDSTextureLoader.cpp for new DDS formats.
- http://www.leunen.com/cbuilder/rotbmp.html
- 3d mipmaps and better 2d: http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=236590&fpart=2
  http://zach.in.tu-clausthal.de/teaching/cg2_07/literatur/frame_buffer_objects.html
  http://objectmix.com/graphics/745877-glgeneratemipmapext.html
- Make libsquish and NVTT code compress volume textures (do each slice separately).
- Check .dcx code - does it even load multiple images?
- Make ilBlit either error with color indexed images or work with them.
- iluScale: Make ilTexImage or whatever actually use Temp->Data instead of copying.
- Get rid of globals in il_dds.c and ilu_scale2d.c.
- Make ilApplyPal also work for file streams and lumps.
- Make a version of ilApplyPal where a palette buffer and palette type are specified.
- Renormalize FITS and DICOM files (make it an option?).
- Add scaling functions to IL (and wrappers in ILU).
- Fix DXT2 and DXT4 loading.
- Add _ilLoadExt/_ilSaveExt Unicode in il_states.c.
- XCF (Gimp) support


More involved:
- ILinfo struct still has number of images...
- Use loaded mipmaps in OpenGL and DirectX.
- JPEG and PNG in .bmp files?
- It looks like ilSetRead/ilSetWrite don't actually do anything.
- Run Valgrind on library - all functions.
- Make iSaveJp2Internal and iSaveExrInternal work with palettes (make ilConvertBuffer work on palettes as well).
- Make .ico/.icns uses Mipmaps field instead for smaller icons (can icns have multiple images?).
- Work on http://en.wikipedia.org/wiki/Apple_Icon_Image page.
- http://mirrored.xentax.com/gfe/index.html (lots of game graphics formats)
- Strife textures
- Starcraft GRP textures - http://web.archive.org/web/20041011165218/http://user.cs.tu-berlin.de/~mickyk/cv.html
- Commenting out lines 729-731 in pngread.c of libpng (1.2.9?) will allow reading of certain malformed Vista PNG-compressed .ico files with extra data at the end of the stream.  An example can be found in test/in and was created using Microangelo.
- Add .ico/.icns saving.
- Readd CMAKE support
- Better static lib support in MSVC++ 8/9
- Median cut quantization
- Lib EXIF support
- APNG support
- Koala support
- Flashpix (.fpx) support
- Multipage PNM files
- Fortran support
- D language support - There exists a program to convert C headers to D.
- Better DirectX 10 support
- Open URL in WindowsTest not working
- Should probably check for errors in iGetWdpHead and etc...
- ilGetAlpha returns malloc'ed memory that cannot be freed by the caller.
- Support for DX10 .dds files - one new format is found in HDRRendering sample in nVidia DX10 SDK.
- More checks for headers of unknown file types
- Set CompSize in ReadData of il_dds.c for DDS_LINEARSIZE flag?
- Look at resize filters in VTFEdit.
- Get rid of globals in il_dds.c.
- TIFF with JPEG encoding
- Bicubic scaling
- Freebasic support
- Multiple images in FITs files (through extensions).
- Reorder loading/saving in il_io.c
- Get il_vtf.c to do less memory allocation.  Just use the precache function.
- In il_gif.c, make sure subimages with offsets will not lead to an overflow.
- il_bmp.c / il_dds.c / il_dds-save.c may not be safe for Big Endian for 16-bit data.
- Change how mipmaps are stored (do not use Next pointer in ILimage).
- Check ASCII PPM code for the ability to read data that wraps around to multiple lines.
- Check return on all ilFixImage calls.
- Printing not working from Windows test.
- Can ilConvertImage deal correctly with signed image formats?
- Add function to create cubemaps.
- Request compressed texture data in ilutGLSetTex2D?
- Upload cubemaps directly to OpenGL/D3D.
- Change some calls (such as in il_tiff.c) to ilGetString to non-Unicode.
- Check saving of Luminance (8 bpp/1 Bpp) BMP
- Check compatibility with all the files in the BMP Suite.
- IL_COLOUR_INDEX:  must be implemented in iluReplaceColour(ILubyte Red, ILubyte Green, ILubyte Blue, ILfloat Tolerance);
- iluEqualize must be implemented for various Bpc
- Update the state stack in IL.  Right now, it only saves part of the states when you push/pop.
- Redo Compress in il_dds-save.c.
- Check 16-bit images being loaded have their lower bits properly set.  An example is the il_dds.c entry on 2009-01-15.
- Fix image loading problems listed on http://www.seriema.net/thumbview/index.php?page=compatibility.
- Look at http://en.wikipedia.org/wiki/Comparison_of_graphics_file_formats
- PNG and JPG compression in .bmp files?
- Scan line table for RLE .tga files.
- Allow more formats for saving .tga (does not do IL_ALPHA for instance) - also in iTargaSize.
  Make sure iConvertImage is called.  Right now, it would not be.
- XBM support.
- Check XPM support for different types: http://en.wikipedia.org/wiki/XPM_(image_format)
- Find test images for all .tpl formats.
- Create new palette types for luminance, luminance-alpha and alpha (.tpl has luminance-alpha) (also change ilutConvertToSDLSurface and maybe others).
- iGetActiveNum needs to be rewritten somehow to allow for mipmaps under a cubemap in an animation chain (extreme example).
- TPL saving
- Test Windows Mobile code.
- OpenMP support: http://stackoverflow.com/questions/326487/multithreaded-image-processing-in-c
  http://www.ddj.com/architect/184405586
- Shear rotation: http://www.codeproject.com/KB/graphics/rotatebyshear.aspx
- Icon Library (.icl) support.
- Test all DDS types.
- New (DX10) DDS types
- Gamecube BMD and BTI support (http://www.amnoid.de/gc/)
- Conversion from half to int is producing artifacts.
- Support for mp3 frames with Unicode strings


Lots of work:
- Linux Unicode support is partially broken.
- Write own .exr routines.
- Native WDP support
- Enable descriptive error strings in IL.
- Librsvg
- Give estimates for buffer sizes for ilSaveL.
- MNG saving
- Metadata
- Thread safe version
- Add flag for determining whether DDS data is outdated.
- TIFF saving to file streams and lumps
- Use fseek/ftell 64-bit?
- Check for any external library pointers that are assumed to be 32-bit.
- Possibly make palettes always 768 (or 1024) bytes so that it is not possible to access outside by bad data?
- Add padding options, so that each line could be DWORD-padded, for instance.
- Add dithering.
- Work on making DevIL more stable.  There's probably a few places where I don't check the return value of ilNewImage, for instance.
- Add support for callbacks so that users can create progress meters for loading and saving in their applications.  We could extend this idea further and allow cancellation of loading/saving images.
- global use of restricted pointers where available (for now only il_bmp.{c,h} uses it)
- iluScaleColours is BUGGED, doesn't handle the image with the correct type! more Bpc (except luminance and paletted one)
- Add a real Layer facility.
- IL_LUMINANCE_ALPHA support must be tested in ilApplyPal();
- ilApplyPal should work on any type of image, not only IL_BYTE or IL_UNSIGNED_BYTE
- Look at adding FreeType support to ILU.
- Work on the signed/unsigned conversions a bit more (IL_BYTE versus IL_UNSIGNED_BYTE, etc.).  A good link for defining signed formats is http://www.sgi.com/software/opengl/advanced98/notes/node31.html .
- Add TWAIN support.
- Add clipboard and printing support in Linux.
- Finish support for regions in ILU.
- Add support for regions in IL.  This could be used to save only a specific portion of an image.
- Add support for user-defined filters (possibly of a user-defined size).
- Add more filters.  Some sites to look at are http://www.jasonwaltman.com/thesis/introduction.html http://www.dai.ed.ac.uk/CVonline/transf.htm http://www.fortunecity.com/lavendar/kane/39/ffpg.htm and http://www.opengl.org/developers/documentation/Version1.2/1.2specs/convolution_border_modes.txt .  The last link describes ways to handle borders for the convolution filters.  It might be worthwhile to allow these kinds of options.
- Possibly add support for other colour spaces besides RGB (CMYK, YUV, etc.)
- Implement a scripting "language" with LUA for ILU.  This way, people can generate scripts to run a certain set of filters on all images.
- Look at other rescaling algorithms:
http://java.sun.com/products/java-media/jai/forDevelopers/jai1_0guide/Geom-image-manip.doc.html
http://java.sun.com/products/java-media/jai/forDevelopers/jai1_0guide/Geom-image-manip.doc.html#55431
http://www.npac.syr.edu/projects/nasa/MILOJE/final/node36.html
http://www.ultranet.com/~aramini/design.html
- ilKeyColor ilAddKey...
- Find a way to make the filters (especially the convolution filters) work in three dimensions.
- Make better versions of the DevIL ports of the NeHe tutorials.  Several of the tutorials don't call ilInit, for instance.
- Change parameters of iread to use ILsizei.
- Make sure all bugs in bug tracker are squashed.


Questions:
- Should IL_CONV_PAL convert to more than RGB?
- Possibly readd VC6 projects?
- Add BeOS support back in?
- Create Dev-C++/MingW/Cygwin .a files for releases?
- Does ilIsValidTga generate an unncessary IL_INVALID_EXTENSION error?
- Why is IL_HALF even used in ilut_directx9.c?
- Fix problems loading .dds files on Big Endian machines (still a problem or not?)
- Should we be calculating DXT endpoints before converting data to 565 format?
- Use Extreme DXT compression code?
- Support half data internally?
- Will ilDetermineType fail if file reading functions are overriden?
- Is ilSaveCHeader fine with Unicode?
- Should ilFlipSurfaceDxtcData and more work on mipmaps/cubemaps as well?
- Should ilImageToDxtcData work on cubemaps?
- Should we seek back to the initial position on filestreams?
- Should we return the number of bytes read in loading lumps?
- Should we be renormalizing float and double data in FITS files?


From old TODO:
For 1.7.0
- fixed OpenGL Loading (breaks old code which inverted the images)
- iluReplaceColour should have a color to describe which color to set.
- ilBindImage must return a result. It may fail!
- ilInit() call iSetImage0 and ilBindTemp. This shouldn't happen and image names must start from 0
- Rename iGetIntegervImage to ilGetImageIntegerv and make it public

Matej:
- Make a test suite (IL ok, now ILU tests)
- Make DevIL parts that require external libraries modular
- Make the library include files correct (fix the config.h problem)
- Look into TIFF loading (support for images with greater bpp should be possible)
- Fix examples