COLORRESCALLBACK Function
#include "l_bitmap.h"
L_INT pEXT_CALLBACK YourFunction (pBitmap, pBuffer, nLines, pUserData)
pBITMAPHANDLE pBitmap; |
/* pointer to the bitmap handle*/ |
L_UCHAR* pBuffer; |
/* pointer to a buffer of the caller's output data*/ |
L_INT nLines; |
/* number of lines in the buffer*/ |
L_VOID* pUserData; |
/* pointer to additional parameters*/ |
Handles the converted image data that the L_ColorResBitmap function has written to a buffer.
Parameter |
Description |
pBitmap |
The pointer to the bitmap handle referencing the bitmap that contains the image information. |
pBuffer |
A pointer to a buffer containing one or more lines of output image data that the calling function has already converted. |
nLines |
The number of lines in the pBuffer buffer. |
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
SUCCESS |
The function was successful. |
< 1 |
An error occurred. Refer to Return Codes. |
Comments
This is an optional callback function for additional processing. (The bitmap is modified the same way, whether you provide a callback function or not.) For an explanation of how the callback function is used, refer to L_ColorResBitmap.
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 |
See Also
Example
This COLORRESCALLBACK function paints the image as the image is processed.
/* Structure used for the callback function's user data */ typedef struct tagIMAGECBPARM { HWND hwnd; /* Current window */ HDC hdc; /* Device context for the current window */ L_INT nRow; /* First row in the input buffer */ HPALETTE hpalPaint; /* Paint palette handle */ RECT rLeadDest; /* Destination rectangle for painting */ RECT rLeadSource; /* Source rectangle for painting */ } IMAGECBPARM, * LPIMAGECBPARM; /*******************************************************************************/ L_INT EXT_CALLBACK ColorResCallback (pBITMAPHANDLE pBitmap, L_UCHAR *pBuffer, L_INT nLines, L_VOID * pColorResUserData) { LPIMAGECBPARM pUserData = (LPIMAGECBPARM) pColorResUserData; /* If this is the first call (row 0), select and realize the palette */ if( pUserData->nRow == 0 ) { SendMessage (pUserData->hwnd, WM_QUERYNEWPALETTE, 0, 0L); SelectPalette( pUserData->hdc, pUserData->hpalPaint, TRUE ); RealizePalette(pUserData->hdc); } /* Paint the buffer to the specified device context */ L_PaintDCBuffer( pUserData->hdc, /* Device context - from function parameter */ pBitmap, /* Bitmap handle - from function parameter */ &pUserData->rLeadSource, /* Source rect - set globally in WM_CREATE */ &pUserData->rLeadSource, /* Source clip rect - same as source rect */ &pUserData->rLeadDest, /* Destination rect - set globally in WM_CREATE */ &pUserData->rLeadDest, /* Destination clip rect - same as destination rect */ SRCCOPY, /* ROP code for normal painting */ pBuffer, /* Input buffer - from function parameter */ pUserData->nRow, /* First row in buffer - from function parameter */ nLines ); /* Number of lines in the buffer - from function parameter */ /* Increment the current row by the number of lines in the buffer */ pUserData->nRow += nLines; return( SUCCESS ); }