Documentation
[SDK Documentation] [Release history ]

 

GapiDraw Release History

This document has been updated for use with GapiDraw 4.2 or later.
Last updated on July 11, 2009.

 

GapiDraw Release History

GapiDraw 4 Release History (2008-2009)
GapiDraw 3 Release History (2004-2008)
GapiDraw 2 Release History (2003-2005)
GapiDraw 1 Release History (2002-2005)

 

GapiDraw 4.2
2009-07-11

SDK Improvements

  • Compatible with Windows Marketplace for Mobile. GapiDraw 4.2 does no longer have any dependencies on the Microsoft Game API (GAPI) and is fully compatible with Windows Mobile 6.5 and approved for use in applications to be launched on the Windows Marketplace for Mobile.

 SDK Changes

  • CGapiInput::OpenInput was changed internally to use AllKeys() instead of GAPI to lock all buttons of the device for Windows Marketplace approval. AllKeys behaves slightly different than GAPI on some mobile devices (e.g. not all keys cannot be locked on some devices) so this change might have effect on the behaviour of your current application key input.

 

GapiDraw 4.1
2009-04-08

SDK Improvements

  • Xperia Panel Framework. A new multithreaded framework for creating Sony Ericsson Xperia panels! The new class CGapiPanelApplication is a robust and production proven version of CGapiApplication that fully conforms to the Sony Ericsson panel interface guidelines. Using GapiDraw you can run the same code either as a separate executable file (to help debugging) or as an Xperia panel DLL (for release).
  • Xperia Panel Sample Application. GapiDraw 4.1 ships with a new sample application that shows you how you can set up your Xperia panel applications to compile to both a panel DLL as well as a separate executable file, using the same source code. This sample application uses the new GapiPanelApplication framework.
  • Dithered Gradients. We have added a new option to CGapiSurface::GradientRect you can use to add variable dithering to gradients. You can specify if and how much dithering you want on your gradients. As with all other GapiDraw functions this dithering is very fast and can be done on each frame.

 Bug Fixes

  • Fixed a small memory leak in the CGapiGradient destructor.
  • Fixed a possible byte alignment issue in CGapiSurface::GetDC where the display is rotated
  • Fixed an issue where GradientRect could stall the device when using certain certain pixel widths

 

GapiDraw 4.01
2008-11-19

SDK Improvements

  • Improved performance of FillRect when opacity is used on large surfaces.

 

GapiDraw 4.0
2008-10-07

SDK Improvements

  • DirectDraw support. GapiDraw will now use DirectDraw instead of GAPI or GETRAWFRAMEBUFFER to access the display on Windows Mobile 5.0 devices and later. Switching to DirectDraw means that GapiDraw applications can take advantage of hardware accelerated graphics and run in windowed mode, at the cost of slightly lower performance on devices without hardware acceleration.
     
  • Hardware-accelerated graphics. GapiDraw will now detect and use DirectDraw hardware acceleration on Windows Mobile devices if available. Functions supporting hardware accelerated graphics are marked in the documentation.
     
  • Windowed mode support. You can now run GapiDraw applications at high performance in windowed mode using DirectDraw on Windows Mobile 5.0 devices and later. In windowed mode you can take advantage of the SIP input panel to allow the user to enter text data.
     
  • Fullscreen toggle. You can now seamlessly switch between windowed mode and fullscreen mode on Windows Mobile 5.0 devices and later.
     
  • QuarterSize display. If you use the new display flag GDDISPLAY_QUARTERSIZE, GapiDraw will use a backbuffer that is half the width and half the height of the display, if either the width or the height of the display is greater than 320 pixels. This is a great option for developing and running mobile games on newer mobile devices with display resolutions of 800x480 pixels and more (in this particular example the backbuffer would be sized to 400x240 or 240x400 depending on display orientation).
     
  • GradientRect. GapiDraw 4.0 introduces an optimized gradient fill operation with support for opacity. GradientRect can draw top-to-bottom, bottom-to-top, left-to-right, and right-to-left, and prerenders the entire gradient in two directions for very fast performance.
     
  • Performance improvements. GapiDraw 4.0 adds StrongARM and XScale precaching (pre-reading four cache lines simultaneously) to BltFast and AlphaBltFast for important performance improvements. GapiDraw 4.0 also has improved performance on stationary PCs in windowed mode and much faster GDI surface locking.
     
  • Documentation improvements. All documentation was reviewed and much of it was rewritten. A new and easy to follow "Getting Started with GapiDraw" tutorial was added.
     
  • New advanced tutorial: Breakout. Learn how to use GapiDraw to create a complete mobile game using the easy to follow tutorial "Breakout". You will find Breakout in the samples folder.
     
  • Improved Visual Studio 2008 support. All samples now include ready to run projects for Visual Studio 2008 mobile and stationary environments.

SDK Changes

  • The following flags are no longer used and were removed:

    GDDISPLAY_SYMBIANBUFFERED
    GDDISPLAY_SYMBIANDIRECT
    GDDISPLAY_SYMBIANPALETTE32
    GDDISPLAY_SYMBIANSAFEMODE
    GDDISPLAY_DISCARDBACKBUFFER
    GDDISPLAY_NOLINEARBACKBUFFER
    GDDISPLAY_HI_RES_AWARE
    GDSURFACE_READONLY

    GapiDraw 4.0 is now by default "HI_RES_AWARE" so there is no longer any need to specify that. If you require a display that is not using the full resolution you might want to consider using the display flag GDDISPLAY_QUARTERSIZE instead.
     
  • dwDisplayMode was removed from GDAPPCONFIG since it is no longer possible to start the display in "rotated" mode.
     
  • CGapiApplication now requires a menu bar implemented on Windows Mobile devices to support windowed mode. You need to add a menu bar to your project, name it IDM_GAPIAPPLICATION and add two menu options to it. Name the two menu options ID_VKA and ID_VKB and set them to be of type Popup: FALSE.
     
  • CGapiApplication::CreateSysMemSurfaces and CGapiApplication::CreateVidMemSurfaces were changed, they now take a CGapiSurface* parameter instead of a CGapiDisplay* parameter. This is because the backbuffer can now be in a different size than the display (using the GDDISPLAY_QUARTERSIZE flag).
     
  • Builds for Windows Mobile 5.0 devices and later will now use DirectDraw for graphics, and builds for Pocket PC or Smartphone 2003 devices will continue to use legacy GETRAWFRAMEBUFFER and GAPI. So you might want to distribute two versions of your application for maximum compatibility.
     
  • Removed the two sample applications "MFC" and "GDIDemo"
     
  • Removed the deprecated header files in "GapiDraw\include\win32\multithreaded"

 

GapiDraw 3.8
2008-07-04

SDK Improvements

  • GapiDraw will now automatically create a tray icon on Windows Mobile devices that can be clicked to quickly get back to the application if it should be minimized due to an incoming phone call.
     
  • Changed the startup banner for the evaluation version to show :
    |Powered by GapiDraw 3.8
    |www.gapidraw.com
    This should make GapiDraw more attractive to use for free and non-commercial projects, which can use the evaluation version without any licensing cost. Previously the startup banner was informing the user that it was an evaluation version and can not be used for commercial purposes.

