Up to Lgi...
- Added some GIF89a block handling into the GIF reader to support different types of transparency. The GIF reader now creates an alpha map for the transparent pixels.
- Fixed a bug in void *operator(int) of the Iterator<> template.
- Fixed a duplicate scanline bug in the error diffusion colour reduction code.
- [Win32] Added work around for a bug in InvalidateRect where if you pass in a NULL rectangle on a top level window it invalidates the entire desktop instead of just your top level window. This fixes the desktop flickering when you open a file via the GFileSelect dialog.
- Fixed all combinations of GDC_SET and GDC_ALPHA (with constant alpha) Blt's.
- Fixed GClipBoard bitmap import to write 255 into all the pixels of a 32bit image's alpha channel. Windows sets them to 0, or transparent. Stupid windows.
- Fixed the right arrow on a tree control to close the current branch and set the selection to the parent item. Same as the Windows UI standard.
- Changed LgiRes and LGI's resource code to save/load the string resource XML attributes not as Text(##)="..." but as ##="...", where ## is the language code used in many other applications and systems. e.g.:
- Added menu catagorization to the GCombo widget. Pass in either GV_STRING to group by first character or GV_INT32 to group by atoi(). The set/get function is called "Sub(...)".
- Fixed being able to switch on Glyph Sub in Windows XP.
- Reimplemented the GFont class to use a string layout class GDisplayString. GDisplayString measures and lays out a single line of text, including tabs, glyph substitution and character conversion into native characters for output on the current platform. This allows the application writer to store layout information between displays, thus cutting down the amount of charcter conversion, glyph lookup, and string measurement that goes on at the font subsystem level. Static screen objects will get the most benifit from this, as you can create a GDisplayString and then just reuse it every time you paint yourself. Display and measurement once created is very quick. Even if you recreate the GDisplayString string every paint you'll still get benifits by not having to reconvert the string for measurement and then display. Also this resolves the issue of measuring glyph subbed strings, which wasn't implemented in the previous version of LGI. The GFont implementation is also simplified because all the layout related code is no longer required to be implemented for every platform supported, because it's in a difference class. Only raw string meansurement and drawing is implemented in the GFont now, making it easier to port.
- Added Linux makefile's.