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 :-)
Indeed.

Regards,
Sven
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to