SDK Changes

  • Changed the runtime library for the GapiDraw PC projects (Visual Studio 2005 / 2008) from "Multithreaded DLL" to "Multithreaded".

Bug Fixes

  • If an incoming phone call is received GapiDraw will no longer draw over the incoming phone call dialog, but will instead minimize nicely.
     
  • Implemented a compability workaround for a display issue with the HP rx5700 Pocket PC introduced in GapiDraw 3.7.

 

 

GapiDraw 3.71
2008-06-14

SDK Improvements

  • Added a new method to CGapiDisplay: PrintDebugInformation() to help developers work around issues with some devices.

Bug Fixes

  • Fixed issues with stylus and directional keys not working correctly when starting GapiDraw applications in rotated display mode on some devices
     
  • Implemented new generic code to correctly handle devices not conforming well to the GETRAWBUFFER function

 

GapiDraw 3.7
2008-05-03

SDK Improvements

  • Support for Visual Studio 2008 added.
     
  • GapiDraw now correctly respects the current display rotation when starting up, i.e. if the display is rotated 90 degrees clockwise GapiDraw will now also start up in a 90 degree clockwise rotation.
    This feature requires Pocket PC 2003 or a newer device
     
  • GapiDraw will now properly restore the display rotation when CloseDisplay is called.
    This feature requires Pocket PC 2003 or a newer device

Bug Fixes

  • Button input should now work correctly on all devices.
    This issue was only visible in GapiDraw for Windows Mobile 5.0 builds
     
  • GAPI library fallback should now work correctly for devices that do not support GETRAWFRAMEBUFFER.
    This issue was only visible in GapiDraw for Windows Mobile 5.0 builds

 

GapiDraw 3.6b
2007-02-20

SDK Improvements

  • Win32. GapiDraw will now compile correctly with Visual Studio 2005 sp1.

GapiDraw 3.6a
2006-08-20

SDK Improvements

  • Win32. GapiDraw now includes debug DLL files for all Stationary PC environments. If you want to debug your application for Stationary PCs and want to use GapiDraw as a DLL you have to use these debug DLL files.
  • Win32. Slightly modified GapiApplication so that it now compiles cleanly with warning level set to 4 (W4)

Bug Fixes

  • Win32. GapiDraw now works correctly on the Motorola "Moto Q" Smartphone.

 

GapiDraw 3.6
2006-05-21

SDK Improvements

  • Symbian. Greatly improved and rock-solid direct display access for all Series 60 devices (Symbian OS 6.1 up to 8.0)!
  • Win32. GapiDraw now includes complete support for Visual Studio 2005. Included in the distribution are now both DLL files + statically linked LIB files + all samples recompiled for Visual Studio 2005.

SDK Changes

  • Important - Unicode! The Visual Studio 2005 for PC versions of GapiDraw are built with UNICODE/_UNICODE defined. This means that if you have an older project and want to build for Desktop PCs with Visual Studio 2005 you must also define UNICODE or _UNICODE for desktop PC builds.
  • Palm support is no longer included in the distribution.
  • UIQ support is no longer included in the distribution.
  • PocketHAL support is no longer included in the distribution.
  • The GapiDevice.h file for Symbian display initialization was removed since it is no longer needed.
  • All the flags GAPIDISPLAYSYMBIAN* (including the "safe mode") were removed since they are no longer needed.

Bug Fixes

  • Win32. Fixed a bug where GapiDraw would open the display in a "squeezed" 240x320 -> 240x240 on the Palm Treo 700. This is due to a bug introduced by Palm. GapiDraw 3.6 now correctly initializes the display to 240x240 on that device.
  • Win32. Loading JPEG images on Windows Mobile 5.0 devices now works correctly if the application uses the GapiDraw LIB or DLL that is built with Visual Studio 2005 for Windows Mobile 5.0.

 

GapiDraw 3.51
2005-03-17

SDK Improvements

  • Symbian. Added 18-bit display support for all new Nokia mobile phones (Symbian OS 8 devices).
  • Palm. Improved performance while reading images from resources.
  • Win32. Added two new .NET helper functions: PaintOntoWindowExt and PaintOntoHandleExt.

Bug Fixes

  • Win32. Fixed a bug where AlphaBlt would sometimes not draw anything when clipping was enabled.

Known issues

  • PocketHAL. PocketHAL 0.7.6 incorrectly posts a WM_ACTIVATE message after the first Flip() (in PocketHAL this is called Swap). The effect is that PocketHAL applications gets minimized once they are started. The temporary solution is to comment out line 663 in GapiApplication.cpp if you are using PocketHAL with GapiDraw.

 

GapiDraw 3.5c
2005-03-17

SDK Additions

  • Symbian. GapiDraw for Symbian is now shipped as two separate LIB files - one for Series 60 devices, and one for UIQ devices.
  • Symbian. The Symbian sample applications now ships with an <appname>_caption.rss resource file so that they now show the correct application name.

SDK Changes

  • Symbian. The Symbian sample build scripts (BuildSample.cmd) now assume GapiDraw is installed on C:. If you have installed GapiDraw on another partition, please change line #2 in all BuildSample.cmd script files.
  • Win32. The Dell X50 sends dual key codes for each button press, the second "shadow" key press (value 91) is now filtered by CGapiApplication.

Bug Fixes

  • Symbian. GapiDraw now works correctly on the SendoX device.
  • Symbian. The UIQ sample applications did not compile correctly. This has been fixed by splitting the Symbian LIB file into two versions - one for the Series 60 devices, and one for the UIQ devices.
  • Win32. Fixed a rotation issue with some of the sample applications when starting in non-portrait display mode on high resolution Windows Mobile 2003SE devices.

 

GapiDraw 3.5b
2005-02-10

SDK Additions

  • Win32: Added DLL support for stationary PCs for environments that cannot use the statically linked library (such as the .NET environment). DLL's have been added for Visual Studio 6.0 ("dll\xp") and Visual Studio .NET 2003 ("dll\vs2003").
  • Win32: Added two new function calls to CGapiDisplay to get the DirectDraw interface and primary surface: CGapiDisplay::GetDirectDrawInterface() and CGapiDisplay::GetDirectDrawPrimarySurface().
  • Win32: It's now possible to retrieve the base class for objects in the .NET wrapper:
    CGapiSurface* CGapiMaskSurface_GetSurface(CGapiMaskSurface* pMaskSurface)
    CGapiSurface* CGapiDisplay_GetSurface(CGapiDisplay* pDisplay)
    CGapiSurface* CGapiBitmapFont_GetSurface(CGapiBitmapFont* pBitmapFont)
    CGapiRGBASurface* CGapiCursor_GetRGBASurface(CGapiCursor* pCursor)
  • Win32: Added an easy way to free the memory allocated by a CGapiRGBASurface:
    HRESULT CGapiRGBASurface::FreeSurface()

