L_AnnGetUserData

#include "l_bitmap.h"

L_INT EXT_FUNCTION L_AnnGetUserData(hObject, pUserData, puUserDataSize)

HANNOBJECT hObject;

/* handle to the annotation object */

L_UCHAR pUserData;

/* address of binary data to write */

L_UINT *puUserDataSize;

/* address of variable to updated with length of user data */

L_UINT uFlags;

/* flags that determine which objects to process */

Gets the user-defined data of one or more annotation objects. This function is available in the Document/Medical Toolkits.

Parameter

Description

hObject

Handle to the annotation object.

pUserData

Address that binary data is read into. Can be NULL.

puUserDataSize

Address of variable to be updated with the length (in bytes) of the user data

Returns

SUCCESS

The function was successful.

< 1

An error occurred. Refer to Return Codes.

Comments

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

LTANN

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

Platforms

Windows 95 / 98 / Me, Windows 2000 / XP.

See Also

Functions:

L_AnnSetAutoCursor, L_AnnGetAutoCursor, L_AnnSetUserData, L_AnnSetAutoSnapCursor, L_AnnGetAutoSnapCursor

Topics:

Annotation Objects - Automated Features

 

Implementing an Automated Annotation Program

 

Obtaining Annotation Object Information

Example

// 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_VOID SampleAnnUserData(HANNOBJECT hObject, pBITMAPHANDLE pBitmap, L_BOOL bSave)
{
   HGLOBAL hGlobal = NULL;
   L_UINT uUserDataSize;
   L_UCHAR *pUserData;

   if (!pBitmap || !hObject)
      return;

   if (bSave) // saving
   {
      L_SaveBitmapMemory(&hGlobal, pBitmap, FILE_BMP, 24, 0, &uUserDataSize, NULL);
      pUserData = (L_UCHAR *)GlobalLock(hGlobal);

      L_AnnSetUserData(hObject,  pUserData, uUserDataSize, ANNFLAG_NOINVALIDATE );

      GlobalUnlock(hGlobal);
      GlobalFree(hGlobal);
   }


   else // loading
   {
      // Load 
      L_AnnGetUserData(hObject, NULL, &uUserDataSize);
      pUserData = (L_UCHAR *)malloc(uUserDataSize);
      L_AnnGetUserData(hObject, pUserData, &uUserDataSize);
      L_LoadBitmapMemory(pUserData, pBitmap, sizeof(BITMAPHANDLE), 0, ORDER_BGRORGRAY, uUserDataSize, NULL, NULL);
      free(pUserData);
   }
}