#include "l_bitmap.h"
L_LTANN_API L_INT L_AnnGetUserData(hObject, pUserData, puUserDataSize)
Gets the user-defined data of one or more annotation objects.
Handle to the annotation object.
Address that binary data is read into. Can be NULL.
Address of variable to be updated with the length (in bytes) of the user data
Value | Meaning |
---|---|
SUCCESS | The function was successful. |
< 1 | An error occurred. Refer to Return Codes. |
Use this function to get the associated user-defined data of an annotation object.
When getting the user-defined data, call this function twice: one time with pUserData
set to NULL to get the length of the data, and another time to get the actual data.
HANNOBJECT hObject;
L_UCHAR *pUserData;
L_UINT uUserDataSize;
// Assume hObject is a valid annotation object
L_AnnGetUserData(hObject, NULL, &uUserDataSize);
pUserData = (L_UCHAR *)malloc(uUserDataSize);
L_AnnGetUserData(hObject, pUserData, &uUserDataSize);
User data can be binary or text data, and can be any length. When the annotion object is copied, and the user data is also copied. When saving the annotation (L_AnnSave, L_AnnSaveMemory, L_AnnSaveOffset), the user data is saved.
Required DLLs and Libraries
Win32, x64.
This sample loads/saves the contents of a BITMAPHANDLE from/to user data of an annotation object
Call the sample once with bSave set to TRUE, then call it again with bSave set to FALSE to
load the saved user data as a BITMAPHANDLE
hObject -- the annotation object
pBitmap -- the bitmap that is loaded/saved
bLoad -- TRUE means load from the annotation object, FALSE means save to the annotation object
L_INT AnnGetUserDataExample(HANNOBJECT hObject,
pBITMAPHANDLE pBitmap,
L_BOOL bSave)
{
L_INT nRet;
HGLOBAL hGlobal = NULL;
L_SIZE_T zUserDataSize;
L_UCHAR* pUserData;
if (!pBitmap || !hObject)
return 0;
if (bSave) // saving
{
nRet = L_SaveBitmapMemory(&hGlobal, pBitmap, FILE_BMP, 24, 0, &zUserDataSize, NULL);
if(nRet != SUCCESS)
return nRet;
pUserData = (L_UCHAR *)GlobalLock(hGlobal);
nRet = L_AnnSetUserData(hObject, pUserData, (L_UINT) zUserDataSize, ANNFLAG_NOINVALIDATE );
if(nRet != SUCCESS)
return nRet;
GlobalUnlock(hGlobal);
GlobalFree(hGlobal);
}
else // loading
{
// Load
nRet = L_AnnGetUserData(hObject, NULL, (L_UINT*) &zUserDataSize);
if(nRet != SUCCESS)
return nRet;
pUserData = (L_UCHAR *)malloc(zUserDataSize);
nRet = L_AnnGetUserData(hObject, pUserData, (L_UINT*) &zUserDataSize);
if(nRet != SUCCESS)
return nRet;
nRet = L_LoadBitmapMemory(pUserData, pBitmap, sizeof(BITMAPHANDLE), 0, ORDER_BGRORGRAY, zUserDataSize, NULL, NULL);
if(nRet != SUCCESS)
return nRet;
free(pUserData);
}
return SUCCESS;
}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document