Bug Fixes

  • Win32: Fixed an issue with the upcoming "Next Version of Windows Mobile" related to the use of Imgdecmp.dll.
  • Win32: Fixed all EVC3 samples so that they now do not try to open the display in HI_RES_AWARE mode (VGA resolution) on Windows Mobile 2003 SE devices.
  • Win32: The following functions were not exported correctly through the .NET wrapper:
    HRESULT CGapiRGBASurface_CreateSurfaceFromVFS(...)
    HRESULT CGapiRGBASurface_CreateSurfaceFromVFSFile(...)

 

GapiDraw 3.5a
2005-01-14

SDK Additions

  • Added DLL support for the Windows Mobile 2003 emulator. This makes it possible to create new applications using the Compact Framework C# wrapper in the emulator.

Bug Fixes

  • Fixed an issue on the Palm platform causing applications to cause an exception on exit.
  • The function headers declared in GapiDrawNet.h were not exported through the Pocket PC DLLs. This has been corrected so that it's now again possible to use GapiDraw from the Compact Framework environment.

 

GapiDraw 3.5
2004-11-23

Major Improvements

  • Tapwave Zodiac support! GapiDraw is now delivered as a 100% ARM Native library on the Tapwave platform, with support for hardware accelerated blits through the twGfx library. You do not have to change anything in your code, GapiDraw will automatically store surfaces in video memory and use the hardware blitter if you want it to. The TileDemo sample application now runs at around 120FPS on the Zodiac.
  • Palm GapiTimer support! GapiDraw for Palm now includes timer support to get current frame rate of the device, with the possibility to synchronize the final blit to the display to the vertical blanking period on Tapwave devices to avoid tearing.
  • Palm read-only surfaces! For devices with limited amount of heap memory (such as the Tungsten E) it is now possible to use all the available memory for surfaces by storing them in the storage memory ("feature memory") of the device. You can now create visually advanced applications that use virtually no heap memory on Palm OS 5 devices!
  • Palm DIA Support! GapiDraw for Palm now fully supports the Dynamic Input Area for user input. GapiDraw can be configured to always show the DIA, always hide it, or let the user show or hide it as usual. The display will resize automatically! GapiDraw can also be configured to show or hide the status bar on devices such as the T3 and T5.
  • Better Palm OS Integration! GapiDraw applications now behaves much better as "true" Palm applications, and respects alarms etc for maximum compliance. It is also now possible to choose how keys should be locked.
  • Better Palm OS Emulator support! GapiDraw is now shipped as a 100% native Win32 DLL for the Tapwave simulator, which can be used with Visual Studio workspaces for simple and easy debugging. Just install Visual Studio and the Palm and Tapwave SDKs and you can start creating Palm applications right away!
  • Windows Mobile 2003 SE VGA support! GapiDraw now fully supports high-resolution VGA displays on Windows Mobile 2003 SE devices. A new display flag GDDISPLAY_HI_RES_AWARE was added to allow GapiDraw to use the full resolution, if the flag is not specified GapiDraw will use QVGA 240x320 resolution on all Windows Mobile devices. Please remember to also add a resource called"HI_RES_AWARE" to your application project if you want to take advantage of these higher resolutions to avoid Windows Mobile 2003 SE to scale all stylus coordinates down to QVGA resolution.
  • Anti-aliased lines! GapiDraw now supports anti-aliased lines with clipping using a fast fixed-point WU algorithm. A new flag GDDRAWLINE_ANTIALIAS was added to the CGapiSurface::Drawline function.
  • Faster rotated blits! GapiDraw now has greatly improved performance of rotated blits using Blt. GapiDraw will now calculate a minimal bounding box for the blit which will improve performance when blitting small surfaces onto large destination surfaces.
  • PocketHAL support! GapiDraw now supports the PocketHAL framebuffer library for improved blitting performance on most Pocket PCs. GapiDraw 3.5 is built against PocketHAL 0.7.4.
  • Statically linked library support! GapiDraw is now delivered as both a DLL file and a statically linked LIB file, making it possible to create one-file applications on Palm, Symbian or Windows Mobile.
  • Embedded Visual C++ 4.0 support! All Pocket PC sample applications are now shipped for Embedded Visual C++ 4.0 (Windows Mobile 2003 and later), as well as Embedded Visual C++ 3.0 (Pocket PC 2002 and earlier).

SDK Additions

  • The Minimal sample application was updated to use anti-aliased lines bouncing in the background.
  • All platforms: Added a new function call CGapiApplication::GetGlobal(), that returns a pointer to the global CGapiDraw instance that is required for all object constructors.
  • Symbian: Added a new display flag GDDISPLAY_SYMBIANSAFEMODE to blit the backbuffer to the display using a standard GC BitBlt (required for the emulator and the Siemens SX1 mobile phone).
  • New display flag GDDISPLAY_VSYNC tries to enable synk to the vertical blanking period of the device to eliminate tearing on stationary PCs and PocketHAL devices.
  • New display flags for using PocketHAL: GDDISPLAY_VSYNC, GDDISPLAY_DISCARDBACKBUFFER, and GDDISPLAY_NOLINEARBACKBUFFER. GDDISPLAY_VSYNC will try to enable synk to the vertical blanking period of the device, GDDISPLAY_DISCARDBACKBUFFER will improve PocketHAL performance by allowing PocketHAL to discard the backbuffer between flips, and finally GDDISPLAY_NOLINEARBACKBUFFER will not use a linear backbuffer on PocketHAL devices which will improve performance of the final blit up to 100%.
  • The class CGapiDraw now has a new operation, IsInitialized() to see if the GapiDraw library could be initalized correctly. This function is automatically called by CGapiApplication during startup.

SDK Changes

  • All constructors have changed! All constructors now require a pointer to a global "CGapiDraw" object. This change was necessary to deliver GapiDraw as a statically linked library. You can request the global CGapiDraw object by calling CGapiApplication::GetGlobal().
  • Removed the display flag GDDISPLAY_SHOWLOGO.
  • Removed the configuration option GDAPPCONFIG->bUseVSyncAsFPS, it has been replaced by the display flag GDDISPLAY_USEVSYNC.
  • The flag GDAPPCONFIG->dwTargetFPS has been renamed to GDAPPCONFIG->dwMaxFPS.
  • CGapiSurface::Intersect is no longer a static function. As a consequence the function parameters were modified.
  • Renamed the function CGapiTimer::WaitForNextFrame() to CGapiTimer::UpdateTimer(). The function will only sleep a number of milliseconds if a maximum frame rate limit has been set.

Bug Fixes

  • Symbian: Fixed a display refresh issue on the Siemens SX1 Symbian phone.
  • Win32: GapiDraw should now work correctly on the SPV-500 smartphone. Previous versions of GapiDraw exhibited flickering on the SPV-500 due to an incorrect GAPI implementation on the device.

 

