LDicomDS::GetGraphicObjectInfo

#include "Ltdic.h"

L_UINT16 LDicomDS::GetGraphicObjectInfo(pGraphicAnnSQItem, uGraphicObjectIndex, pGraphicObject, uStructSize)

pDICOMELEMENT pGraphicAnnSQItem;

/* pointer to a DICOMELEMENTstructure */

L_UINT uGraphicObjectIndex;

/* graphic annotation object index */

pDICOMGRAPHICOBJECT pGraphicObject;

/* pointer to the graphic annotation object attributes structure to be updated */

L_UINT uStructSize;

/* the size of the DICOMGRAPHICOBJECT structure */

Gets the attributes of the specified graphic annotation object.

Parameter

Description

pGraphicAnnSQItem

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

uGraphicObjectIndex

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

pGraphicObject

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

uStructSize

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

Returns

0

SUCCESS

>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 LDicomDS::GetGraphicObjPointsCount in order to get the "Number of Graphic Points" (0070,0021) in this object and allocate pGraphicObject->pAnnPoints accordingly.

Required DLLs and Libraries

LTDIC

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

See Also

Functions:

LDicomDS::FindFirstGraphicAnnSQItem, LDicomDS::CreateGraphicAnnSQItem, LDicomDS::CreateGraphicObject, LDicomDS::RemoveGraphicObject, LDicomDS::SetGraphicObjectInfo, LDicomDS::GetGraphicObjectCount, LDicomDS::RemoveAllGraphicObjects, LDicomDS::GetGraphicObjPointCount, LDicomDS::GetGraphicObjElement, LDicomDS::ConvertLEADAnnObjToDicomAnnObjs, LDicomDS::ConvertLEADAnnObjToDicomAnnObjs, LDicomDS::ConvertDicomAnnObjToLEADAnnObj, Class Members

Topics:

Working with DICOM Annotations

Example

L_INT LDicomDS_GetGraphicObjectInfoExample(LDicomDS& PresStateDS)  
{
   L_INT                nRet;
   L_TCHAR              szText[256] = TEXT("");
   L_TCHAR*             pszType = NULL; 
   DICOMGRAPHICOBJECT   AnnGraphic; 
   L_UINT               uPointsCount; 
   L_UINT               uObjCount; 
   pDICOMANNPOINT       pPoints = NULL; 
   pDICOMELEMENT        pGraphicAnnSQItem = PresStateDS.FindFirstGraphicAnnSQItem();
   nRet = PresStateDS.GetLayerGraphicObjectCount(pGraphicAnnSQItem, &uObjCount); 
   if (nRet != DICOM_SUCCESS) 
      return nRet; 
   if (uObjCount > 0) 
   {
      for (L_UINT i = 0; i < uObjCount; i++)
      {
         memset(&AnnGraphic, 0, sizeof(DICOMGRAPHICOBJECT)); 
         nRet = PresStateDS.GetGraphicObjPointCount(pGraphicAnnSQItem,i, & uPointsCount); 
         if (nRet != DICOM_SUCCESS) 
            return nRet; 
         if (uPointsCount > 0) 
         {
            pPoints = new DICOMANNPOINT[uPointsCount]; 
            if (!pPoints) 
            {
               return -1; 
            }
            AnnGraphic.pAnnPoints = pPoints; 
            AnnGraphic.nPointCount = (L_UINT16)uPointsCount; 
            nRet = PresStateDS.GetGraphicObjectInfo(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) 
               {
                  delete [] pPoints; 
               }
            }
            else
               return nRet;
         }
      }
   }
   return DICOM_SUCCESS;
}