The LEADTOOLS C++ Class Library is a wrapper to the LEADTOOLS C API and provides only a subset of the features and functionality otherwise available in the LEADTOOLS C API. For more information about the full feature set of the LEADTOOLS C API, refer to LEADTOOLS C API Introduction.
Is this page helpful?
Returns a pointer to the last item in the Data Set.
#include "Ltdic.h"
pDICOMELEMENT LDicomDS::GetLastElement(pElement, bTree, bVolatile)
Pointer to a DICOMELEMENT structure within the Data Set. A pointer to the DICOMELEMENT structure that contains the last item in the Data Set will be returned.
Flag that indicates how the Data Set will be evaluated. Possible values are:
Value | Meaning |
---|---|
TRUE | Evaluate the Data Set as a tree. |
FALSE | Evaluate the Data Set as a list. |
Flag that indicates the type of element to retrieve. Possible values are:
Value | Meaning |
---|---|
TRUE | Retrieve the last element, volatile or non-volatile. |
FALSE | Retrieve the last non-volatile element. |
Value | Meaning |
---|---|
!NULL | A pointer to a DICOMELEMENT structure that contains the last item in the Data Set. |
NULL | The Data Set is empty. |
If the Data Set is evaluated as a tree structure, this function returns the last item on the same level as pElement with the same parent as pElement.
NOTE: The numbering of the items in this illustration is arbitrary and does not imply order.
If the passed pointer points to: | The function returns a pointer to: |
---|---|
Item 1 | Item 2 |
Item 3 | Item 4 |
Item 5 | Item 5 |
Item 6 | Item 7 |
NULL | Item 2 |
If the Data Set is evaluated as a list, the last item in the list is returned.
NOTE: The numbering of the items in this illustration does indicate the order of the items when the Data Set is evaluated as a list.
If the passed pointer points to: | The function returns a pointer to: |
---|---|
NULL | Item 30 |
Item 12 | Item 30 |
Item 14 | Item 30 |
Item 22 | Item 30 |
Item 25 | Item 30 |
The following functions will also help you navigate the Data Set as either a tree or a list:
If you evaluate the Data Set as a tree, you can also use the following functions to navigate the tree:
A volatile element is an element that can be changed or destroyed in the process of inserting or setting an image. A non-volatile element is an element that must be changed manually. It is not changed or destroyed by inserting or setting an image.
For example, a grayscale image has elements TAG_SMALLEST_IMAGE_PIXEL_VALUE, TAG_LARGEST_IMAGE_PIXEL_VALUE, etc. If the image is changed to a color image, these elements disappear and the following elements appear: TAG_RED_PALETTE_COLOR_LOOKUP_TABLE_DESCRIPTOR, etc. These are volatile elements since they are changed or destroyed when an image is changed or set.
To retrieve the last element that must be changed manually, i.e. is not volatile, set bVolatile to FALSE. To retrieve the last element, either volatile or non-volatile, set bVolatile to TRUE.
Win32, x64
// Example 1
// This example displays the name of the last element in the current level.
L_INT LDicomDS_GetLastElementExample()
{
LDicomDS *pDS;
pDICOMELEMENT pLast;
pDICOMELEMENT pElement;
pDICOMTAG pTag;
L_TCHAR szUnknown[]=TEXT("Unknown");
L_TCHAR *p;
pDS = new LDicomDS(NULL);
pDS->InitDS(CLASS_XA_BIPLANE_IMAGE_STORAGE_RETIRED, 0);
pElement = pDS->FindFirstElement(NULL, TAG_RADIATION_SETTING, FALSE);
if (pElement != NULL)
{
pLast = pDS->GetLastElement(pElement, TRUE, FALSE);
pTag = LDicomTag::Find(pLast->nTag);
if (pTag != NULL)
{
p = pTag->pszName;
}
else
{
p = szUnknown;
}
MessageBox(NULL, p, TEXT("Notice"), MB_OK);
}
delete pDS;
return DICOM_SUCCESS;
}
// Example 1
// This example displays the name of the last element in the Data Set.
L_INT Test()
{
LDicomDS *pDS;
pDICOMELEMENT pLast;
pDICOMELEMENT pElement;
pDICOMTAG pTag;
L_TCHAR szUnknown[]=TEXT("Unknown");
L_TCHAR *p;
pDS = new LDicomDS(NULL);
pDS->InitDS( CLASS_XA_BIPLANE_IMAGE_STORAGE_RETIRED, 0);
pElement = pDS->FindFirstElement(NULL, TAG_RADIATION_SETTING, FALSE);
if (pElement != NULL)
{
pLast = pDS->GetLastElement(pElement, FALSE, FALSE);
pTag = LDicomTag::Find(pLast->nTag);
if (pTag != NULL)
{
p = pTag->pszName;
}
else
{
p = szUnknown;
}
MessageBox(NULL, p, TEXT("Notice"), MB_OK);
}
delete pDS;
return DICOM_SUCCESS;
}