[fpc-pascal] Questions regarding FPImage's TFPMemoryImage.FData variable

Mattias Gaertner nc-gaertnma at netcologne.de
Wed Jun 1 12:26:19 CEST 2016

On Thu, 26 May 2016 11:24:44 +0100
Graeme Geldenhuys <mailinglists at geldenhuys.co.uk> wrote:

> 3) The FData image buffer (assuming (1) is correct) uses Integer instead
>    of Byte as it's element size. So I'm assuming a singe Integer hold
>    all the colour information for a single pixel?

No, TFPMemoryImage uses one TFPColor per pixel (48bit).
TFPCompactImgGray8Bit uses 8bit.
TFPCompactImgGray16Bit uses 16bit.
TFPCompactImgRGB8Bit uses 24bit.
TFPCompactImgRGBA8Bit uses 32bit.
and so forth...

>    But then again, I have noticed that TFPColor uses Word size data
>    elements, thus the whole RGBA information per pixel will be 8 bytes
>    of data, and Integer is only 4 bytes large.

The integer is only the palette index.

> 4) What is the order in which the colour channel information is stored
>    in memory? RGB, BGR, RGBA, BGRA, ARGB, ABGR etc?

Each memory image uses a packed record. For example TFPMemoryImage uses
TFPColor, TFPCompactImgRGBA8Bit uses TFPCompactImgRGBA8BitValue.
It is typically RGBA.

> 5) Is the Alpha channel actually stored? I assume it is, because the
>    Integer type is large enough to hold that information.

See above.


More information about the fpc-pascal mailing list