GapiDraw 3.01g
2005-02-10

Bug Fixes

  • Win32: Fixed an issue with the upcoming "Next Version of Windows Mobile" related to the use of Imgdecmp.dll.

 

GapiDraw 3.01f
2004-11-28

SDK Additions

  • Symbian: Added a new display flag GDDISPLAY_SYMBIANSAFEMODE to blit the backbuffer to the display using a standard GC BitBlt (required for the emulator and the Siemens SX1 mobile phone).

Bug Fixes

  • Symbian: Fixed a display refresh issue on the Siemens SX1 Symbian phone.

 

GapiDraw 3.01d
2004-08-27

Bug Fixes

  • Fixed a flickering bug on the Orange SPV 500 caused by the device incorrectly reporting that it used a double buffered display (the function GXIsDisplayDRAMBuffer() returned TRUE) when it in fact did not. GapiDraw will now disregard this flag completely on all newer Windows Mobile devices to avoid this flickering issue to happen on future devices.

 

GapiDraw 3.01c
2004-08-12

SDK Additions

  • New GapiDraw .NET helper functions: PaintOntoWindow and PaintOntoHandle, to work around a bug in the Microsoft .NET Compact Framework.
  • The documentation has been significantly revised.

SDK Changes

  • The "Unregistered version" overlay in windowed mode will now disappear after 10 seconds.

Bug Fixes

  • GapiVFS would sometimes match folder names incorrectly, resulting in a "file not found" error message when the file path was correct. This has been corrected.

 

GapiDraw 3.01b
2004-06-12

SDK Additions

  • Symbian Emulator Support. Support for the Symbian Series 60 emulator environment was added! You can now finally debug GapiDraw applications for Symbian!

Bug Fixes

  • Win32: GapiVFS would previously not work correctly on Windows Mobile devices. It is recommended that all users working with GapiVFS update to 3.01b.
  • Win32: GapiApplicationMT would previously not minimize and restore correctly on Stationary PCs. This has been corrected.
  • Win32: GapiApplicationMT would previously not lock keys correctly on Windows Mobile devices. This has been corrected.
  • Palm: GapiVFS could previously not open files in the virtual file system larger than 64kb. This has been corrected so that GapiVFS/Palm now supports files of any size.
  • Palm: Button mapping on the TapWave Zodiac was updated so that it now works correctly.

 

GapiDraw 3.01
2004-05-28

Major Improvements

  • Palm support! You can now use GapiDraw to create applications for Palm devices! GapiDraw requires Palm OS 5, and has been tested on all PalmOne OS 5 devices and the Tapwave Zodiac. GapiDraw for Palm supports dynamic display resolution changes (such as when the display size is changed on the Palm Tungsten T3) and many other advanced Palm-specific features, making GapiDraw the state-of-the art graphics platform to use for visually advanced applications on Palm!
  • GapiVFS! GapiDraw now ships with a cross-platform virtual file system, similar to the PAK resource format used by Quake. Resources stored in the virtual file system can be individually zip-compressed, and data can be streamed from the virtual file system or copied to a memory buffer using file wrappers. GapiVFS is available for the Palm and Win32 platforms, Symbian already has the MBM format built in which is similar in operation.
  • VFSEdit! Use our free, open sourced VFSEdit application to edit the virtual file system for GapiDraw! Add files to the virtual file system simply by dragging-and-dropping, store files in folders or subfolders, and then use the virtual file system on Windows Mobile or Palm devices to load images or other resources!
  • Palm: No 32kb resource limit! When using GapiVFS on Palm, resources are automatically split into multiple 32kb segments and re-assembled as necessary. Thus the Palm OS 5 system limit of only 32kb data for each resource is no longer present!
  • Win32: Performance improvements! In GapiDraw 3.0 some of the performance was lost due to cross-platform re-design for the Palm and Symbian platforms. In GapiDraw 3.01 we put extensive work in bringing this performance back, and GapiDraw 3.01 is now the fastest GapiDraw ever (up to 100% faster than GapiDraw 3.0 in many operations)!

SDK Additions

  • Cross-platform sample. A new cross-platform sample application skeleton was added for Palm, Symbian, all Windows Mobile devices and Stationary PCs!
  • New GapiApplication operations. New operations in CGapiApplication: GetDisplay, GetBackBuffer, GetInput, GetTimer. These were added to simplify for cross-platform development. CreateVidMemSurfaces is now available on all platforms to simplify cross-platform development.
  • Palm: CGapiDisplay::ResizeDisplay and CGapiApplication::OnScreenSizeChanged.
  • Win32: Added CGapiDisplay::CreateOffscreenDisplay to the GapiDrawNet.h functions.
  • Symbian: New device-detection code in include\symbian\GapiDevice.h supports all Series 60 devices and all UIQ devices, and developers only have to specify devices that differ from the common standard (such as the Motorola U920). The device dection code is run automatically if you base your project on one of the sample applications.
  • Symbian: A new batch command "BuildSample.cmd" was added to build both Series60 and UIQ installation files from each sample application in an easy way.
  • Palm: A new configuration flag in GDAPPCONFIG was added - bHandleScreenSizeChanged. Set this flag to TRUE to allow CGapiApplication to resize the display and backbuffer when the screen size is changed on devices such as the Palm Tungsten T3. After the display has been resized CGapiApplication will call CGapiDisplay::ResizeDisplay and CGapiApplication::OnScreenSizeChanged. If set to FALSE, CGapiApplication will open the display in the smallest possible mode (320x320 on the Tungsten T3) and will not increase the size of the display if the display is resized.

SDK Changes

  • Symbian: The sample applications were cleaned up so that the platform-specific Symbian code required in MyApplication.cpp is down to a minimum.
  • Symbian: The folders "dll\Symbian" and "lib\Symbian" were renamed to "dll\Symbian-armi" and "lib\Symbian-armi" respectively. Please update your paths accordingly.

Bug Fixes

  • Win32: CGapiApplication will now correctly minimize the SIP if it is opened before switching to full screen mode.
  • Win32: Added the missing .NET interface CGapiDisplay_CreateOffscreenDisplay to create windowed applications from the .NET environment.

 

GapiDraw 3.0 - Multi-Platform
2004-01-26

Major Improvements

  • Symbian support! You can now use GapiDraw to create applications for Symbian devices!
  • Unicode support on Stationary PCs! GapiDraw now ships with a new unicode DLL for Windows 2000/XP. It is now possible to create unicode applications on stationary PCs.
  • Windowed mode support! GapiDraw can now be used to create non-fullscreen applications on Pocket PCs! Use the new GapiDisplay::CreateOffscreenDisplay to create a HDC compatible backbuffer. Check out the new GDIDemo sample application for details!

