#include "ltwrappr.h"

virtual L_INT LBitmapBase::StartDithering(pPalette, uColors)


pointer to the palette

L_UINT uColors;

number of colors used in the palette

Initializes the buffered dithering of a class object's bitmap. The dithering is then carried out by the LBitmapBase::DitherLine function and a callback function that you supply. It is ended by the LBitmapBase::StopDithering function. (Dithering is the process of using error diffusion to reduce the number of colors in an image.)




Pointer to the palette that the LBitmapBase::DitherLine function will use for dithering. You can specify your own palette, or use NULL for LEAD's fixed palette.


Number of colors used in the palette. If the palette contains more colors, only the first uColors colors are used. Valid values are 2 to 255.



The function was successful.

< 1

An error occurred. Refer to Return Codes.


The following flow chart shows how the functions relate to each other:


Required DLLs and Libraries


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


LBitmapBase::DitherLine, LBitmapBase::StopDithering, Class Members


Raster Image Functions: Doing Color Expansion or Reduction


Raster Image Functions: Doing Color Space Conversions


This example dithers each line in one bitmap and writes it to another bitmap

#define MAKE_IMAGE_PATH(pFileName) TEXT("C:\\Users\\Public\\Documents\\LEADTOOLS Images\\")pFileName 
L_INT LBitmapBase__StartDitheringExample() 
   L_INT nRet; 
   LBitmapBase LeadBitmap, TmpBitmap;   /* to hold the loaded image */ 
   LBuffer  InBuf, OutBuf; 
   RGBQUAD FixedPalette[256]; /* Fixed palette */ 
   int i; /* Loop counter */ 
   /* Load the input bitmap, at 24 bits per pixel */ 
   TmpBitmap.Load (MAKE_IMAGE_PATH(TEXT("ImageProcessingDemo\\Image3.cmp")), 24, ORDER_BGR); 
   /* Create the new bitmap */ 
   8,           /* 8 bits per pixel */ 
   0,          /* Color order is not used */ 
   NULL,    /* Use the fixed palette */ 
   /* Allocate the input buffer for 24-bit data */ 
   nRet =InBuf.Reallocate(TmpBitmap.GetBytesPerLine()); 
   if(nRet !=SUCCESS) 
      return nRet; 
   /* Allocate the output buffer for 8-bit data */ 
   nRet =OutBuf.Reallocate(TmpBitmap.GetBytesPerLine()); 
   if(nRet !=SUCCESS) 
      return nRet; 
   /* Get the LEAD fixed palette for an 8-bit image */ 
   nRet =TmpBitmap.GetFixedPalette(FixedPalette, 8); 
   if(nRet !=SUCCESS) 
      return nRet; 
   /* Set the dithering method */ 
   TmpBitmap.SetDitheringMethod ( STEVENSON_ARCE_DITHERING); 
   /* Initialize the dithering process */ 
   nRet =TmpBitmap.StartDithering(FixedPalette, 256); 
   if(nRet !=SUCCESS) 
      return nRet; 
   /* Use DitherLine to process each row in the bitmap */ 
   nRet =LeadBitmap.Access(); 
   if(nRet !=SUCCESS) 
      return nRet; 
   nRet =TmpBitmap.Access(); 
   if(nRet !=SUCCESS) 
      return nRet; 
   for(i=0; i < TmpBitmap.GetHeight(); i++) 
      nRet =(L_INT)TmpBitmap.GetRow(&InBuf, i); 
      if(nRet < 1) 
         return nRet; 
      nRet =TmpBitmap.DitherLine(&InBuf, &OutBuf); 
      if(nRet !=SUCCESS) 
         return nRet; 
      nRet = (L_INT)LeadBitmap.PutRow(OutBuf, i); 
      if(nRet < 1) 
         return nRet; 
   nRet =TmpBitmap.Release(); 
   if(nRet !=SUCCESS) 
      return nRet; 
   nRet =LeadBitmap.Release(); 
   if(nRet !=SUCCESS) 
      return nRet; 
   /* End the dithering process */ 
   nRet =TmpBitmap.StopDithering(); 
   if(nRet !=SUCCESS) 
      return nRet; 
   return SUCCESS; 

Help Version 19.0.2017.10.27
Products | Support | Contact Us | Copyright Notices
© 1991-2017 LEAD Technologies, Inc. All Rights Reserved.
LEADTOOLS Raster Imaging C++ Class Library Help