L_HalfToneBitmap

#include "l_bitmap.h"

L_LTIMGCOR_API L_INT L_HalfToneBitmap(pBitmap, uType, nAngle, uDim, hList, uFlags)

pBITMAPHANDLE pBitmap;

/* Pointer to the bitmap handle */

L_UINT uType;

/* Type of halftoning to do */

L_INT32 nAngle;

/* Angle of rotation */

L_UINT uDim;

/* Size of the grain */

HBITMAPLIST hList;

/* Handle to the list of bitmaps */

L_UINT32 uFlags;

/* flags*/

Converts a 1-, 4-, 8-, 16-, 24-, or 32-bit bitmap to a halftoned bitmap, with a specified pattern rotation. A halftoned bitmap is a 1-bit bitmap that has been dithered for black and white printing or display.

Parameter

Description

pBitmap

Pointer to the bitmap handle referencing the bitmap to be converted.

uType

Value that indicates the type of halftoning to perform. Possible values are:

 

Value

Meaning

 

HT_PRINT

[0x0000] Halftone for printing

 

HT_VIEW

[0x0001] Halftone for display

 

HT_RECT

[0x0002] Rectangular halftone

 

HT_CIRC

[0x0003] Circular halftone

 

HT_ELLIPS

[0x0004] Elliptical halftone

 

HT_RAND

[0x0005] Random halftone

 

HT_LINEAR

[0x0006] Linear halftone

 

HT_USERDEF

[0x0007] User defined halftone

nAngle

The angle of rotation, expressed in hundredths of degrees. A value of 0 produces a horizontal halftone pattern. This parameter specifies the number of degrees to change the pattern. Positive values rotate the pattern clockwise; negative values rotate the pattern counterclockwise. This value is ignored if the selected halftone pattern is HT_RECT, HT_CIRC or HT_RAND or HT_USERDEF.

uDim

Value that indicates the size of the grain. This value is ignored if the selected halftone pattern is HT_VIEW or HT_PRINT. If the pattern is not HT_VIEW or HT_PRINT, uDim should be >= 1. If this parameter is < 1 this function will return ERROR_INV_PARAMETER (-13).

hList

Handle to the list of bitmaps that will be used in half toning if the HT_USERDEF option is selected.

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 does not support signed data images. It returns the error code ERROR_SIGNED_DATA_NOT_SUPPORTED if a signed data image is passed to this function.

For the HT_USERDEF option, the number of bitmaps in the list must be at least equal to (uDim * uDim + 1). Bitmaps with higher indexes correspond to higher intensity values.

This function can process the whole image or a region of the image.

This function does not support 12 and 16-bit grayscale and 48 and 64-bit color images.

To update a status bar or detect a user interrupt during execution of this function, refer to L_SetStatusCallback.

This function supports 32-bit grayscale images.

Required DLLs and Libraries

LTIMGCOR

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

Platforms

Windows 2000 / XP/Vista.

See Also

Functions:

L_DefaultDithering, L_GrayScaleBitmap, L_GrayScaleBitmapExt, L_DlgHalftone, L_AutoColorLevelBitmap, L_ColorLevelBitmap, L_CorrelationBitmap, L_GrayScaleToDuotone, L_GrayScaleToMultitone, L_HolesRemovalBitmapRgn, L_SelectiveColorBitmap, L_SkeletonBitmap

Topics:

Raster Image Functions: Doing Color Expansion or Reduction

 

Color Halftone and Halftone Images

Example

