[fpc-pascal] FCL-Image and OS/2 BMP support

Sven Barth pascaldragon at googlemail.com
Fri Apr 5 15:12:03 CEST 2013

Am 05.04.2013 14:42, schrieb Michael Van Canneyt:
> On Fri, 5 Apr 2013, Sven Barth wrote:
>> Am 05.04.2013 12:07, schrieb Michael Van Canneyt:
>>> On Fri, 5 Apr 2013, Graeme Geldenhuys wrote:
>>>> Hi,
>>>> Having had a quick look at the FPReadBMP.pp unit, the only BMP format
>>>> FCL-Image supports is the Windows BMP format. I need to read OS/2 BMP
>>>> files too.
>>>> Here is a very brief comparison between the two formats. Note that 
>>>> OS/2
>>>> Bitmaps can be larger, multiple images per file, different compression
>>>> algorithms, different file headers etc.
>>>> OS/2 Bitmap:
>>>>  http://www.fileformat.info/format/os2bmp/egff.htm
>>>> Windows Bitmap:
>>>>  http://www.fileformat.info/format/bmp/egff.htm
>>>> I'm doing the work for fpGUI's DocView, but would like to share the 
>>>> code
>>>> with FPC too. What would be the suggested way of doing this?
>>>> 1) extend the existing FPReadBMP.pp unit. This could be messy.
>>>> 2) create a whole new unit specific to OS/2 Bitmaps.
>>>> I would opt for (2). But that raises another problem, but probably not
>>>> relevant to others here. If option (2) is used, your application can't
>>>> simply assume a *.bmp can be read with FPReadBMP, it needs to check 
>>>> the
>>>> file header first, then determine the correct unit & class to use to
>>>> read the bitmap.
>>> That's why, unfortunately, I think 1) is better.
>>> A second problem is the 'multiple images per file'.
>>> You will need an image number when loading. That will need a change 
>>> in the reader or in TFPCustomImageHandler.
>>> (a property, default set to 0, so it reads the first image (zero 
>>> based))
>> With support for multiple images per file we could add *.ico support 
>> to fcl-image as well (currently this is implemented in the LCL). And 
>> this could also benefit *.gif :)
> Well I alread had .gif in mind when proposing this, I didn't know 
> about .ico.
It was rather a niche before Windows Vista, but since then multiscale 
icons are rather common and are also supported by Lazarus. [And in 
theory one could add (animated) *.cur support as well of which the only 
difference to *.ico is that there is a "hotpoint" declared somewhere...]
> So much the better :-)


More information about the fpc-pascal mailing list