Structures
From XnView Wiki
GFL_BITMAP
The GFL_BITMAP structure contains all informations about picture in memory.
typedef struct ( GFL_BITMAP_TYPE Type, GFL_ORIGIN Origin, GFL_INT32 Width, GFL_INT32 Height, GFL_UINT32 BytesPerLine, GFL_INT16 LinePadding, GFL_UINT16 BitsPerComponent, GFL_UINT16 ComponentsPerPixel, GFL_UINT16 BytesPerPixel, GFL_UINT16 Xdpi, GFL_UINT16 Ydpi, GFL_INT16 TransparentIndex, GFL_INT32 ColorUsed, GFL_COLORMAP* ColorMap, GFL_UINT8* Data, char* Comment, void* MetaData } GFL_BITMAP
Members
- Type
- Type of the picture
GFL_BINARY 0x0001 Binary GFL_GREY 0x0002 Grey scale GFL_COLORS 0x0004 Colors with colormap GFL_RGB 0x00010 TrueColors - Red/Green/Blue GFL_RGBA 0x0020 TrueColors - Red/Green/Blue/Alpha GFL_BGR 0x0040 TrueColors - Blue/Green/Red GFL_ABGR 0x0080 TrueColors - Alpha/Blue/Green/Red GFL_BGRA 0x0100 TrueColors - Blue/Green/Red/Alpha GFL_ARGB 0x0200 TrueColors - Alpha/Red/Green/Blue GFL_CMYK 0x0400 TrueColors - Cyan/Magenta/Yellow/Black
- Origin
- Origin of the picture.
GFL_TOP_LEFT 0 Top left (default) GFL_BOTTOM_LEFT 2 Bottom left GFL_TOP_RIGHT 1 Top right GFL_BOTTOM_RIGHT 3 Bottom right
- Width
- Width in pixels of the picture.
- Height
- Height in pixels of the picture.
- BytesPerLine
- Bytes per line of pixels.
- LinePadding
- Internal use, do not modify.
- BitsPerComponent
- Bits per component, can be 1, 8, 16
- ComponentsPerPixel
- Component per pixel, can be 1, 3 or 4
- BytesPerPixel
- Bytes per pixel (For example: 1, 3 or 4).
- Xdpi
- Pixels per inch in X axis.
- Ydpi
- Pixels per inch in Y axis.
- TransparentIndex
- Index of transparency (only for GFL_COLORS & GFL_GREY type).
- ColorUsed
- Number of color used in the picture (only for GFL_COLORS & GFL_GREY type).
- ColorMap
- Address of a GFL_COLORMAP structure for the colormap (only for GFL_COLORS type).
- Data
- Pointer of the picture data.
- Comment
- Address of a string used by the comment. You must use gflSetComment to change the comment.
- MetaData
- Pointer of Metadata. You must use gflBitmapGetIPTC & gflBitmapGetEXIF to obtain readable data.
GFL_COLORMAP
The GFL_COLORMAP structure is used for colormap.
typedef struct ( GFL_UINT8 Red[256], GFL_UINT8 Green[256], GFL_UINT8 Blue[256] } GFL_COLORMAP
Members
- Red
- Array of red components.
- Green
- Array of green components.
- Blue
- Array of blue components.
GFL_FORMAT_INFORMATION
The GFL_FORMAT_INFORMATION structure contains informations about a format available in GFL.
typedef struct ( GFL_INT32 Index, GFL_ORIGIN Name[8], char Description[64], GFL_UINT32 Status, GFL_UINT32 NumberOfExtension, char Extension[16][8] } GFL_FORMAT_INFORMATION
Members
- Index
- Index of the format.
- Name
- Null-terminated string that contains the name of the format. For example, "jpeg" is for JPEG format.
- Description
- Null-terminated string that contains the label of the format.
- Status
- Format status.
- GFL_READ Reading support
- GFL_WRITE Writing support
- NumberOfExtension
- Nomber of extension known by this format.
- Extension
- Array of Null-terminated string that contains the extension.
GFL_FILE_INFORMATION
The GFL_FILE_INFORMATION structure contains informations about a picture's file.
typedef struct ( GFL_BITMAP_TYPE Type, GFL_ORIGIN Origin, GFL_INT32 Width, GFL_INT32 Height, GFL_INT32 FormatIndex, char FormatName[8], char Description[64], GFL_UINT16 Xdpi, GFL_UINT16 Ydpi, GFL_UINT16 BitsPerComponent, GFL_UINT16 ComponentsPerPixel, GFL_INT32 NumberOfImages, GFL_UINT32 FileSize, GFL_COLORMODEL ColorModel, GFL_COMPRESSION Compression, char CompressionDescription[64] } GFL_LOAD_PARAMS
Members
- Type
- Not used
- Origin
- Origin of the picture.
GFL_TOP_LEFT 0 Top left (default) GFL_BOTTOM_LEFT 2 Bottom left GFL_TOP_RIGHT 1 Top right GFL_BOTTOM_RIGHT 3 Bottom right
- Width
- Width in pixels of the picture.
- Height
- Height in pixels of the picture.
- FormatIndex
- Index of picture's format.
- FormatName
- Name of picture's format.
- Description
- File label.
- Xdpi
- Pixels per inch in the X axis.
- Ydpi
- Pixels per inch in the Y axis.
- BitsPerComponent
- Bits per component, can be 1, 8, 16
- ComponentsPerPixel
- Component per pixel, can be 1, 3 or 4
- NumberOfImages
- Number of picture in the file.
- FileSize
- Size of the file.
- ColorModel
- Color model.
GFL_CM_RGB 0 Red-Green-Blue GFL_CM_GREY 1 Greyscale GFL_CM_CMY 2 Cyan-Magenta-Yellow GFL_CM_CMYK 3 Cyan-Magenta-Yellow-Black GFL_CM_YCBCR 4 YCbCr GFL_CM_YUV16 5 YUV 16bits GFL_CM_LAB 6 Lab GFL_CM_LOGLUV 7 Log Luv GFL_CM_LOGL 8 Log L
- Compression
GFL_NO_COMPRESSION 0 No compression GFL_RLE 1 Packbits GFL_LZW 2 LZW GFL_JPEG 3 JPEG GFL_ZIP 4 ZIP GFL_SGI_RLE 5 SGI Packbits GFL_CCITT_RLE 6 CCITT RLE GFL_CCITT_FAX3 7 Fax Group 3 GFL_CCITT_FAX3_2D 8 Fax Group 3-2D GFL_CCITT_FAX4 9 Fax Group 4 GFL_WAVELET 10 Wavelet GFL_UNKNOWN_COMPRESSION 255 Other compression
- CompressionDescription
- Pointer to a buffer that contains the full compression description.
Remarks
- gflFreeFileInformation must be used for freeing the allocated memory.
GFL_LOAD_PARAMS
The GFL_LOAD_PARAMS structure contains options for picture loading.
typedef struct ( GFL_UINT32 Flags, GFL_INT32 FormatIndex, GFL_INT32 ImageWanted, GFL_ORIGIN Origin, GFL_BITMAP_TYPE ColorModel, GFL_UINT32 LinePadding, GFL_UINT8 DefaultAlpha, GFL_UINT8 Reserved1, GFL_UINT16 Reserved2, GFL_INT32 Width, GFL_INT32 Height, GFL_UINT32 Offset, GFL_CORDER ChannelOrder, GFL_CTYPE ChannelType, GFL_UINT16 PcdBase, GFL_UINT16 EpsDpi, GFL_INT32 EpsWidth, GFL_INT32 EpsHeight, GFL_READ_CALLBACK Read, GFL_TELL_CALLBACK Tell, GFL_SEEK_CALLBACK Seek } GFL_LOAD_PARAMS
Members
- Flags
- Options
GFL_LOAD_SKIP_ALPHA If the picture has an alpha channel, it is ignored GFL_LOAD_IGNORE_READ_ERROR Ignore all read errors GFL_LOAD_BY_EXTENSION_ONLY Use only extension to recognize the filetype GFL_LOAD_READ_ALL_COMMENT Read all comment in the file GFL_LOAD_FORCE_COLOR_MODEL ColorModel is used for the picture type GFL_LOAD_PREVIEW_NO_CANVAS_RESIZE Keep the ratio for the preview GFL_LOAD_BINARY_AS_GREY Load a binary file in 8bits GFL_LOAD_ORIGINAL_COLORMODEL If the color model of the file is CMYK, so the picture loaded will be in CMYK GFL_LOAD_ONLY_FIRST_FRAME If the color model of the file is CMYK, so the picture loaded will be in CMYK GFL_LOAD_ORIGINAL_DEPTH If the file has more than 8 bits per component, keep it GFL_LOAD_METADATA Read all metadata (IPTC & EXIF) GFL_LOAD_COMMENT Read comment GFL_LOAD_HIGH_QUALITY_THUMBNAIL Use high quality for gflLoadThumbnail
- FormatIndex
- Index of the format used to load.
- Default value : -1 (for an automatic recognition).
- ImageWanted
- For a multi-page file, identifies the image number.
- Default value : 0
- Origin
- Origin wanted.
GFL_TOP_LEFT Top left GFL_BOTTOM_LEFT Bottom left GFL_TOP_RIGHT Top right GFL_BOTTOM_RIGHT Bottom right
- Default value : GFF_TOP_LEFT
- ColorModel
- Color Model wanted.
GFL_RGB True colors - Red/Green/Blue (24 bits) GFL_BGR True colors - Blue/Green/Red (24 bits) GFL_RGBA True colors - Red/Green/Blue/Alpha (32 bits) GFL_ABGR True colors - Alpha/Blue/Green/Red (32 bits) GFL_BGRA True colors - Blue/Green/Red/Alpha (32 bits) GFL_ARGB True colors - Red/Green/Blue/Alpha (32 bits)
- Default value : GFL_RGB
- LinePadding
- Pad for a pixels line (For example, a value of 4 allow a line padding on 32bits).
- Default value : 1
- DefaultAlpha
- Alpha value to use when the picture is loaded in 32bits, but the original file doesn't have an alpha.
- Default value: Black
- Width
- For RAW or YUV format, width of picture.
- Height
- For RAW or YUV format, height of picture.
- Offset
- For RAW or YUV format, offset of the picture in the file.
- ChannelOrder
- For RAW format, channel order of the components. GFL_CORDER_INTERLEAVED :Interleaved
GFL_CORDER_SEQUENTIAL Sequential GFL_CORDER_SEPARATE Separate
- ChannelType
- For RAW format, channel type of the components.
GFL_CTYPE_GREYSCALE Greyscale GFL_CTYPE_RGB Red-Green-Blue GFL_CTYPE_BGR Blue-Green-Red GFL_CTYPE_RGBA Red-Green-Blue-Alpha GFL_CTYPE_ABGR Alpha-Blue-Green-Red GFL_CTYPE_CMY Cyan-Magenta-Yellow GFL_CTYPE_CMYK Cyan-Magenta-Yellow-Black
- PcdBase
- For PCD format, it's the base used.
0 192x144 1 384x288 2 768x576
- EpsDpi
- For PS/EPS format, dpi to be used for loading.
- EpsWidth
- For PS/EPS format, width to be used for loading.
- EpsHeight
- For PS/EPS format, height to be used for loading.
- Read
- Pointer to a read user function.
- Tell
- Pointer to a tell user function.
- Seek
- Pointer to a seek user function.
GFL_SAVE_PARAMS
The GFL_SAVE_PARAMS structure contains options for the save of picture.
typedef struct ( GFL_UINT32 Flags, GFL_INT32 FormatIndex, GFL_COMPRESSION Compression, GFL_INT16 Quality, GFL_INT16 CompressionLevel, GFL_BOOL Interlaced, GFL_BOOL Progressive, GFL_BOOL OptimizeHuffmanTable, GFL_BOOL InAscii, GFL_UINT32 Offset, GFL_CORDER ChannelOrder, GFL_CTYPE ChannelType, GFL_WRITE_CALLBACK Write, GFL_TELL_CALLBACK Tell, GFL_SEEK_CALLBACK Seek } GFL_SAVE_PARAMS
Members
- Flags
- Options
GFL_SAVE_REPLACE_EXTENSION Replace extension by the default format extension GFL_SAVE_ANYWAY Convert picture if colormode can be saved in this format (For example, RGB picture must be converted in 256 colors to save it in GIF)
- FormatIndex
- Index of format to be used.
- Compression
GFL_NO_COMPRESSION No compression GFL_RLE Packbits GFL_LZW LZW (tiff only) GFL_CCITT_FAX3 Fax Group 3 (tiff only) GFL_CCITT_FAX3_2D Fax Group 3-2D (tiff only) GFL_CCITT_FAX4 Fax Group 4 (tiff only)
- Quality
- Quality of the compression (JPEG)
- 0: the worst, 100: the best
- CompressionLevel
- Level of compression (PNG).
- 1: minimum, 7: maximum
- Interlaced
- Interlaced mode (GIF).
- Progressive
- Progressive mode (JPEG).
- OptimizeHuffmanTable
- Optimize the Huffman table (JPEG).
- InAscii
- Use the ascii mode (PNM)
- Offset
- For RAW or YUV format, offset of the data start.
- ChannelOrder
- For RAW format, channel order of components.
GFL_CORDER_INTERLEAVED Interleaved GFL_CORDER_SEQUENTIAL Sequential GFL_CORDER_SEPARATE Separate
- ChannelType
- For RAW format, channel type of components.
GFL_CTYPE_GREYSCALE Greyscale GFL_CTYPE_RGB Red-Green-Blue GFL_CTYPE_BGR Bleu-Green-Red GFL_CTYPE_RGBA Red-Green-Bleu-Alpha GFL_CTYPE_ABGR Alpha-Bleu-Green-Red GFL_CTYPE_CMY Cyan-Magenta-Yellow GFL_CTYPE_CMYK Cyan-Magenta-Yellow-Black
- Write
- Pointer to a write user function.
- Tell
- Pointer to a tell user function.
- Seek
- Pointer to a seek user function.
GFL_RECT
The GFL_RECT structure define a rectangle.
typedef struct ( GFL_INT32 x, GFL_INT32 y, GFL_INT32 w, GFL_INT32 h } GFL_RECT
Members
- x
- X position.
- y
- Y position.
- w
- Width.
- h
- Height.
GFL_COLOR
The GFL_COLOR structure allow to define a color.
typedef struct ( GFL_UINT16 Red, GFL_UINT16 Green, GFL_UINT16 Blue, GFL_UINT16 Alpha } GFL_COLOR
Members
- Red
- Define the red component.
- Green
- Define the green component.
- Blue
- Define the blue component.
- Alpha
- Define the alpha component.
GFL_POINT
The GFL_POINT structure allows to define a point.
typedef struct ( GFL_INT32 x, GFL_INT32 y } GFL_POINT
Members
- x
- X position.
- y
- Y position.
GFL_FILTER
The GFL_FILTER structure allows to define a matrix for convolution (maximum 7x7).
typedef struct ( GFL_INT16 Size, GFL_INT16 Matrix[7*7], GFL_INT16 Divisor, GFL_INT16 Bias } GFL_FILTER
Members
- Size
- Define the width of the matrix (maximum 7).
- Matrix
- Define each values fo the matrix.
- Divisor
- Define the divisor to apply.
- Bias
- Define the bias to apply.
Example
- A "blur" matrix is defined like this:
- Size = 3
- Matrix = (1 2 1 2 4 2 1 2 1)
- Divisor = 16
- Bias = 0
GFL_EXIF_DATA
IFD
GFL_EXIF_IFD_0 0x0001 GFL_EXIF_MAIN_IFD 0x0002 GFL_EXIF_INTEROPERABILITY_IFD 0x0004 GFL_EXIF_IFD_THUMBNAIL 0x0008 GFL_EXIF_GPS_IFD 0x0010 GFL_EXIF_MAKERNOTE_IFD 0x0020
Some tags
GFL_EXIF_MAKER 0x010F GFL_EXIF_MODEL 0x0110 GFL_EXIF_ORIENTATION 0x0112 GFL_EXIF_EXPOSURETIME 0x829A GFL_EXIF_FNUMBER 0x829D GFL_EXIF_DATETIME_ORIGINAL 0x9003 GFL_EXIF_SHUTTERSPEED 0x9201 GFL_EXIF_APERTURE 0x9202 GFL_EXIF_MAXAPERTURE 0x9205 GFL_EXIF_FOCALLENGTH 0x920A
typedef struct { GFL_UINT32 Flag; /* EXIF_...IFD */ GFL_UINT32 Tag; const char* Name; const char* Value; } GFL_EXIF_ENTRY;
typedef struct { GFL_UINT32 NumberOfItems; GFL_EXIF_ENTRY* ItemsList; } GFL_EXIF_DATA;
GFL_LOAD_CALLBACKS
typedef struct { GFL_READ_CALLBACK Read; GFL_TELL_CALLBACK Tell; GFL_SEEK_CALLBACK Seek; GFL_ALLOCATEBITMAP_CALLBACK AllocateBitmap; void* AllocateBitmapParams; GFL_PROGRESS_CALLBACK Progress; void* ProgressParams; GFL_WANTCANCEL_CALLBACK WantCancel; void* WantCancelParams; GFL_VIRTUAL_LOAD_CALLBACK SetLine; void* SetLineParams; } GFL_LOAD_CALLBACKS;
GFL_EXIF_DATAEX
Tag format
GFL_EXIF_BYTE 1 GFL_EXIF_STRING 2 GFL_EXIF_USHORT 3 GFL_EXIF_ULONG 4 GFL_EXIF_URATIONAL 5 GFL_EXIF_SBYTE 6 GFL_EXIF_UNDEFINED 7 GFL_EXIF_SSHORT 8 GFL_EXIF_SLONG 9 GFL_EXIF_SRATIONAL 10 GFL_EXIF_SINGLEF 11 GFL_EXIF_DOUBLE 12
typedef struct { GFL_UINT16 Tag; GFL_UINT16 Format; GFL_INT32 Ifd; GFL_INT32 NumberOfComponents; GFL_UINT32 Value; GFL_INT32 DataLength; char* Data; GFL_EXIF_ENTRYEX* Next; } GFL_EXIF_ENTRYEX;
typedef struct { GFL_ENTRYEX* Root; GFL_INT32 UseMsbf; } GFL_EXIF_DATAEX;