|Build-A-Board®: for Windows; The Next Generation of Onscreen Keyboards; Version 2.20 Release 3; User's Guide|
|Prev||Chapter 6. Build-A-Board Run-Time Targets Notes||Next|
The PNG format is used for carrying key and panel images within the KBF file. This format was chosen because it is lossless and compressed, and supported on all current target platforms. However, the support on each platform has various limitations, and the information below covers some of these aspects. For best results, use 24-bit color images (16 million colors) vs. 8-bit (256 colors).
If a key or panel contains a PNG image to display, and there is some problem on the run-time system to display the PNG image, a black background will be all that is shown on the key/panel. So an expected PNG image showing a black background indicates a PNG display issue, and you should reference the information below for more details on a particular system.
PNG on Windows
To display PNG files, the system GDIPlus.dll must be available. This was added during the life of XP, so it may not be available on Windows 2000, or older, not up-to-date XP systems. There is a redistributable available from Microsoft (see WindowsXP-KB975337-x86-ENU.exe, knowledgebase KB975337) to add this to older systems.
MYTSOFT.EXE requires the GDIKIT.DLL file to be in the same folder as MYTSOFT.EXE - the dependency link is GDIKIT.DLL which needs MSVC80??.DLL which relies on GDIPLUS.DLL for PNG display. The most effective way to resolve a black background / no PNG display issue on Windows is as follows:
Verify GDIKIT.DLL is in the same folder as MYTSOFT.EXE
For 2000/XP, Verify GDIPLUS.DLL is on the system (\WINDOWS\SYSTEM32)
For 2000/XP, GDIKIT.DLL may need C run-time (CRT) libraries - copy these files from \Program Files\Build-A-Board\BIN: Microsoft.VC80.CRT.manifest, msvcm80.dll, msvcp80.dll, msvcr80.dll into the same folder as GDIKIT.DLL
PNG on Linux
Linux requires the libpng to be on the system - when installed (e.g. Debian "apt-get install libpng") a libpng.so file (.so = shared object) is typically a symbolic link in the /usr/lib folder. The run-time mytsoft on Linux uses a library call (dlopen/dlsym/etc.) to access the library without requiring it (for cases where the system does not have libpng available). So the following may be helpful in getting images displayed on a Linux system (if a KBF with images shows a black background where you would expect the image).
Important requirement 1: libpng support must be available
Important requirement 2: libpng.so is only file accessed, so symbolic link may be required.
Verify the libpng is available - apt-get install, Synaptic, rpm, yast, yum, etc. dependent on the distribution
The run-time mytsoft ONLY looks for libpng.so - so if this is not resolving, check for libpng.so in /usr/lib (or /usr/lib64, etc.) a symbolic link may be required if no actual libpng.so is there (for example, use "ls -l /usr/lib/libpng*[Enter]" for details on links - to create libpng.so, use "ln -s /usr/lib/libpng.so.184.108.40.206 /usr/lib/libpng.so[Enter]" (root/superuser required))
Actual lib location (lib vs. lib64, or /lib vs. /usr/lib vs. /usr/png/lib) - use ldd command, e.g. "ldd mytsoft[Enter]" to list dependencies of mytsoft (and where library locations are on the system) or use "man hier[Enter]" to see the system's manual page on the file hierarchy
Run from command prompt for error details reported from libpng code - it may help identify a dependency, or specific issue that can be resolved.
PNG on Mac OS X
The PNG display code is available in the native system API, so there are no known issues with PNG display on this platform.