1.5.8a
------

- Fixed a major bug in ilTexSubImage2D_().
- Renamed ilTexSubImage2D() and ilTexSubImage2D_() to ilTexSubImage() and ilTexSubImage_(), respectively.
- ilClearImage now uses the correct error code.
- Fixed a bug in ilTexImage_() that sets IL_OUT_OF_MEMORY, even when there is plenty of memory, thanks to ABee.
- Fixed bugs in the ilCopyPixels family that dealt with not calculating the offsets correctly and added error-checking to them to make sure the caller wasn't requesting dimensions too large.
- Replaced all the 4x4 filter matrices with 3x3 filter matrices.
- Added ilColoursUsed().
- Added iluPixelize().
- Changed ilColoursUsed() to use a hash table, but it's still pretty damn slow...
- Added ilHint().
- Added ilutGetHPal().
- Added ilClearColour() and changed ilClearImage() to use the values passed to it.
- Optimized ilColoursUsed() by using a totally different algorithm (quicksort).
- Fixed ilConvertImage(GL_LUMINANCE) when the source was a bgr(a) image.



1.5.7a
------

- Added some support for 1-bit .bmp's.
- 16-bit targa files are now converted to 24-bit on-the-fly.
- Fixed a bug in iReadUnmapTga() where it only read 24-bit targas.
- Added iluVersion() and ilutVersion().
- Added ILUT_OPENGL_CONV to ilut to be enforced in ilutOglFormat() in ilut/opengl.c.
- Started enforcing IL_CONV_PAL (automatically converts palette'd images to unmapped images).
- Added checks for IL_ORIGIN_SET to more image formats.
- Moved ilMirrorImage() and ilNegativeImage() to ilu from il.
- Added iluEnlargeCanvas().
- Fixed a bug in ilCopyPixels2D() and ilCopyPixels3D() when the destination was not the same size as the source.
- Added iluCropImage2D() and iluCropImage3D().
- Fixed a stupid bug in iluNegativeImage().
- Changed a lot of ilu function names from iluxxxImage to iluxxx - the Image part was sorta redundant, as this *is* an image lib.
- Added filter.c and everything within.


1.5.2a
------

- Started differentiating between SizeOfPlane and SizeOfData somewhat.
- Updated header.c to output the depth.
- Fixed a bug in ilCopyImage_() where it was using iCurImage instead of Image.
- Updated ilMirrorImage() to work with depths of other than just 1.
- Updated ilFlipImage() to work with depths of other than just 1.
- Changed ilCopyPixels() to ilCopyPixels2D() and created 1D and 3D versions.
- Got rid of the now-obsolete IL_IMAGE_1D, IL_IMAGE_2D and IL_IMAGE_3D #define's and removed Target params from ilActiveImage(), ilActiveMipmap() and ilBindImage().
- Added new scaling functions (iluScaleImage1D and iluScaleImage3D) to ilu.
- Added new rotation function to ilu.
- Renamed ilTexImage2D() to ilTexImage().
- Fixed where I accidentally left ILUT_USE_ALLEGRO #define'd in ilut.h.


1.5.0a
------

- Removed ilRealloc()/ilRecalloc() from being global...it's only used in istack.c now.
- Changed the ILTargaSave struct in il.h to use a 255-char array instead of a char pointer for ID, as VB didn't like it, and I also removed IDLen.
- Added ilVersion() and the IL_VERSION #define in il.h.  This is to check to see if your executable was compiled with a different version of OpenIL than what is on the user's system.
- Removed ilGetFloat()/ilGetFloatv() from il.h.
- Updated the Cpp Wrapper project by adding an ilRender class.
- Fixed ilSaveBitmap() from unnecessarily swapping the colours.
- Updated ilSwapColours() to work with palettes better.
- Added an option in the OpenIL states to automagically convert palette'd images on loading, which is not used yet.
- Commented the butt out of OpenIL.
- Added image identification to ilLoadImage().
- Changed comments at the beginning of some exported functions to use //! instead of just //, so if you want to create documentation with DOxygen (http://www.stack.nl/~dimitri/doxygen/download.html) if desired.
- Added ilMirrorImage().
- Added ilNegativeImage().
- Changed ilutConvertToAlleg() and ilutConvertToHBitmap() of ilut to be exported.
- Changed iSetInputFile() to use itell instead of ftell.
- Created a new iDefaultEof() function that will work on implementations that don't have one.
- Moved all the default file-reading functions to il.h and exported them.
- Removed all references to fEofProc().
- Changed ilGenImages() to use ilNewImage(1, 1, 1, 1) instead of ilNewImage(0, 0, 0, 0) to prevent division by 0 errors.
- Added ilSetDefaultFileCallbacks().
- Added Visual Basic stuff, thanks to Timo.



1.4.7a
------

- Fixed a potentially fatal error in ilConvertImage if converting from a palette'd image.
- Fixed ReadProc to take 4 parameters instead of just 3...it was causing problems with iread, which takes two size parameters instead of just one.
- Started preliminary support for 1 and 4-bit .bmp's.
- Fixed 8-bit .bmp loading.
- Rewrote iFreeMem() and a little of ilDeleteImages() in istack.c to fix a rare but very harmful bug when an image isn't loaded completely.
- Added support for more palettes in ilConvertPal().
- Updated png.c to use the new cross-language file-reading.  This is the only lib that I could get to use the cross-language stuff for operating on already-opened files.



1.4.6a
------

- Updated openil.def to include ilSetFileCallbacks, ilRegisterFormat and ilRemoveFormat.
- Changed all the new portable file functions to use the __stdcall convention (ILAPIENTRY) and created default functions that use __stdcall, as the stdio.h file functions use __cdecl.


1.4.5a
------

- Changed ilut's DllMain().
- Added support for the .jpeg and .jpe extensions instead of just .jpg.
- Fixed iSeekFile().
- Added complete support for using your own file routines (so other languages can use the ilLoadxxxF file routines).
- Added register.c and register.h in and appropriate typedefs and function declarations in il.h.
- Removed the "else" in front of all the tests in ilLoadImage and ilSaveImage...they were unnecessary.
- Rewrote ilutOglScreen() to not close the current image.
- Rewrote ilConvertImage() to not close the current image.
- Updated djgpp.mak to use register.c.



1.4.2a
------

- Moved all il*.h out of /OpenIL* and into /include/il.
- Changed ABee's e-mail address where relevant.
- Updated the openil.def file, which didn't include the jpeg functions.
- Updated the Delphi headers to use the correct default IL_NO_XXX #define's.
- #define'd _IL_BUILD_LIBRARY in the internal.h files of ilu and ilut.  I'm so surprised this warning didn't pop up earlier, but oh well, it's a Microsoft product I'm compiling with. ;-)
- Updated the out of date djgpp.mak (not tested).


1.4.1a
------

- Changed png.h to png_.h
- Added internal but exported functions to the .def files.
- Better Delphi support from Alexander Blach, plus a lovely test app in the /Delphi/Test folder.
- Changed the readme.txt file some.


1.4.0a
------

New goodies, mostly thanks to Alexander Blach (ABee).
- Delphi headers in the /Delphi directory created by ABee.
- .Def files in the /Def directory created by ABee.
- .Def files added to the projects.


1.3.6a
------

Not really much in this release...just trying to make the library more bearable to use.
- Several fixes in the project files
- Changes to the readme.
- Fixed the icons, which got corrupted in previous releases without my knowledge.
- Replaced the #flipCode logo, which had gotten corrupted, too.


1.3.5a
------

Just bugfixes mostly.
- ilutStartup() doesn't call ilutOglInit() anymore, due to problems with OpenGL not being initialized beforehand.
- If image loading doesn't succeed, a future call to ilDeleteImages should not fail anymore.


1.3.4a
------

- Changed targa.c in iReadUnmapTga() by commenting-out the line that used GL_UNSIGNED_SHORT_5_5_5_1_EXT.  It required glext.h.
- Restructured project files from Lightman.
- Cpp wrapper compiles into a .lib.


1.3.3a
------

- Added IL_IMAGE_DATA, IL_PALETTE_BPP and IL_PALETTE_NUM_COLS to il.h and used them in states.c.
- Updated the extremely out-of-date readme.txt.
- Changed all the local variables in iConvertImage to static.
- Started on converting from GL_COLOR_INDEX in iConvertImage().
- In ilConvertPal(), if the dest and src format are the same, it now returns GL_TRUE instead  of erroring.
- Modified ilut's MakeGLCompliant() to use il's ilConvertImage().
- Shortened all source filenames to 8.3 character format for systems without long filenames.
- Moved the globals from istack.c to istack.h.
- Added image validation for targas to tga.c.
- Combined BMPHEAD and BMPINFO together in bmp.h and bmp.c as BMPHEAD.
- Added image validation for bitmaps to bmp.c.
- Created ilSaveJascPal().
- Added all the IL_NO_* #define's to il.h and commented them out (except for IL_NO_GIF).
- Started on ilSavePcx() - doesn't work yet.
- Fixed ilSaveSgi() to save in rgb(a) format instead of bgr(a) format.
- Added IL_VERSION_1_3_3 to il.h


1.3.1a
------

- Completely rewrote rle.c and added it back into the project.
- ilRleCompress() added to rle.c.
- Changed targa.c to utilize rle compression.
- Started ilSaveSgi() in sgi.c.
- Changed all the SaveLittle* and SaveBig* functions in endianness.c where I had copied them from LoadLittle* and LoadBig*, respectively, so they were not swapping the right value.
- sgi.c's ilSaveSgi() works, except for saving rle-compressed files.
- Changed .jpg's origin to upper-left.
- Changed .pcx's origin to upper-left.
- Edited bmp.c to read in a pad pixel instead of just a pad byte when the image's width is of an uneven dimension.
- Implemented ilSaveBitmap() in bmp.c in its entirety.


1.2.8a
------

- Finished the majority of the Cpp Wrapper project.
- Found out how to initialize OpenIL at startup in gcc at http://gcc.gnu.org/ml/gcc-help/1999-11n/msg00029.html, so changed main.c of each lib.
- Actually got Allegro to utilize OpenIL with some minor reworking.  This should be automagic in the next version.


1.2.7a
------

- Got rid of the TARGA struct in targa.h since it wasn't being used and modified function parameters accordingly.
- Added several functions to endianness.c and started using them.  I won't be able to read whole structs from files at once anymore so that I can support both little and big endian processors.  Oh well, that's the price I pay for portability. =/  I didn't change pal.c, because it doesn't use iread yet...will be changed in the next release.  I can't answer for libs I am utilizing, but OpenIL should be fairly portable to big-endian systems now.
- Added support for saving .png files.


1.2.6a
------

- Added preliminary support for DirectX (ack) in ilut's directx.c (and .h).
- Did everything in mipmap.c from scratch.
- Changed iCurrentImage to iCurImage...just nicer-looking and easier to type. =]
- Changed the Next and Mipmaps data members of ILimage to be of type ILimage...a whole lot easier to use than having to cast GLvoid*.  Also added NumNext and NumMips members - not sure if they are necessary though.  They may just add bloat to an already large struct.  Also added SizeOfPlane to the struct (will help with 3d texture volumes).
- Streamlined ilReadUncompBmp() in bmp.c a lot.
- The targa functions now skip over the image id instead of allocating memory for it, reading it, then immediately freeing the memory.
- Implemented ilTexImage2D and ilTexSubImage2D functions.
- Changed all loading functions and functions that update iCurImage.  The snippet of code that did this previously was like this:
 	Image = ilNewImage(Width, Height, Depth, Bpp);
	if (Image == NULL) {
		ilSetError(IL_OUT_OF_MEMORY);
		return GL_FALSE;
	}
	ilCloseImage(iCurImage);
	ilSetCurImage(Image);
