| 
   Available in LEADTOOLS Imaging Pro, Vector, Document, and Medical Imaging toolkits.  | 
#include "ltwrappr.h"
virtual L_INT LBitmap::ColorThreshold (uColorSpace, pCompData, uFlags = 0)
| 
 L_UINT uColorSpace;  | 
 /* color space */  | 
| 
 pCOMPDATA pCompData;  | 
 /* pointer to an array of structures */  | 
| 
 L_UINT32 uFlags;  | 
 /* flags */  | 
Using any one of eight color spaces, resets those bitmaps pixel component values that fall inside or outside of a specified range.
| 
 Parameter  | 
 Description  | 
|
| 
 uColorSpace  | 
 Color space which the threshold is based on. Possible values are:  | 
|
| 
 
  | 
 Value  | 
 Meaning  | 
| 
 
  | 
 CLTH_RGB_SPACE  | 
 [0x00000000] RGB color space  | 
| 
 
  | 
 CLTH_HSV_SPACE  | 
 [0x00000001] HSV color space  | 
| 
 
  | 
 CLTH_HLS_SPACE  | 
 [0x00000002] HLS color space  | 
| 
 
  | 
 CLTH_XYZ_SPACE  | 
 [0x00000003] XYZ color space  | 
| 
 
  | 
 CLTH_YCrCb_SPACE  | 
 [0x00000004] YCrCb color space  | 
| 
 
  | 
 CLTH_YUV_SPACE  | 
 [0x00000005] YUV color space  | 
| 
 
  | 
 CLTH_LAB_SPACE  | 
 [0x00000006] LAB color space  | 
| 
 
  | 
 CLTH_CMY_SPACE  | 
 [0x00000007] CMY color space  | 
| 
 pCompData  | 
 Pointer to an array of 3 COMPDATA structures that contains the parameters used to compare and modify each component.  | 
|
| 
 uFlags  | 
 Reserved for future use. Must be 0.  | 
|
Returns
| 
 SUCCESS  | 
 The function was successful.  | 
| 
 < 1  | 
 An error occurred. Refer to Return Codes.  | 
Comments
This function is similar to the LBuffer::ConvertColorSpace function but provides greater flexibility by allowing the specification of a range and different options for handling those values that fall outside of the range. Please note that every color space component may have a different range.
| 
 Color Component  | 
 Range for 8-bit components  | 
 Range for 16-bit components  | 
| 
 RGB  | 
 
  | 
 
  | 
| 
 R  | 
 0 255  | 
 0 - 65535  | 
| 
 G  | 
 0 255  | 
 0 - 65535  | 
| 
 B  | 
 0 255  | 
 0 - 65535  | 
| 
 HSV  | 
 
  | 
 
  | 
| 
 H  | 
 0 - 360  | 
 0 - 36000  | 
| 
 S  | 
 0 - 100  | 
 0 - 10000  | 
| 
 V  | 
 0 - 255  | 
 0 - 65535  | 
| 
 HLS  | 
 
  | 
 
  | 
| 
 H  | 
 0 - 360  | 
 0 - 36000  | 
| 
 L  | 
 0 - 255  | 
 0 - 65535  | 
| 
 S  | 
 0 - 100  | 
 0 - 10000  | 
| 
 XYZ  | 
 
  | 
 
  | 
| 
 X  | 
 0 - 255  | 
 0 - 65535  | 
| 
 Y  | 
 0 - 255  | 
 0 - 65535  | 
| 
 Z  | 
 0 - 255  | 
 0 - 65535  | 
| 
 YCrCb  | 
 
  | 
 
  | 
| 
 Y  | 
 0 - 255  | 
 0 - 65535  | 
| 
 Cr  | 
 -128 - 127  | 
 -32768 - 32767  | 
| 
 Cb  | 
 -128 - 127  | 
 -32768 - 32767  | 
| 
 YUV  | 
 
  | 
 
  | 
| 
 Y  | 
 0 - 255  | 
 0 - 65535  | 
| 
 U  | 
 -112 - 111  | 
 -28567 - 28566  | 
| 
 V  | 
 -138 - 137  | 
 -35337 - 35336  | 
| 
 LAB  | 
 
  | 
 
  | 
| 
 L  | 
 0 - 100  | 
 0 - 10000  | 
| 
 A  | 
 -128 - 127  | 
 -32768 - 32767  | 
| 
 B  | 
 -128 - 127  | 
 -32768 - 32767  | 
| 
 CMY  | 
 
  | 
 
  | 
| 
 C  | 
 0 - 255  | 
 0 - 65535  | 
| 
 M  | 
 0 - 255  | 
 0 - 65535  | 
| 
 Y  | 
 0 - 255  | 
 0 - 65535  | 
This function works as follows:
| 
 1.  | 
 The bitmap is converted to the required color space.  | 
|
| 
 2.  | 
 For every pixel, the following operations are performed: Each component is compared with the nMinRange and nMaxRange ranges of the appropriate COMPDATA structure.  | 
|
| 
 
  | 
 a.  | 
 If it is inside the range, the component is considered to have "passed" the test.  | 
| 
 
  | 
 b.  | 
 .If it is outside the range, the component has been rejected". The CLTH_TYP_BANDREJECT flag inverts this by making "rejected" components "passed" and viceversa.  | 
| 
 3.  | 
 If CLTH_MOD_CHANNEL is set, the components are modified independently. If CLTH_MOD_ALL has been passed, the pixel is rejected by the test if any component is rejected. If the pixel/component is rejected, then:  | 
|
| 
 
  | 
 a.  | 
 If CLTH_VALUE_MIN is passed, the rejected pixel/component is set to 0.  | 
| 
 
  | 
 b.  | 
 If CLTH_VALUE_MAX is passed, the rejected pixel/component is set to 255.  | 
| 
 
  | 
 c.  | 
 If CLTH_VALUE_CLAMP is passed, components less that nMin go to 0 and components greater than nMax go to 255. This would work only with the CLTH_MOD_CHANNEL and CLTH_TYP_BANDPASS flag.  | 
This function works for 1, 2, 3, 8,16, 24, 32, 48 and 64-bit color bitmaps and can support regions for 24 and 48-bit bitmaps. If a 24 or 48-bit bitmap has a region the effect will be applied on the region only.
One structure is used for each color component. The order is considered to be the same as in the CLTH_xxx_SPACE name. For example, for CLTH_RGB_SPACE:
pCompData[0] structure is used for the Blue component
pCompData[1] structure is used for the Green component
pCompData[2] structure is used for the Red component
The pCompData[0].uStructSize must be set to sizeof(COMPDATA) before calling this function. For an array of structures, only the first structure in the array needs to have uStructSize member set.
To update a status bar or detect a user interrupt during execution of this function, refer to LBase::EnableStatusCallback.
This function does not support 32-bit grayscale images. It returns the error code ERROR_GRAY32_UNSUPPORTED if a 32-bit grayscale image is passed to this function.
Required DLLs and Libraries
| 
 LTIMGCLR For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application.  | 
Win32, x64.
See Also
Example
L_INT LBitmap__ColorThresholdExample(LBitmap *pLeadBitmap) 
{
   COMPDATA          pCompData[3]; 
   L_INT                     nI; 
   pCompData[0].uStructSize = sizeof(COMPDATA); 
   for (nI = 0; nI < 3; nI++)
   {
       pCompData[nI].nMinRange = 128; 
       pCompData[nI].nMaxRange = 255; 
       pCompData[nI].uFlags = 0; 
   }
   /* Apply color Threshold effect on the image*/
   return pLeadBitmap->ColorThreshold(CLTH_RGB_SPACE,  pCompData); 
}