Gets the attributes of the specified graphic annotation object.
#include "ltdic.h"
L_LTDIC_API L_UINT16 L_DicomGetGraphicObjectInfo(hDS, pGraphicAnnSQItem, uGraphicObjectIndex, pGraphicObject, uStructSize)
A DICOM handle.
Pointer to an item element under the "Graphic Annotation Sequence" (0070,0001) in the "Graphic Annotation Module".
The index of the graphic annotation object whose attributes we want to retrieve.
Pointer to a structure which will be filled with the graphic annotation object attributes.
Size of the DICOMGRAPHICOBJECT structure. Pass sizeof(DICOMGRAPHICOBJECT).
Value | Meaning |
---|---|
DICOM_SUCCESS | The function was successful. |
>0 | An error occurred. Refer to Return Codes. |
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.
Win32, x64, Linux.
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;
}