STARTDECOMPRESSDATA

typedef struct _STARTDECOMPRESSDATA
{
   L_UINT uStructSize; 
   pBITMAPHANDLE pBitmap; 
   L_UINT uBitmapStructSize;
   L_UINT uStripsOrTiles; 
   L_UINT uFormat; 
   L_INT nWidth; 
   L_INT nHeight; 
   L_INT nBitsPerPixel; 
   L_INT nViewPerspective; 
   L_INT nRawOrder; 
   L_INT nLoadOrder; 
   L_INT nQFactor;  /* Qfactor value */
   L_INT nXResolution; 
   L_INT nYResolution; 
   FILEREADCALLBACK pfnReadCallback;
   RGBQUAD Palette[256];
   L_UINT32 uFlags; 
   L_VOID * pUserData; 
   L_UINT32 rgbColorMask[3]; 
   L_INT nPlanarConfig; 
   L_UINT32 uReserved1; 
} STARTDECOMPRESSDATA, L_FAR * LPSTARTDECOMPRESSDATA;

The STARTDECOMPRESSDATA structure provides decompression to the L_StartDecompressBuffer function.

Member

Description

uStructSize

Size of this structure in bytes, for versioning. Use the sizeof() macro to calculate this value.

pBitmap

Pointer to the bitmap handle in which to load the image.

uBitmapStructSize

Size of the structure pointed to by pBitmap, for versioning. Use sizeof(BITMAPHANDLE).

uStripsOrTiles

Flag that indicates whether strips or tiles are being decompressed. Strips have a width equal to the bitmap width, but tiles can have a width that is less than the bitmap width. Possible values are:

 

Value

Meaning

 

DECOMPRESS_STRIPS

Decompress strips of data.

 

DECOMPRESS_TILES

Decompress tiles of data. The pfnReadCallback is not called if this option is set.

uFormat

Format of the image to decompress. Possible values are:

 

Value

Meaning

 

FILE_CMP

LEAD CMP compression format.

 

FILE_JPEG

JPEG file

 

FILE_RAW_RLE4

RAW file with RLE compression, 4 bits per pixel

 

FILE_RAW_RLE8

RAW file with RLE compression, 8 bits per pixel

 

FILE_RAW_BITFIELDS

RAW file with bitfield compression

 

FILE_RAW_PACKBITS

RAW file with packed bits compression

 

FILE_RAW_CCITT

RAW file with CCITT compression.

 

FILE_FAX_G3_1D

Fax file with G3 one-dimensional compression

 

FILE_FAX_G3_2D

Fax file with G3 two-dimensional compression

 

FILE_FAX_G4

Fax file with G4 compression

nWidth

Bitmap width.

nHeight

Bitmap height.

nBitsPerPixel

Bits per pixel of the compressed data.

nViewPerspective

View perspective of the compressed data. Possible values are:

 

Value

Meaning

 

TOP_LEFT

Top-left of image is first in memory.

 

TOP_LEFT90

TOP_LEFT rotated clockwise by 90 degrees.

 

TOP_LEFT180

TOP_LEFT rotated clockwise by 180 degrees.

 

TOP_LEFT270

TOP_LEFT rotated clockwise by 270 degrees.

 

BOTTOM_LEFT

Bottom-left of image is first in memory.

 

BOTTOM_LEFT90

BOTTOM_LEFT rotated clockwise by 90 degrees.

 

BOTTOM_LEFT180

BOTTOM_LEFT rotated clockwise by 180 degrees.

 

BOTTOM_LEFT270

BOTTOM_LEFT rotated clockwise by 270 degrees

nRawOrder

Color order of 24-bit raw data. This is ignored if the image is palettized. Possible values are:

 

Value

Meaning

 

ORDER_RGB

RGB

 

ORDER_BGR

BGR

nLoadOrder

Desired color order after a 24-bit image is loaded. This is ignored if the image is palettized. Possible values are:

 

Value

Meaning

 

ORDER_RGB

RGB

 

ORDER_BGR

BGR

nXResolution

Horizontal resolution, in dots per inch.

nYResolution

Vertical resolution, in dots per inch.

pfnReadCallback

Optional callback function for additional processing.

 

image\sqrblit.gif If you do not provide a callback function, use NULL as the value of this parameter.

 

image\sqrblit.gif If you do provide a callback function, use the function pointer as the value of this parameter.

 

The callback function must adhere to the function prototype described in the FILEREADCALLBACK function.

Palette

Palette for uncompressed data that is 8 bits per pixel or less. Fill in the first 2BitsPerPixel entries in this palette and include DECOMPRESS_PALETTE in the uFlags field.

uFlags

Flags that affect the decompression process. Possible values are:

 

Value

Meaning

 

DECOMPRESS_LSB

Fill the least significant bit first.

 

DECOMPRESS_PAD4

Pad each line to a multiple of 4 bytes.

 

DECOMPRESS_PALETTE

A palette is supplied in the rgbQuad field.

pUserData

Void pointer that you can use to pass one or more additional parameters that the callback function needs.

 

To use this feature, assign a value to a variable or create a structure that contains as many fields as you need. Then, in this parameter, pass the address of the variable or structure, casting it to L_VOID L_FAR *. The callback function, which receives the address in its own pUserData parameter, can cast it to a pointer of the appropriate data type to access your variable or structure.

 

If the additional parameters are not needed, you can pass NULL in this parameter.

rgbColorMask

An array of L_UINT32 values that represent RGB color masks. rgbColorMask[0] is the red mask; rgbColorMask[1] is the green mask; rgbColorMask[2] is the blue mask. This field is valid only if uFormat is FILE_RAW_BITFIELDS.

nPhotoInt

Value that represents color information. Possible values are:

 

Value

Meaning

 

For FILE_RAW_CCITT

 

 

FILE_RAW_G3_1D,

 

 

FILE_RAW_G3_2D and

 

 

FILE_FAX_G4

 

 

0

White is zero

 

1

Black is zero

 

For FILE_RAW_PACKBITS:

 

 

2

There is no color map (RGB)

 

5

Separated CMYK

 

6

YC b C r color space

 

8

1976 CIE L*a*b

uPlanarConfig

Planar configuration. This value is used only if uFormat is FILE_RAW_PACKBITS. Otherwise, it is ignored. Possible values are:

 

Value

Meaning

 

1

Chunky

 

2

Planar format

uReserved1

Reserved for future use. Pass 0.

Comments

As an example, with 16-bit data arranged as RRR RRGG GGGB BBBB, the masks would be
rgbColorMask[0] = 0x7C00
rgbColorMask[1] = 0x0E30
rgbColorMask[2] = 0x001F

For 32-bit data, the only valid data is RRRR RRRR GGGG GGGG BBBB BBBB. The masks would be:
rgbColorMask[0] = 0xFF0000
rgbColorMask[1] = 0x00FF00
rgbColorMask[2] = 0x0000FF

Some functions which take this structure as a parameter require that the structure be initialized prior to the function call. You must set the uStructSize member to the total size, in bytes, of the structure. Use the sizeof() macro to calculate this value. Functions that do not require the structure be initialized will take the total size of the structure, in bytes, as an additional function parameter.