Now the code is like:
	if (!ilTexImage2D(Width, Height, Depth, Bpp, GL_RGB, NULL)) {
		ilSetError(IL_OUT_OF_MEMORY);
		return GL_FALSE;
	}
- Fixed .bmp support to correctly skip padding.
- Found out .pcx support is pretty shoddy...I will rewrite it soon.
  - Rewrote the .pcx reading function iUncompressPcx from scratch...works perfectly. =]  Sometimes it's just best to give something a fresh approach.
- Added .pcx validity test functions.
- Changed .raw functions to take Depth as an parameter.
- Changed from absolute to relative paths for the test .exe's in the MSVC++ project settings.
- Added back in MakeGLCompliant() to opengl.c of ilut.  Finally got WindowTest to display images with dimensions that are not powers of 2, as MakeGLCompliant() automagically converts the texture to the appropriate dimensions.  The only foreseeable problem is if the texture is greater than 256x256, because the VooDoo series of cards may choke and die.  Is there an elegant way around this?  Maybe I could introduce a new ilDisable/ilEnable() enum.  I'm using glGetIntegerv(GL_MAX_TEXTURE_SIZE, &MaxTexW); as a temporary hack right now.
- Worked some more on iConvertImage() and performed the first test - converting from rgb to luminance, and it works. =]  The values I used for converting are based on the NTSC values for television and were obtained from http://www.opengl.org/Coding/KilgardTechniques/oglpitfall/oglpitfall.html, section 6.
- Changed the #define IL_ILLEGAL_PARAM to IL_INVALID_PARAM.  Maybe I should just use IL_INVALID_VALUE?
- Added #pragma comment(linker, "/NODEFAULTLIB:libc") to openil\internal.h to get rid of that damn warning.
- Cleaned-up openilut\opengl.c a little bit and got rid of all those erraneous commented-out functions.  Also wrapped wglGetProcAddress() in an #ifdef _WIN32/#endif pair.  Also flips the texture if the origin is different than the current OpenIL origin to match (will if the user sets it correctly) OpenGL's origin.
- Added ilGetPalBaseType() in utility.c.
- Added support for Dr. Halo palettes (always output with .cut files).
- Added back in png.c and png.h to the project.
- Changed dll.c to main.c and wrapped the DllMain in an #ifdef/#endif pair.
- Made a makefile for Djgpp.  It's missing the .c files that require an external library to operate, but they can be added back in easily (not using dos edit!).  It has been tested to create appropriate output, but has yet to be tested in an actual program.
- Added an \objs folder for each OpenIL* dir for Djgpp compile.
- Found out IL_PACKSTRUCT needs to come before the name of the struct instead of after...changed it in all files that use IL_PACKSTRUCT. =]
- Fixed an extremely harmful memory problem in sgi.c in iReadRleSgi() where I was malloc'ing only Head->ZSize instead of Head->ZSize * sizeof(GLubyte*).  Took me a few hours to find that one...the VC++ debugger didn't help much at all. =/  Rewrote iGetScanLine() to not use iExpandScanLine() and got rid of iExpandScanLine().
- Started on iff.c, my new image format (oh gawd, not another one =), but then I found out later that .iff is already a graphics format from the Amiga.  Need to find a new extension...
- Changed png.c to use libpng's png_set_read_fn().  Added validity-checking functions for png's.



1.1.9a
------

- Changed the screenshot functions in ilut.
- Changed the WindowTest around some.


1.1.8a
-----

- Added back a few loading formats that were inadvertedly removed in the 1.01a release.
- Worked some on the empty iConvertImage function and wrote an ilConvertImage function.  There's a lot more work to do on iConvertImage.
- Replaced false and true with GL_FALSE and GL_TRUE, respectively.
- Added back in .jpg support.
- Added in .tif support with the help of libtiff.
- Added in .col support.
- Improved .ppm and .pgm support considerably - also added .pbm support (btw, psp4 does not output proper binary .pbm files, so I couldn't test it well =/ ).
- ilSaveImage added.
- .pic, .pcd and .cut loading added.
- Changed .pcx to be in rgb order (had it as bgr for the palette).
- Added utility.cpp and functions in it.
- Updated ilu's error strings.
- Updated ilCloseImage to take heed of mipmaps, extra and chained images (none of which are used yet but may be soon enough...).


1.0.1a
-----

Restructured lots of the library so that it now uses an image stack (in imagestack.*).  Now images have to be binded before being used.  All loading functions now load directly into the stack.


0.0.1a - First release
---------------------

Released in sorta bad condition with little documentation.
