[Daily update - Thursday, April 24]
Download latest build here:
http://www.gapidraw.com/GapiDraw200(2003-04-24).exe
New:
(1) Improved support for Smartphones
-Use the new configuration parameter MinimizeWhenInactive to minimize your application when an incoming call is received
-CGapiApplication will now correctly hide the task bar on all Smartphones
(2) Improved support for PNGs
There is no longer any need to split image and alpha. CreateSurface now has an additional flag: GDSURFACE_ALPHA. If you set this and load a PNG image with transparancy, the surface will contain the alpha values as a gray scale from 0 (transparent) to 255 (opaque)
(3) Improved support for RGBA Surfaces
CGapiRGBASurface is the fastest option when doing stretched alpha blends (AlphaBlt). CGapiRGBASurface can now be either 32-bit or 16-bit (using a 4-4-4-a format for less footprint) using a flag to CreateSurface.
(4) Improved performance to BltFast, AlphaBltFast and FillRect
BltFast with color key, AlphaBltFast, and FillRect are now up to 40% faster. GapiDraw will always operate on two pixels simultaneously, even when color keys are being used. Best performance is achieved if both rectangles to be copied are aligned at a coordinate evenly dividable by 2, there are however also significant improvements when this is not the case. The difference between GapiDraw C++ code and optimized ASM code is now less than 7%.
Note: AlphaBltFast with separate surfaces for image and alpha is much faster than using RGBA surfaces. AlphaBlt with RGBA surfaces is much faster than using separate surfaces for image and alpha. With the new flag GDSURFACE_ALPHA both formats are equally as simple to use. Choose what fits best.
(5) Improved performance with transparent blits and rectangles
GapiDraw now only uses ONE multiplication for each pixel when doing transparent BltFast and FillRect. No lookuptable is used either. Best performance is achieved if both rectangles to be copied are aligned at a coordinate evenly dividable by 2. This was actually one of the more difficult tasks, and I spent several hours producing what proved to be 9 rows of code.
(6) Some changes
-GDABLT_<x> and GDABLTFAST_<x> flags were renamed to GDALPHABLT_<x> and GDALPHABLTFAST<x>.
-A new flag was added to CGapiApplication: MinimizedActive, that will keep ProcessNextFrame active even when the application is minimized.
There have been a huge amount of internal changes (A couple of thousand lines of new code have been written) and I have not yet tested this version to full extent. Use at your own risk. I am however extremely grateful if you do try it out, and if you do, please post any performance improvements.