SDK Additions

  • New functions CGapiSurface::CreateSurface(CGapiSurface* pSrcSurface) and CGapiRGBASurface::CreateSurface(CGapiRGBASurface* pSrcSurface) to simplify surface copying.
  • Support for 12-bit displays in the RGB-444 pixel configuration.
  • New object: CGapiDraw. On the Symbian platform this object must be the FIRST to be created from the GapiDraw library, and also the LAST GapiDraw object to be deleted. On other platforms it is not necessary to create a CGapiDraw instance.
  • New blit effects: GDBLTFASTFX_SCREEN and GDBLTFASTFX_OVERLAY.

SDK Changes

  • Important: The syntax for the functions "ProcessNextFrame", "CreateSurfaces", and "CreateVideoSurfaces" was changed. You must update your subclass of CGapiApplication to reflect these changes, otherwise your application will not work with the new release!
  • CGapiApplication::CreateSurfaces was renamed to CreateSysMemSurfaces.
  • CGapiApplication::CreateVideoSurfaces was renamed to CreateVidMemSurfaces.
  • CGapiApplication::ProcessNextFrame was changed to pass a CGapiSurface pointer instead of a CGapiSurface reference.
  • CGapiApplication member variables m_display, m_input, m_timer was changed to pointers for Symbian compatibility.
  • The CGapiApplication configuration parameter bMinimizeOnLostFocus was renamed to bRegainLostFocus and defaults to FALSE.
  • "HRESULT CGapiDisplay::GetBackBuffer(CGapiSurface& surface)" was changed. The function call is now "CGapiSurface* CGapiDisplay::GetBackBuffer()".
  • CGapiInput does no longer lock the keys in the constructor. You now manually need to lock the keys by calling CGapiInput::OpenInput (this is automatically done by CGapiApplication if you use it).
  • The optimized versions for Smartphone2003 and WM2003 were removed. Internal ARM assembler improvements to the GapiDraw core has made the WM2003 optimized versions obsolete.

Bug fixes

  • The multithreaded version of GapiApplication (CGapiApplicationMT) would previously crash on Smartphone 2003 devices due to a threading bug in the file "gx.dll" shipped with all phones. The issue has been solved using a work-around in CGapiApplicationMT.

Internal Changes

  • Parts of BltFast were rewritten in ARM assembler, resulting in a 5-8% performance improvement when no blend effects are used.
  • Grayscale PNG images are now supported by the PNG importer.

 

GapiDraw 2.05b
2005-02-10

Bug Fixes

  • Win32: Fixed an issue with the upcoming "Next Version of Windows Mobile" related to the use of Imgdecmp.dll.

 

GapiDraw 2.05a
2004-10-05

Bug fixes

  • Win32: GapiDraw should now work correctly on the SPV-500 smartphone. Previous versions of GapiDraw exhibited flickering on the SPV-500 due to an incorrect GAPI implementation on the device.

 

GapiDraw 2.05 - Stable as a Rock !
2003-09-22

SDK Additions

  • New DLL that is optimized for the Smartphone2003 platform!
  • New function: CGapiApplication::ChangeFPS to easily change the target FPS at runtime.
  • New function: CGapiSurface::FreeSurface() to remove all resources associated with the surface.

SDK improvements

  • Decreased the size of the PocketPC and Smartphone DLLs with nearly 20%!
  • Significantly improved performance and memory usage of stretched blits with Blt and AlphaBlt (they no longer use lookup tables)!
  • It is now possible to use only the "rotation scale" or "rotation center" parameters without specifying "rotation angle".
  • CGapiApplication will now call Sleep(0) on each frame update if the target frame rate could not be reached. This could previously cause a button lock on some slower devices when the target FPS could never be reached.
  • GapiDraw will now always first try to dynamically load "\windows\gx.dll" before looking in the current folder for this file. This will help performance on some Windows Mobile 2003 devices where the Pocket PC 2000 ARM version of gx.dll performs slowly.

SDK changes

  • None

Bug Fixes

  • Due to a bug introduced in GapiDraw 2.04, CGapiSurface::Blt and CGapiSurface::AlphaBlt would previously crash with an assertion failure on some devices.
  • Blitting to a negative coordinate with clipping turned off would previously not result in an error code, this has been corrected.

 

GapiDraw 2.04
2003-07-22

SDK Additions

  • None

SDK improvements

  • CGapiApplication now links directly to aygshell.lib to avoid link errors in some configurations.
  • Clipping is now done on pixel operations (SetPixel, DrawMask).

SDK changes

  • Blt with rotation is now pixel perfect (meaning that you can now use it for perfect 90, 180, and 270 degree rotations).
  • Clipping of stretched Blt surfaces is now pixel perfect (with no fixed point artefacts). Please note however that DirectDraw is not pixel perfect, so some scaling issues may appear on surfaces stored in video memory on Stationary PCs.

Bug Fixes

  • Setting dwFXopacity to 0 in GapiDraw 2.03 would previously return without rendering anything.
  • Calling BltFast with effects (tint, colorize, multiply) in GapiDraw 2.03 worked but always returned GDERR_INVALIDPARAMS.

 

GapiDraw 2.03
2003-07-20

SDK Additions

  • None

SDK Improvements

  • Improved performance on all BltFast pixel shaders: Tint, Colorize, and Multiply.
  • Improved performance in all operations when clipping is used.
  • Improved performance of CGapiSurface::DrawRect on video surfaces.
  • All clipping operations now handle rectangles that are not normalized (right < left or bottom < top).

SDK Changes

  • The file CGapiExtension.cpp was removed (CPoint and CRect are now fully inline and defined in CGapiExtension.h).
  • New FX framework: The structure of GDBLTFASTFX and the flags used to call TINT, COLORIZE and MULTIPLY were changed. This was done to allow the addition of several new rasterizers in an upcoming release.

Bug fixes

  • DrawRect: Using opacity with CGapiSurface::DrawRect did previously not work correctly when the width of the rectangle was 1 pixel.
  • Clipping bug: Empty rectangles in CGapiSurface::DrawRect was previously drawn as two-pixel wide rectangles.
  • Clipping bug: Surface pointers set to NULL would in GapiDraw 2.02 cause a null pointer exception.
  • Clipping bug: CGapiSurface::DrawRect did previously not clip correctly due to errors in line clipping algorithm.
  • Clipping bug: Clipping in CGapiSurface::DrawLine with negative coordinates did previously not work correctly.
  • Clipping bug: Clipping of rotated blits did not previously work correctly.

 

GapiDraw 2.02
2003-07-15

SDK Additions

  • Clipping support in all operations! A clipping viewport can be set for each surface using CGapiSurface::SetClipper and CGapiSurface::GetClipper.
  • GapiDraw now comes with XScale-optimized binaries for the PocketPC 2003 environment (Windows CE 4.2).
  • New function: CGapiApplication::CreateVideoSurfaces. Place all your code for creating video surfaces here. This function will be called if video surfaces are lost. This function is also called on application startup.
  • New function: CGapiApplication::OnMinimize (use this to suspend music output).
  • New function: CGapiApplication::OnRestore (use this to resume music output).
  • New helper classes: CPoint and CRect. Use them in all functions requiring a POINT or RECT structure (e.g. BltFast(0, 0, &surface, CRect(10, 10, 100, 100), 0, NULL)). They are located in the files GapiDrawExtension.h and GapiDrawExtension.cpp.
  • New font functions: CGapiBitmapFont::GetStringWidth, CGapiBitmapFont::GetCharWidth, and CGapiBitmapFont::GetSpacing.
  • New font functions: CGapiDisplay::GetSystemFont and CGapiDisplay::GetSystemFontBorder to retrieve pointers to the built-in system fonts.
  • New BltFast pixel shader: Multiply! Use this to easily change color of fonts.