#if defined (LEADTOOLS_V16_OR_LATER)
 L_INT HalfToneBitmapExample(L_VOID)
{
   L_INT nRet;
   BITMAPHANDLE LeadBitmap;   /* Bitmap handle for the image */
   BITMAPHANDLE TmpBitmap;    /* Temporary bitmap for building the list */
   HBITMAPLIST      hList;
   L_INT i;

   /* Load a bitmap at its own bits per pixel */
   nRet = L_LoadBitmap (TEXT("%UserProfile%\\My Documents\\LEADTOOLS Images\\image3.cmp"), &LeadBitmap, sizeof(BITMAPHANDLE), 0, ORDER_BGR, NULL, NULL);
   if(nRet !=SUCCESS)
      return nRet;
   nRet = L_CreateBitmapList(&hList);
   if(nRet !=SUCCESS)
      return nRet;
   for (i = 0; i <= 36; ++ i)
   {
      nRet = L_CopyBitmap(&TmpBitmap, &LeadBitmap, sizeof(BITMAPHANDLE));
      if(nRet !=SUCCESS)
         return nRet;
      /* Rotate, using the transparent color as the fill color */
      nRet = L_RotateBitmap (&TmpBitmap, 1000 * i, 0, RGB(0,0,0));
      if(nRet !=SUCCESS)
         return nRet;
      nRet = L_InsertBitmapListItem(hList, (L_UINT)-1, &TmpBitmap);
      if(nRet !=SUCCESS)
         return nRet;
   }
   /* fill hList by at least 26 bitmaps*/
   /* Halftone the bitmap */
   nRet = L_HalfToneBitmap(&LeadBitmap, HT_USERDEF,0, 5, hList, 0);
   if(nRet !=SUCCESS)
      return nRet;
   nRet = L_DestroyBitmapList(hList);
   if(nRet !=SUCCESS)
      return nRet;
   nRet = L_SaveBitmap(TEXT("%UserProfile%\\My Documents\\LEADTOOLS Images\\Result.BMP"), &LeadBitmap, FILE_BMP, 24, 0, NULL);
   if(nRet !=SUCCESS)
      return nRet;
   //free bitmap 
   if(LeadBitmap.Flags.Allocated)  
      L_FreeBitmap(&LeadBitmap);  
  
   return SUCCESS;
}
#else
 L_INT HalfToneBitmapExample(L_VOID)
{
   L_INT nRet;
   BITMAPHANDLE LeadBitmap;   /* Bitmap handle for the image */
   BITMAPHANDLE TmpBitmap;    /* Temporary bitmap for building the list */
   HBITMAPLIST      hList;
   L_INT i;

   /* Load a bitmap at its own bits per pixel */
   nRet = L_LoadBitmap (TEXT("%UserProfile%\\My Documents\\LEADTOOLS Images\\image3.cmp"), &LeadBitmap, sizeof(BITMAPHANDLE), 0, ORDER_BGR, NULL, NULL);
   if(nRet !=SUCCESS)
      return nRet;
   nRet = L_CreateBitmapList(&hList);
   if(nRet !=SUCCESS)
      return nRet;
   for (i = 0; i <= 36; ++ i)
   {
      nRet = L_CopyBitmap(&TmpBitmap, &LeadBitmap, sizeof(BITMAPHANDLE));
      if(nRet !=SUCCESS)
         return nRet;
      /* Rotate, using the transparent color as the fill color */
      nRet = L_RotateBitmap (&TmpBitmap, 1000 * i, 0, RGB(0,0,0));
      if(nRet !=SUCCESS)
         return nRet;
      nRet = L_InsertBitmapListItem(hList, (L_UINT)-1, &TmpBitmap);
      if(nRet !=SUCCESS)
         return nRet;
   }
   /* fill hList by at least 26 bitmaps*/
   /* Halftone the bitmap */
   nRet = L_HalfToneBitmap(&LeadBitmap, HT_USERDEF,0, 5, hList);
   if(nRet !=SUCCESS)
      return nRet;
   nRet = L_DestroyBitmapList(hList);
   if(nRet !=SUCCESS)
      return nRet;
   nRet = L_SaveBitmap(TEXT("%UserProfile%\\My Documents\\LEADTOOLS Images\\Result.BMP"), &LeadBitmap, FILE_BMP, 24, 0, NULL);
   if(nRet !=SUCCESS)
      return nRet;
   //free bitmap 
   if(LeadBitmap.Flags.Allocated)  
      L_FreeBitmap(&LeadBitmap);  
  
   return SUCCESS;
}
#endif // LEADTOOLS_V16_OR_LATER