#include "l_bitmap.h"
L_LTKRN_API L_VOID L_SetStatusCallBack(pfnCallback, pUserData, pfnOldCallback, ppOldUserData)
STATUSCALLBACK pfnCallback; |
pointer to your callback function |
L_VOID* pUserData; |
pointer to more parameters for the callback |
STATUSCALLBACK* pfnOldCallback; |
pointer to old callback function |
L_VOID** ppOldUserData; |
pointer to more parameters for the old callback |
Sets the new status callback function and gets the old status callback.
Parameter |
Description |
pfnCallback |
Pointer to your callback function. The callback function must adhere to the function syntax specified in STATUSCALLBACK Function. |
|
This callback function must return SUCCESS if the operation was successfully done, or any error if the function call was a failure. If the callback function returns a failure, the current function will terminate and return the same error that the callback returned. |
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 *. 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. |
pfnOldCallback |
Pointer to a variable which will be updated with the old status callback function |
ppOldUserData |
Pointer to a variable which will be updated with the user data for the old status callback function |
None.
The status callback is returned through a parameter. You used to have to call L_GetStatusCallBack to get the user data prior to calling L_SetStatusCallback. Now you can get the old callback and set the new callback in one function call.
You can use this function to specify a callback for any of the following functions:
L_AddBitmapNoise
L_AverageFilterBitmap
L_BinaryFilterBitmap
L_ChangeBitmapContrast
L_ChangeBitmapHue
L_ChangeBitmapIntensity
L_ChangeBitmapSaturation
L_ClearBitmap
L_ColorMergeBitmap
L_ColorSeparateBitmap
L_CombineBitmap
L_DeskewBitmap
L_DespeckleBitmap
L_EmbossBitmap
L_FillBitmap
L_FlipBitmap
L_GammaCorrectBitmap
L_GetBitmapHistogram
L_GrayScaleBitmap
L_HalfToneBitmap
L_HistoEqualizeBitmap
L_IntensityDetectBitmap
L_InvertBitmap
L_MedianFilterBitmap
L_MMConvertFromBitmapList(Video Module only)
L_MMSaveFile(Video Module only)
L_MosaicBitmap
L_PaintDCEffect
L_PosterizeBitmap
L_PrintBitmap
L_RemapBitmapIntensity
L_ResizeBitmap
L_ReverseBitmap
L_RotateBitmap
L_SharpenBitmap
L_ShearBitmap
L_SizeBitmap
L_SpatialFilterBitmap
L_StretchBitmapIntensity
L_UnderlayBitmap
Both the old status callback function and the user data required for the old status callback function are updated in the pfnOldCallbaclk and ppOldUserData parameters, respectively.
1. |
Call the L_SetStatusCallBack function, assigning its return value to a STATUSCALLBACK variable, and passing the pointer to your callback as the new value. |
2. |
Call the function that uses the callback (for example L_AverageFilterBitmap). |
3. |
Call the L_SetStatusCallBack function again, restoring the original value by passing the variable that you saved in Step 1. |
Required DLLs and Libraries
For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application. |
Win32, x64, Linux.
Functions: |
|
Topics: |
/* This is the STATUSCALLBACK function, which stops the process if the user has pressed the interrupt key. */
L_BOOL KillProgress;
L_INT EXT_CALLBACK StatusCallBack (L_INT nPercent, L_VOID *pUserData)
{
HWND hWnd=NULL;
L_TCHAR achMsg[80]; /* message string */
MSG msg;
hWnd = (HWND)pUserData;
/* Let the application detect other events - good for cancel */
while (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
/* Check the global variable and return an error if necessary */
if (KillProgress)
{
wsprintf (achMsg, TEXT("Interrupted by the user with %d percent finished"),nPercent);
MessageBox (hWnd, achMsg, TEXT("Notice"), MB_OK);
return (ERROR_USER_ABORT);
}
wsprintf(achMsg, TEXT("Percentage: %d\n"), nPercent);
OutputDebugString(achMsg);
return SUCCESS;
}
/* This function uses L_SetStatusCallBack to implement the STATUSCALLBACK
function when applying a median filter. */
L_INT SetStatusCallbackExample(BITMAPHANDLE *pBitmap)
{
STATUSCALLBACK lpfnOldStatusCB; /* Pointer to the previous STATUSCALLBACK function */
L_INT nRet=SUCCESS;
L_VOID * pOldData; /* Pointer to the user data for the previous status callback function */
/* Set the STATUSCALLBACK function, saving the pointer to the previous one */
L_SetStatusCallBack(StatusCallBack, NULL, &lpfnOldStatusCB, &pOldData );
/* Apply an intentionally slow median filter with a neighborhood of 7x7 pixels */
KillProgress = FALSE;
nRet = L_MedianFilterBitmap(pBitmap, 7, 0);
/* Restore the previous STATUSCALLBACK function */
L_SetStatusCallBack (lpfnOldStatusCB, pOldData, NULL, NULL);
return nRet;
}
Raster .NET | C API | C++ Class Library | JavaScript HTML5
Document .NET | C API | C++ Class Library | JavaScript HTML5
Medical .NET | C API | C++ Class Library | JavaScript HTML5
Medical Web Viewer .NET