SDK Improvements

  • CGapiBitmapFont::CreateFont now allows ASCII strings with less characters than the bitmap font to be used (only those defined in the ASCII string will be used). If the ASCII string contains more characters than the bitmap font, only those defined in the bitmap font will be used.
  • CGapiBitmapFont::CreateFont no longer requires the first character in the ASCII string to be <space>, e.g. a font can now contain only the characters "1234567890" with no space. This applies to both the simple as well as the advanced font bitmap formats.
  • It is now possible to call CreateSurface() on a surface that is a backbuffer copy (assigned using CGapiDisplay::GetBackBuffer).
  • The back buffer is now cleared at startup on Pocket PCs with direct display access.
  • CGapiSurface::Intersect now works with signed coordinates.
  • A new flag GDRGBASURFACE_SYSTEMMEMORY was introduced. RGBA surfaces can currently only be stored in system memory, this flag was added for extra code clarity.

SDK Changes

  • If surfaces stored in video memory are lost, CGapiApplication will now call CGapiApplication::CreateVideoSurfaces (previously CGapiApplication::CreateSurfaces was called). Move all your video surface creation code from CGapiApplication::CreateSurfaces to CGapiApplication::CreateVideoSurfaces.
  • If the width and height passed to CGapiDisplay::OpenDisplay is 0, GapiDraw will now open the display as 240x320 if windowed, and 320x240 if full screen.
  • The .NET function calls (GapiDrawNet.h) CGapiDisplay_OpenDisplay and CGapiDisplay_OpenDisplayByName were slightly modified.
  • CGapiApplication does no longer include CrtDebug debug checking for full STL compatibility.
  • The single-threaded version of CGapiApplication does no longer sleep 1 millisecond if it cannot reach its target FPS.
  • DrawText with system font was removed. It is no longer possible to draw text directly using the system font. Instead if you want to draw text with one of the system fonts, call CGapiDisplay::GetSystemFont to retrieve a font pointer and then use the bitmapped system font for drawing.
  • RenderSystemFont was moved from CGapiSurface to CGapiDisplay and is no longer a static function.
  • The GDDRAWTEXT_CALCWIDTH feature was removed. Use CGapiBitmapFont::GetStringWidth instead.

Bug fixes

  • Using the flag GDALPHABLTFAST_OPACITY with CGapiSurface::AlphaBltFast would previously not work on pixels where alpha was 255 (totally opaque).
  • Calling AlphaBlt with a destination rectangle in a different size than the source surface would previously cause rendering errors in some display modes.
  • Blt using rotation center would previously not work correctly in all display modes.

 

GapiDraw 2.01b
2003-05-14

Bug fixes

  • Calling BltFast with opacity on an odd coordinate would previously skip every other pixel. This has been corrected.

 

GapiDraw 2.01
2003-05-08

SDK Additions

  • The GapiDraw DLL now contains wrapper functions for use with the .NET environment (GapiDrawNet.h)! Thanks to Sean Cross at Intuitex for the interface design! Please visit www.intuitex.com for a complete C# interface to GapiDraw.

SDK Changes

  • CGapiDisplay::Flip() no longer returns GDERR_BACKBUFFERLOST - this is now handled internally.

Bug fixes

  • CGapiDisplay::SetDisplayMode() will no longer crash on some MIPS devices.

 

GapiDraw 2.00
2003-05-03

Major Improvements

  • Hardware blit support: Blt (color key and mirror), BltFast (color key), FillRect and other operations depending on them (such as Drawtext) are now hardware-accelerated on stationary PCs in full screen mode! Several new features related to hardware acceleration (such as LockVideoSurface(), GetAvailableVidMem(), etc) are also available.
  • Lots of new options for opening the display. You can now use variable Hz and choose if the flip should be synced to vblank etc. You can also choose whether the backbuffer should be stored in system memory or video memory.
  • Massive performance improvements to BltFast, AlphaBltFast and FillRect (they all now operate on multiple pixels simultaneously - alpha blend and opacity now require only one multiplication for each pixel with no lookup tables!).
  • The display can now be rotated in all four directions (0, 90ccw, 180, 90cw) with no performance loss.
  • Loading PNG and BMP images from file, memory or resource is now done with zero memory overhead on all devices (all memory required is that of the surface itself).
  • New surface class: CGapiRGBASurface, which can load and store PNG images with transparancy (both 16-bit and 32-bit RGBA formats are supported).
  • CGapiApplication is now a single-threaded class (CGapiApplication). It is still available in a multithreaded form (CGapiApplicationMT) compatible with GapiDraw 1.04b.
  • Improved Smartphone support in CGapiApplication (support for minimization on incoming phone calls, correctly hides task bar on all devices).
  • Surfaces can now be saved as BMP or PNG on all devices. Saving images is now done with zero memory overhead.
  • DrawText now supports all BltFast flags (such as opacity).
  • Fonts can now contain all 255 ASCII characters (for international font support).

SDK Additions

  • New sample application - TileDemo, illustrating how to use map tile data exported from Tile Studio.
  • Included Tile Studio export script + instructions on how to use in the "misc" folder.
  • New function calls:
    CGapiSurface (ColorrefToNative(), NativeToColorref(), GetSurfaceFlags(), LockVideoSurface(), UnlockVideoSurface(), Alphablt(), AlphaBltFast(), RenderSystemFont())
    CGapiDisplay (GetMonitorFrequency(), GetAvailableVidMem(), GetHWStatus(), SurfacesArelost(), RestoreAllVideoSurfaces())
  • Lots of new configuration parameters to CGapiApplication (such as bUseVSyncAsFPS for smooth 1:1 action in full screen mode on stationary PCs).
  • Surfaces loaded from PNG images can now read alpha information (creating a gray scale alpha surface) using the flag GDSURFACE_ALPHA. There is no longer a need to separate image and alpha in Photoshop.
  • It is now possible to draw directly to the front buffer in full screen mode on stationary PCs.
  • Blt with rotation now supports a rotation pivot center on the target surface (which can be negative).

