GET/PUT image header example
 
Example showing the two different headers used for image buffers.

'' here we define the image buffer header structure
Type _OLD_HEADER Field = 1
    bpp : 3 As UShort
    Width : 13 As UShort
    height As UShort
End Type

Type PUT_HEADER Field = 1
    Union
        old As _OLD_HEADER
        Type As UInteger
    End Union
    bpp As Integer
    Width As UInteger
    height As UInteger
    pitch As UInteger
    _reserved( 1 To 12 ) As UByte
End Type

#define PUT_HEADER_NEW        &h7


'' function to show info on an image
Sub show_image_info( ByVal image As Any Ptr )
    Dim As PUT_HEADER Ptr header

    header = image
    If( header->Type = PUT_HEADER_NEW ) Then
        Print "New style header"
        Print "Image is " & header->Width & "x" & header->height
        Print "Image uses " & header->bpp & " bytes for each pixel"
        Print "A row of image pixels takes " & header->pitch & " bytes"
    Else
        Print "Old style header"
        Print "Image is " & header->old.width & "x" & header->old.height
        Print "Image uses " & header->old.bpp & " bytes for each pixel"
    End If
End Sub


Dim As Any Ptr picture

Screen 17, 32

picture = ImageCreate( 10, 10, 7 )

Put( 40, 40 ), picture

show_image_info( picture )
 
Sleep


NOTE: To use this code with an array, pass your array to the function, like this:

show_image_info( VarPtr( myarray( 0 ) ) )