L_DicomGetGraphicObjectInfo

#include "l_bitmap.h"

L_LTDIC_API L_UINT16 L_DicomGetGraphicObjectInfo(hDS, pGraphicAnnSQItem, uGraphicObjectIndex, pGraphicObject, uStructSize)

Gets the attributes of the specified graphic annotation object.

Parameters

HDICOMDS hDS

A DICOM handle.

pDICOMELEMENT pGraphicAnnSQItem

Pointer to an item element under the "Graphic Annotation Sequence" (0070,0001) in the "Graphic Annotation Module".

L_UINT uGraphicObjectIndex

The index of the graphic annotation object whose attributes we want to retrieve.

pDICOMGRAPHICOBJECT pGraphicObject

Pointer to a structure which will be filled with the graphic annotation object attributes.

L_UINT uStructSize

Size of the DICOMGRAPHICOBJECT structure. Pass sizeof(DICOMGRAPHICOBJECT).

Returns

Value Meaning
DICOM_SUCCESS The function was successful.
>0 An error occurred. Refer to Return Codes.

Comments

This function will retrieve the attributes of the specified graphic object and store their values in the structure pointed to by pGraphicObject.

pGraphicObject->uStructSize will be set to the value of the parameter uStructSize.

Before calling this function you can call L_DicomGetGraphicObjPointsCount in order to get the "Number of Graphic Points" (0070,0021) in this object and allocate pGraphicObject->pAnnPoints accordingly.

Required DLLs and Libraries

Platforms

Win32, x64, Linux.

See Also

Functions

Topics

Example

L_INT DicomGetGraphicObjectInfoExample(HDICOMDS hPresStateDS) 
{ 
   L_TCHAR szText[256] = TEXT("\0"); 
   L_UINT16 nRet; 
   L_TCHAR* pszType = NULL; 
   DICOMGRAPHICOBJECT AnnGraphic; 
   L_UINT uPointsCount; 
   L_UINT uObjCount; 
   pDICOMANNPOINT pPoints = NULL; 
   L_UINT i; 
 
   pDICOMELEMENT pGraphicAnnSQItem = L_DicomFindFirstGraphicAnnSQItem(hPresStateDS); 
 
   nRet = L_DicomGetLayerGraphicObjectCount(hPresStateDS,pGraphicAnnSQItem, &uObjCount); 
   if (nRet != DICOM_SUCCESS) 
      return nRet; 
 
   if (uObjCount > 0) 
   { 
      for (i = 0; i < uObjCount; i++) 
      { 
         memset(&AnnGraphic, 0, sizeof(DICOMGRAPHICOBJECT)); 
         nRet = L_DicomGetGraphicObjPointCount(hPresStateDS,pGraphicAnnSQItem, i, & uPointsCount); 
         if (nRet != DICOM_SUCCESS) 
            return nRet; 
 
         if (uPointsCount > 0) 
         { 
            pPoints = (DICOMANNPOINT *)malloc(sizeof(DICOMANNPOINT) * uPointsCount); 
            if (!pPoints) 
               return ERROR_NOT_ENOUGH_MEMORY; 
 
            AnnGraphic.pAnnPoints = pPoints; 
            AnnGraphic.nPointCount = (L_UINT16)uPointsCount; 
 
            nRet = L_DicomGetGraphicObjectInfo( hPresStateDS, 
               pGraphicAnnSQItem, 
               i, 
               &AnnGraphic, 
               sizeof(DICOMGRAPHICOBJECT)); 
 
            if (nRet == DICOM_SUCCESS) 
            { 
               switch (AnnGraphic.uType) 
               { 
               case DICANN_TYPE_POINT: 
                  pszType = TEXT("Point Annotation"); 
                  break; 
               case DICANN_TYPE_POLYLINE: 
                  pszType = TEXT("Polyline Annotation"); 
                  break; 
               case DICANN_TYPE_INTERPOLATED: 
                  pszType = TEXT("Interpolated Line Annotation"); 
                  break; 
               case DICANN_TYPE_CIRCLE: 
                  pszType = TEXT("Circle Annotation"); 
                  break; 
               case DICANN_TYPE_ELLIPSE: 
                  pszType = TEXT("Ellipse Annotation"); 
                  break; 
               } 
 
               if (pszType) 
               { 
                  wsprintf(szText, TEXT("Annotation type is: %s"), pszType); 
                  MessageBox( NULL, szText, TEXT("Note"), MB_OK); 
               } 
 
               // Do something with the points 
               if (pPoints) 
                  free(pPoints); 
            } 
         } 
      } 
   } 
 
   return DICOM_SUCCESS; 
} 
Help Version 20.0.2020.4.2
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2020 LEAD Technologies, Inc. All Rights Reserved.

LEADTOOLS DICOM C API Help