SDK Changes

  • Please see the updated documentation for details.
  • Changes have been done to the following function calls:
    CGapiSurface (CreateSurface(), SaveSurface(), DrawText())
    CGapiDisplay (OpenDisplay())
    CGapiBitmapFont (CreateFont())
  • The following function calls have been removed:
    CGapiSurface (Lock(), Unlock(), GetSurfaceOptions(), SetSurfaceOptions())
    CGapiDisplay (GetDisplayCaps())
  • Changes have been done to the following structs:
    GDBUFFERDESC, GDBLTFX, GDALPHABLTFX, GDALPHABLTFASTFX,
  • The following structs have been removed:
    GDTEXTFX
  • Changes have been done to the following classes:
    CGapiCursor (CGapiRGBASurface)
  • The system font is now pre-rendered for performance improvements.

Bug fixes

  • CGapiApplication previously did not post correct mousemove coordinates when the display is rotated.

Internal Changes

  • BltFast, AlphabltFast and FillRect was completely rewritten.
  • The entire GDI bridge for emulator environments was rewritten.
  • Changes has been done to all function calls to support video surfaces.

 

GapiDraw 1.04d
2005-02-10

Bug Fixes

  • Win32: Fixed an issue with the upcoming "Next Version of Windows Mobile" related to the use of Imgdecmp.dll.

 

GapiDraw 1.04c
2004-10-05

Bug fixes

  • Win32: GapiDraw should now work correctly on the SPV-500 smartphone. Previous versions of GapiDraw exhibited flickering on the SPV-500 due to an incorrect GAPI implementation on the device.

 

GapiDraw 1.04b
2003-05-03

Bug fixes

  • All GapiDraw applications would previously flicker on the Palmax @migo Pocket PC. The issue was caused by an incorrect GAPI implementation on the device. This issue has been resolved.
  • CGapiApplication will no longer change thread priorities on Windows CE devices (which had negative effects on button and stylus input).
  • CGapiApplication will now correctly hide the task bar on all Smartphones.
  • CGapiSurface::SaveSurface now works with surfaces having an odd width.

 

GapiDraw 1.04
2002-07-16

SDK Additions

  • New cursor: Energia by Renzo Riccio is included with his permission.

Minor SDK Changes

  • FontMaker will now insert a space of one pixel before the first character for those of you who use auto color key - GetPixel(0, 0, &colorkey) and SetColorKey(colorkey).

Bug fixes

  • Loading BMP images from file or memory would previously cause GapiDraw 1.03 to crash on all Pocket PCs. This has been corrected.

 

GapiDraw 1.03
2002-07-07

Major Improvements

  • New multithreaded base class: CGDApplication. Now you can create new GAPI applications in a matter of hours! Check the new documentation and tutorials for details.
  • GapiDraw now links dynamically to gx.dll. If gx.dll is not available on the target machine CGapiSurface::OpenDisplay and CGapiInput::OpenInput returns GDERR_NOGAPI.
  • RLE-compression is now re-added and improved so that it works with all types of BMP images (1, 4, 8, and 24-bit uncompressed, 4-bit and 8-bit RLE-compressed).
  • A local copy of the documentation is now available as part of the installation.
  • All sample applications are rebuilt using Visual Studio 6.0! You can now use either Visual Studio 6.0 or Visual Studio .NET to open the sample applications.
  • New tutorials available that highlights the new CGapiApplication and the creation of platform-independent projects.
  • New cursor class: CGapiCursor. CGapiCursor supports animated key sourced and alphablended cursors on Stationary PCs. Sample cursors by Jalentorn (jalentorn@pobladores.com), Lightstreamdesign (www.lightstreamdesign.com), and DroN (acidron@mail.ru) are included with their permission.
  • FontMaker improvements. The last used font color is now remembered in the font select dialog. If antialias / cleartype is being used the blending is now be done to a specific blending color instead of the mask. Also, both the font color, blend color and mask color can now be defined using the GUI.

CGapiApplication

  • A new base class to create new Pocket PC games in a matter of hours!
  • Tested and approved for Stationary PCs, Pocket PCs and Smartphones.
  • Support for full screen and windowed DirectDraw modes on Stationary PCs.
  • Full support for stylus (down, up, move, doubleclick) and key input (down, up).
  • Support for easy to use, dynamic rotation of the display with no performance loss.
  • Flexible and easy to use configuration system.
  • Multithreaded main loop for time critical operations.
  • Full Minimize/Restore functionality with synchronized pause of main loop.
  • Hides all notifications with automatic refocus of main window.
  • FPS lock (the application will always run at constant FPS independent of CPU speed).
  • Full source code for CGapiApplication is included.

SDK Additions

  • New operations: CGapiDisplay::SuspendDisplay and CGapiDisplay::ResumeDisplay. SuspendDisplay() locks the display surface and prevents all drawing operations. SuspendDisplay() also allows other GAPI applications on the PocketPC or Smartphone to access the display exclusively.
  • New Photoshop script is included to easily convert images with an alpha channel into split image/alpha surfaces.
  • Loading transparent GIF images will now fill in the transparent portions with the currently selected color key on Stationary PCs. Be sure to set the color key using SetColorKey before creating the surface. On PocketPCs and Smartphones the transparent portions of the GIF will always be filled with a white color RGB(255, 255, 255) due to an error in the built-in GIF decoder. Set your color key to RGB(255, 255, 255) if you need to use transparent GIF images on Pocket PCs.

SDK Changes

  • New folder hierarchy. Please update the search paths in your project.
  • CGapiDisplay::CloseDisplay is now public. It is recommended that the display is "closed" before the primary window is destroyed.
  • Creating a display window on stationary computers does no longer modify the window style unless the window style is WS_POPUP. It is now possible to create "non-sizable" windows using WS_DLGFRAME.
  • Most of the sample applications have been rewritten to use the new CGDApplication base class.
  • The namespaces in GapiDrawExtensions.h were renamed: "gapisurfacehelper" was renamed to "gdhelper", "gapisurface555" was renamed to "gd555", "gapisurface565" was renamed to "gd565".
  • The sample applications do no longer use CeSetThreadPriority(). Please remove CeSetThreadPriority() from your application in case you based your game on one of the earlier sample applications.

Minor SDK Changes

  • It is now possible to debug applications when running in full screen mode on Stationary PCs.

Bug fixes

  • The rotation angle specified to Blt was actually counter clockwise in some modes on some devices. It is now used to specify clockwise rotation on all devices.
  • Calling CGapiSurface::CreateSurface() using the same width and height as GetWidth() and GetHeight(), or width=GetHeight(), and height=GetWidth(), using the parameter GDCREATESURFACE_CLEAR will now actually clear the surface..
  • GapiDraw will now work correctly in fullscreen mode on Windows98/ME systems. IMPORTANT! Windows98/ME may use the 555 pixel format, so do not assume that the surface internally is stored in 565 pixel format (this affects Lock() and GetBuffer()).

Internal Changes

  • Minor internal improvements to the DirectDraw bridge.

 

GapiDraw 1.02
2002-06-11

