Mattias Gaertner wrote 33 lines
On Wed, 12 Nov 2003 09:23:06 +0100
Micha Nelissen wrote:
>Mattias Gaertner wrote:
>
>
>>On Mon, 10 Nov 2003 08:07:09 +0100
>>Micha Nelissen wrote:
>>
>>
>>
>>
>>>I think I can fill the RawImageDesc fields except palette, and I don't
>>>know what to do with RedPrec, RedShift, etc..
>>
>>
>>You need to find out the color format of the device/bitmap for this.
>
>Sorry I keep nagging about this subject, but:
>1) there is one function not needing a DC to create a bitmap,
>'CreateBitmap'. It is not possible to retrieve color format of this
>bitmap. Even a google search did not turn up anything on the color
>format subject. I guess, nobody uses it.
>2) the functions that do have information on color format also need a
>DC. You create a device independant bitmap with CreateDIBSection, and a
>device dependant one with CreateDIBitmap. Long live the winapi, logic is
>nowhere to be found it seems! The names are very unlogical.
Ok. So, under win32 it seems, it is up to the user to keep book of the
format of a DC/bitmap. But this data is win32 specific, so the LCL user
can't do it. It must be done, by the win32 intf. Right?
Let me first say: the color format I mean is the RRGGBBAA and how bits each take.
Yes. But the winapi can convert between color formats automatically. You give the win32 interface a color format, and it can pass it on to the winapi for processing.
Show quoted text 14 lines
>3) there is no function to retrieve the color format of a device. One
>can only guess at it, based on BITMAPINFO structure help. That's because
>the winapi support converting the color formats on the fly. For example,
>using CreateDIBitmap, you specify the color format your source bitmap is
>in, and the winapi will convert it to the color format of the target
>device. It seems logical that one would be able to retrieve the color
>format of the device for fast rendering and stuff, but it just seems
>impossible.
Hardly believable.
Can this BITMAPINFO only retrieved from bitmaps or can you create a bitmap
fom any device and get a BTMAPINFO? And with this, get the color format from
any DC?
The BITMAPINFO is contained with a DIBSECTION. The DIBSECTION can only be retrieved for device independant bitmaps, that means, bitmaps created by CreateDIBSection. No other function returns a BITMAPINFO structure.
The BITMAP structure can always be retrieved from any bitmap. But it doesn't contain the information to fill in {red,blue,green}{shift,prec}.
Creating a DIB section isn't of much use, if you ask me, because that's already what the rawimage is.
Show quoted text 7 lines
>I think that's the reason why in delphi there is a pfDevice
>for TPixelFormat.
>
>Any tips? Shall I return a default color format in the raw image?
Yes. I guess, at least the screen resolution can be retrieved, can't it?
I am able to get the color depth and bits per pixel used, eg. 16, 24, 32 bits.
Regards,
Micha.