L_DicomSetPaletteColorLUTData

#include "ltdic.h"

L_LTDIC_API L_UINT16 L_DicomSetPaletteColorLUTData(hDS, pLUTData, uDataSize, PaletteColorLUTType, uFlags)

Sets red, green or blue "Palette Color Lookup Table" data.

Parameters

HDICOMDS hDS

A DICOM handle.

L_UINT16 * pLUTData

Pointer to the buffer that holds the "Palette Color Lookup Table Data" to set.

L_UINT uDataSize

Size of the buffer pointed to by pLUTData.

DICOMPALETTECOLORLUTTYPE PaletteColorLUTType

Type of palette color lookup table data to set. Possible values are:

Value Meaning
DICOMPALETTECOLORLUTTYPE_RED Set "Red Palette Color Lookup Table Data" (0028,1201)
DICOMPALETTECOLORLUTTYPE_GREEN Set "Green Palette Color Lookup Table Data" (0028,1202)
DICOMPALETTECOLORLUTTYPE_BLUE Set "Blue Color Lookup Table Data" (0028,1203)

L_UINT uFlags

Reserved for future use. Pass 0.

Returns

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

Comments

This function will set the data for the "Red", "Green" or "Blue" "Palette Color Lookup Table".

Before calling this function you must call L_DicomSetPaletteColorLUTAttributes to set the attributes of the "Palette Color Lookup Table", otherwise this function will fail and return DICOM_ERROR_LUT_DESCRIPTOR_MISSING.

Required DLLs and Libraries

Platforms

Win32, x64, Linux.

See Also

Functions

Topics

Example

This example will set the attributes and the date for a Palette Color Lookup Table

#define SET_SIZE(p) (p)->uStructSize = sizeof(*(p)); 
 
L_INT DicomSetPaletteColorLUTDataExample(HDICOMDS hDicomDS) 
{ 
   L_INT                   nLUTIndex; 
   L_UINT16                uRet; 
   L_UINT16                *pRedLUTData               = NULL; 
   L_UINT16                *pGreenLUTData             = NULL; 
   L_UINT16                *pBlueLUTData              = NULL; 
   DICOMPALCOLORLUTATTRIBS PaletteColorLUTAttributes  = {0} ; 
 
   // Remember  to set the size for each structure 
   SET_SIZE(&PaletteColorLUTAttributes); 
   SET_SIZE(&(PaletteColorLUTAttributes.RedLUTDescriptor)); 
   SET_SIZE(&(PaletteColorLUTAttributes.GreenLUTDescriptor)); 
   SET_SIZE(&(PaletteColorLUTAttributes.BlueLUTDescriptor)); 
 
   // Initialize Red Palette Color Lookup Table Descriptor (0028,1101) 
   PaletteColorLUTAttributes.RedLUTDescriptor.nFirstStoredPixelValueMapped    = 0; 
   PaletteColorLUTAttributes.RedLUTDescriptor.uEntryBits                      = 16; 
   PaletteColorLUTAttributes.RedLUTDescriptor.uNumberOfEntries                = 0x10000; 
 
   // Initialize Green Palette Color Lookup Table Descriptor (0028,1102) 
   PaletteColorLUTAttributes.GreenLUTDescriptor.nFirstStoredPixelValueMapped  = 0; 
   PaletteColorLUTAttributes.GreenLUTDescriptor.uEntryBits                    = 16; 
   PaletteColorLUTAttributes.GreenLUTDescriptor.uNumberOfEntries              = 0x10000; 
 
   // Initialize Blue Palette Color Lookup Table Descriptor (0028,1103) 
   PaletteColorLUTAttributes.BlueLUTDescriptor.nFirstStoredPixelValueMapped   = 0; 
   PaletteColorLUTAttributes.BlueLUTDescriptor.uEntryBits                     = 16; 
   PaletteColorLUTAttributes.BlueLUTDescriptor.uNumberOfEntries               = 0x10000; 
 
   // Allocate a buffer to hold Red Palette Color Lookup Table Data 
   pRedLUTData = (L_UINT16*)malloc(0x10000 * sizeof(L_UINT16)); 
   if(!pRedLUTData) 
      return DICOM_ERROR_MEMORY; 
 
   // Allocate a buffer to hold Green Palette Color Lookup Table Data 
   pGreenLUTData = (L_UINT16*)malloc(0x10000 * sizeof(L_UINT16)); 
   if(!pGreenLUTData) 
   { 
      free(pRedLUTData); 
      return DICOM_ERROR_MEMORY; 
   } 
 
   // Allocate a buffer to hold Blue Palette Color Lookup Table Data 
   pBlueLUTData = (L_UINT16*)malloc(0x10000 * sizeof(L_UINT16)); 
   if(!pBlueLUTData) 
   { 
      free(pRedLUTData); 
      free(pGreenLUTData); 
      return DICOM_ERROR_MEMORY; 
   }    
 
   for(nLUTIndex = 0; nLUTIndex <= 0xFFFF; nLUTIndex++) 
   { 
      pRedLUTData    [nLUTIndex] = (L_UINT16)(nLUTIndex); 
      pGreenLUTData  [nLUTIndex] = (L_UINT16)(nLUTIndex/2); 
      pBlueLUTData   [nLUTIndex] = (L_UINT16)(nLUTIndex/4);    
   } 
 
   // Delete all the elements that describe the "Palette Color Lookup Table". 
   uRet = L_DicomDeletePaletteColorLUT(hDicomDS,0); 
   if(uRet != DICOM_SUCCESS) 
   { 
      free(pRedLUTData); 
      free(pGreenLUTData); 
      free(pBlueLUTData); 
      return uRet; 
   } 
 
   // Set the new "Palette Color Lookup Table" attributes 
   uRet = L_DicomSetPaletteColorLUTAttributes(hDicomDS,&PaletteColorLUTAttributes, 0); 
   if(uRet != DICOM_SUCCESS) 
   { 
      free(pRedLUTData); 
      free(pGreenLUTData); 
      free(pBlueLUTData); 
      return uRet; 
   } 
 
   // Set Red Palette Color Lookup Table Data 
   uRet = L_DicomSetPaletteColorLUTData(hDicomDS,pRedLUTData,0x10000,DICOMPALETTECOLORLUTTYPE_RED,0); 
   if(uRet != DICOM_SUCCESS) 
   { 
      free(pRedLUTData); 
      free(pGreenLUTData); 
      free(pBlueLUTData); 
      return uRet; 
   } 
 
   // Set Green Palette Color Lookup Table Data 
   uRet = L_DicomSetPaletteColorLUTData(hDicomDS,pGreenLUTData,0x10000,DICOMPALETTECOLORLUTTYPE_GREEN,0); 
   if(uRet != DICOM_SUCCESS) 
   { 
      free(pRedLUTData); 
      free(pGreenLUTData); 
      free(pBlueLUTData); 
      return uRet; 
   } 
 
   // Set Blue Palette Color Lookup Table Data 
   uRet = L_DicomSetPaletteColorLUTData(hDicomDS,pBlueLUTData,0x10000,DICOMPALETTECOLORLUTTYPE_BLUE,0); 
 
   free(pRedLUTData); 
   free(pGreenLUTData); 
   free(pBlueLUTData); 
   return uRet; 
} 

Help Version 20.0.2019.9.20
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2019 LEAD Technologies, Inc. All Rights Reserved.

LEADTOOLS DICOM C API Help