RESIZECALLBACK Callback Function

#include "l_bitmap.h"

L_INT pEXT_CALLBACK YourFunction(pBitmap, pBuffer, nRow, nCol, uBytes, pUserData)

pBITMAPHANDLE pBitmap;

/* bitmap handle */

L_UCHAR* pBuffer;

/* buffer for data */

L_INT nRow;

/* number of the row to provide */

L_INT nCol;

/* column offset within the row to provide */

L_SIZE_T uBytes;

/* number of bytes to retrieve */

L_VOID* pUserData;

/* pointer to additional parameters */

Callback function used to feed to the resizing engine image data to be resized.

Parameter

Description

pBitmap

Pointer to a bitmap handle.

pBuffer

Buffer that contains image data.

nRow

The number of the row to provide. The first row is 0, and the last row is 1 less than the bitmap height.

nCol

The column offset within the row to provide. The first column offset is 0, and the last column offset is 1 less than the bitmap width.

uBytes

The number of bytes to retrieve.

pUserData

A void pointer that you can use to access a variable or structure containing data that your callback function needs. This gives you a way to receive data indirectly from the function that uses this callback function. (This is the same pointer that you pass in the pUserData parameter of the calling function.)

 

Keep in mind that this is a void pointer, which must be cast to the appropriate data type within your callback function.

Returns

>0

The number of bytes that the function wrote to the file.

-1

The function failed.

Comments

This is an optional callback function used by the L_StartResizeBitmap function. It is called by L_StartResizeBitmap to get the data from the bitmap. One possible use of this is to resize bitmaps that are too large to fit into memory. You can use the callback to feed to the resizing engine one line at a time.

This serves as a replacement for the L_GetBitmapRowCol function, which may be unable to retrieve certain images, such as extremely large images. This callback allows you to retrieve portions of an image for resizing.

Required DLLs and Libraries

LTKRN

For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application

Example

L_INT ResizeCallback (
   pBITMAPHANDLE pBitmap, 
   L_UCHAR  *pBuffer, 
   L_INT nRow, 
   L_INT nCol,
   L_SSIZE_T uBytes, 
   L_VOID  *pUserData)
{
   UNREFERENCED_PARAMETER(pUserData);
   L_SSIZE_T uBytesRead = L_GetBitmapRowCol(pBitmap, pBuffer, nRow, nCol, uBytes);
   return uBytesRead == uBytes ? SUCCESS : FAILURE; 
}