#include "ltwrappr.h"

virtual L_INT LAnnotation::GetUserData(pUserData, puUserDataSize)

Gets the user-defined data of one or more annotation objects.


L_UCHAR * pUserData

Address into which the binary data is read. Can be NULL.

L_UINT *puUserDataSize

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.

LAnnotation lObject;  
L_UCHAR *pUserData;  
L_UINT uUserDataSize;  
// Assume lObject is a valid annotation object  
lObject.GetUserData(NULL, &uUserDataSize);  
pUserData = (L_UCHAR *)malloc(uUserDataSize);  
lObject.GetUserData(pUserData, &uUserDataSize);  

User data can be binary or text data, and can be any length. When the annotion object is copied, and user data is also copied. When saving the annotation (LAnnContainer::Save, LAnnContainer::SaveMemory, LAnnContainer::SaveOffset), the user data is saved.

Required DLLs and Libraries


Win32, x64.

See Also




//// 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 LMemoryFile // plObject -- the annotation object // plBitmap -- the bitmap object is loaded/saved // bLoad -- TRUE means load from the annotation object, FALSE

L_INT LAnnotation_GetUserDataExample(LAnnotation *plObject, LMemoryFile *plBitmap, L_BOOL bSave)  
   L_INT nRet; 
   HGLOBAL hGlobal = NULL;  
   L_SIZE_T uUserDataSize;  
   L_UCHAR *pUserData;  
   if (!plBitmap->IsValid()  || !plObject->IsValid()) 
      return FAILURE;  
   if (bSave) // saving 
      LBuffer LMemoryBuffer;  
      nRet = plBitmap->Save(&LMemoryBuffer, FILE_BMP, 24, 0, NULL);  
      if(nRet != SUCCESS) 
         return nRet; 
      pUserData = (L_UCHAR *)GlobalLock(LMemoryBuffer.GetHandle()); 
      uUserDataSize = LMemoryBuffer.GetSize(); 
      nRet = plObject->SetUserData( pUserData ,(L_UINT ) uUserDataSize, ANNFLAG_NOINVALIDATE );  
      if(nRet != SUCCESS) 
         return nRet; 
   else // loading 
      // Load  
      LBuffer LMemoryBuffer;  
      nRet = plObject->GetUserData(NULL,(L_UINT  *) &uUserDataSize);  
      if(nRet != SUCCESS) 
         return nRet; 
      pUserData = (L_UCHAR *)malloc(uUserDataSize);  
      nRet = plObject->GetUserData(pUserData,(L_UINT  *)&uUserDataSize);  
      if(nRet != SUCCESS) 
         return nRet; 
      LMemoryBuffer= (L_TCHAR *)pUserData;  
      nRet = plBitmap->Load(LMemoryBuffer,  0, ORDER_BGRORGRAY, NULL, NULL);  
      if(nRet != SUCCESS) 
         return nRet; 
   return SUCCESS; 

Help Version 20.0.2020.4.5
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2020 LEAD Technologies, Inc. All Rights Reserved.

LEADTOOLS Raster Imaging C++ Class Library Help