#include "ltwrappr.h"
virtual L_INT LBitmapBase::StartDithering(pPalette, uColors)
LPRGBQUAD pPalette; |
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.)
Parameter |
Description |
pPalette |
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. |
uColors |
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. |
SUCCESS |
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
LTDIS 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.
Functions: |
LBitmapBase::DitherLine, LBitmapBase::StopDithering, Class Members |
Topics: |
|
|
This example dithers each line in one bitmap and writes it to another bitmap
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 */
LeadBitmap.Create(TmpBitmap.GetWidth(),TmpBitmap.GetHeight(),
8, /* 8 bits per pixel */
0, /* Color order is not used */
NULL, /* Use the fixed palette */
TmpBitmap.GetViewPerspective());
/* 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 Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document