Major Improvements

  • GapiDraw now supports the PocketPC, the PocketPC2002 and the Smartphone emulators!
  • GapiDraw now supports BMP, GIF, JPG, and PNG on all platforms. Images can be loaded from file, memory or resource.
  • GapiDraw Extensions! CGapiSurface now has GetBuffer() and ReleaseBuffer() which allows for easy low level bit manipulation. You can now directly access both the display and the surfaces used by GapiDraw! Check the new GDPlasma demo (which is an MFC-free demo) for sample code.
  • Extreme performance improvement on stationary computers in both fullscreen and window mode! Try the demo GDDemoXP in SVGA fullscreen mode!
  • Significantly improved performance in all CGapiSurface operations except the most simple ones.
  • Significantly improved performance for AlphaBlt and AlphaBltFast (More than 3.5x speed improvement in both operations).
  • Significantly improved performance when Opacity is being used in all operations (more than 2.5x speed improvement)
  • 16-bit bitmaps were previously rendered as 15-bit. With 1.02 they are now rendered using the full 565 color range (65k colors).

SDK Additions

  • New sample application - GDPlasma - written in plain C/C++ without MFC.
  • Support for Smartphone display resolution on stationary computers (176x220) in all orientations.
  • FontMaker.exe by MetalShard, inc is now included to quickly create correctly kerned fonts.
  • Improved font format! The bitmap font format now also supports character kerning in both directions (see CBitmapFont documentation for details). It's now possible to easily create correctly kerned italic fonts.
  • Support for a new, simpler font format: GDCREATEFONT_SIMPLEBITMAP. Just draw some font letters and it's ready for use! See the demos GDHelloGapi and GDPlasmaDemo for sample code.
  • CGapiInput now has CloseInput() and OpenInput() to manually disable/enable the exclusive keyboard lock when switching between applications.
  • AlphaBlt and AlphaBlt now uses QuickOpacity if Opacity is set to 128
  • It is now possible to set a color key before calling CreateSurface (previously it was reset to zero during CreateSurface)

SDK Changes

  • RLE-Encoded BMP images are no longer supported. Change your picture format to plain BMP, GIF, PNG or JPG.
  • CreateSurface(HINSTANCE hInstance, DWORD dwResourceID) is now CreateSurface(HINSTANCE hInstance, DWORD dwResourceID, const TCHAR* pResourceType = NULL). See documentation for details.
  • CGapiBitmapFont::InitializeFont renamed to CGapiBitmapFont::CreateFont
  • For performance reasons, AlphaBlt / AlphaBltFast now only uses the GREEN component of the Alpha bitmap. Make sure your alpha maps contain a GREEN channel.
  • Removed "const TCHAR* pImageType" from some CreateSurface variants since it was not used and is no longer necessary.
  • The screen is now always opened in FULLSCREEN mode on all Windows CE devices.
  • Changes to SetPixels (again). The changes are:
    (a) GDSETPIXEL_OPACITY renamed to GDPIXEL_OPACITY
    (b) GDSETPIXEL_DISABLED renamed to GDPIXEL_DISABLED
    (c) Changed both function calls from "SetPixels(..., BOOL bFixedPoint)" to "SetPixels(..., DWORD dwFlags)". Use the new flag GDSETPIXELS_FIXEDPOINT to use fixed point.

Minor SDK Changes

  • CGapiBitmapFont::CreateFont now returns GDERR_INVALIDBITMAP if the font bitmap was invalid.
  • When drawing a rotated, colorfilled rectangle using Blt, Blt will now use source surface size if pSrcRect is NULL.

Bug fixes

  • GetDC / ReleaseDC did previously not work correctly if the surface had an odd pixel width.
  • On stationary computers, CGapiDisplay::SetDisplayMode did previously return GDERR_OUTOFMEMORY if it was called before OpenDisplay.
  • On stationary computers, keyboard mapping was incorrect when running in windowed landscape mode.
  • The display could not be re-opened if it had been closed once (using the CGapiDisplay destructor).
  • Drawing directly to the display in landscape mode #2 on the IPAQ would cause GapiDraw to crash.
  • Switching between fullscreen and "desktop mode" on stationary computers would previously cause the primary surface to be lost.
  • Some BMP images were in some cases previously rendered incorrectly.

Internal Changes

  • The entire internal architecture was rebuilt to support maximum code expansion with the help of templates. After that every single operation was analyzed based on the assembler output to guarantee optimized performance. After that every single combination of all blit operations has been tested, tested and tested again.
  • The DirectDraw bridge was improved significantly. Previously surfaces had to be rotated to match the alignment of the display in some modes. The new bridge supports rendering in the native format of the display. It is now possible to create games that run in SVGA and higher resolutions on stationary computers.

 

GapiDraw 1.01
2002-04-18

SDK Additions

  • "GetSurfaceOptions()" was added.
  • OpenDisplay has new options on stationary PCs - SIZE and SCALE (thanks to Sam Nova for ideas)
  • A new SetPixels supporting arrays was added (with optional 16:16 floating point coordinate support) (thanks to Sam Nova for ideas)
  • AlphaBlt now supports constant opacity as well as variable opacity using alpha (thanks to Jeff @ CapesDev for idea)

SDK Changes

  • VerifyCoordinates was renamed to SetSurfaceOptions().
  • Updated SetPixels with new GDPIXEL and GDPIXELNODE structures + FIXEDPOINT support (thanks to Sam Nova for ideas)
  • CreateSurface from file and memory has now been changed to take file type as a parameter (currently only BMP is supported, more are planned)
  • OPENDISPLAY now returns GDERR_UNSUPPORTEDMODE if device is not 16-bit (previously GDERR_INVALIDMODE) (thanks to Sam Nova for ideas)
  • GapiDraw.dll is now renamed to gd101.dll (GapiDraw.lib is renamed to gd101.lib)

Minor SDK Changes

  1. SetDisplayMode now correctly returns GDERR_LOCKEDSURFACES or GDERR_INVALIDMODE if necessary
  2. CreateSurface - all variations now correctly returns GDERR_INVALIDPARAMS if parameters are indeed invalid
  3. DrawMask now returns GDERR_INVALIDPARAMS if dwMaskID is greater than 32767 (to support both 555 and 565 surfaces)
  4. GetPixel now returns GDERR_INVALIDPARAMS if pColor is NULL
  5. SaveSurface now returns GDERR_INVALIDPARAMS if filename is NULL
  6. SetDisplayMode may now return GDERR_OUTOFMEMORY on stationary PCs
  7. Minor documentation corrections (thanks to all who reported)

Bug Fixes

  • Fixed a severe error in "Intersect()" (thanks to Jeroen Schmitz for reporting in)
  • CreateSurface(const TCHAR* filename) would not load images from file under Windows XP (thanks to Kaiton for reporting)
  • Full Casio support with DMA transfers and true GAPI access (direct screenwrites are disabled) (thanks to all who reported issues with the previous version)

Internal Changes

  • The DDraw bridge on stationary computers now use DMA transfers to improve update speed on some older display devices
  • OpenDisplay and SetDisplayMode now adjusts and rotates the display window to match the screen.

 

GapiDraw 1.0
2002-03-22

Initial Release