Products | Support | Send comments on this topic. | Email a link to this topic. | Back to Getting Started | Help Version 18.0.10.24
LEADTOOLS Raster imaging C++ Class library help

LAnimationWindow::ColorResItems

Show in webframe

#include "ltwrappr.h"

L_INT LAnimationWindow::ColorResItems(nBitsPerPixel, uFlags, pPalette=NULL, hPalette=NULL, uColors=0)

L_INT nBitsPerPixel;

/* the new number of bits per pixel */

L_UINT32 uFlags;

/* flag that indicates processing options */

LPRGBQUAD pPalette;

/* custom palette to use */

HPALETTE hPalette;

/* custom palette handle to use */

L_UINT uColors;

/* number of colors in the palette */

Converts all bitmaps in the bitmap list from any bits-per-pixel to any bits-per-pixel.

Parameter

Description

nBitsPerPixel

The number of bits per pixel to increase or decrease the bitmaps to. Valid values are 1, 2, 3, 4, 5, 6, 7, 8, 16, 24, and 32

uFlags

Flag that indcates the processing options. Note that the palette and dithering options are useful only when the resulting bitmaps require a palette (when they are 8 bits per pixel or less). You can combine values when appropriate by using a bitwise OR ( | ). Possible values are:

Value

Meaning

CRF_FIXEDPALETTE

[0x01] Use LEAD's fixed palette.

CRF_OPTIMIZEDPALETTE

[0x02] Create an optimized palette.

CRF_NETSCAPEPALETTE

[0x40] Use the fixed palette that is employed by Netscape Navigator and Microsoft Internet Explorer.

CRF_USERPALETTE

[0x10] Use the palette specified in the pPalette parameter.

CRF_IDENTITYPALETTE

[0x08] Insert the Windows system palette. You can combine this flag with CRF_OPTIMIZEDPALETTE.

CRF_FASTMATCHPALETTE

[0x20] Use a predefined table to speed conversion using your own palette.

 

Refer to LBitmapSettings::CreateUserMatchTable.

CRF_BYTEORDERBGR

[0x04] Use BGR color order. This flag only has meaning when going to 16 bits per pixel or higher.

CRF_BYTEORDERRGB

[0x00] Use RGB color. This flag only has meaning when going to 16 bits per pixel or higher.

CRF_NODITHERING

[0x00000000] Use nearest color matching.

CRF_FLOYDSTEINDITHERING

[0x00010000] Use Floyd-Steinberg dithering.

CRF_STUCKIDITHERING

[0x00020000] Use Stucki dithering.

CRF_BURKESDITHERING

[0x00030000] Use Burkes dithering.

CRF_SIERRADITHERING

[0x00040000] Use Sierra dithering.

CRF_STEVENSONARCEDITHERING

[0x00050000] Use Stevenson Arce dithering.

CRF_JARVISDITHERING

[0x00060000] Use Jarvis dithering.

CRF_ORDEREDDITHERING

[0x00070000] Use ordered dithering, which is faster but less accurate than other dithering methods.

CRF_CLUSTEREDDITHERING

[0x00080000] Use clustered dithering.

 

pPalette

The custom palette to use. Specify this parameter as follows:

 

  • If you want to use the fixed palette or a fully optimized palette, pass NULL in this parameter and in hPalette.

 

  • If you want to supply the entire palette, specify CRF_USERPALETTE in the uFlags parameter and pass the address of your palette.

 

  • If you want the function to fill part of your palette with optimized colors, specify CRF_OPTIMIZEDPALETTE in the uFlags parameter and pass the address of your palettein pPalette and NULL in hPalette.

hPalette

The custom palette to use. Specify this parameter as follows:

 

  • If you want to use the fixed palette or a fully optimized palette, pass NULL in this parameter and in pPalette.

 

  • If you want to supply the entire palette, specify CRF_USERHPALETTE in the uFlags parameter and pass the handle of your palette.

 

  • If you want the function to fill part of your palette with optimized colors, specify CRF_OPTIMIZEDPALETTE in the uFlags parameter and pass NULL for pPalette and the handle of your palette in hPalette.

uColors

The number of colors in the palette. Pass 0 to get the default (such as 256 for 8 bits per pixel). Otherwise, do one of the following:

 

  • If you specify a palette in the pPalette or hPalette parameter, pass the number of entries in your palette (including reserved entries).

 

  • If you specify NULL in the pPalette and in the hPalette parameters and you specify CRF_OPTIMIZEDPALETTE in the uFlags parameter, you can use this parameter to limit the number of colors that the function maps in the optimized palette.

Returns

SUCCESS

The function was successful.

< 1

An error occurred. Refer to Return Codes.

Comments

You can use this function to create an optimized palette for all bitmaps in the list.

NOTE: Using this function to change the color order of a 24-bit or 32-bit image (i.e. RGB to BGR) will have no effect on the image when painting or saving (to a file).  If you want to change the visual appearance, you can simply swap the Order member of the BITMAPHANDLE.

Required DLLs and Libraries

LTDIS
LTDLG
LTEFX
LTFIL
LTIMG
LTSCR
LTTWN

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

Win32, x64.

See Also

Functions:

LAnimationWindow::LAnimationWindow, LAnimationWindow::DoModalColorResItems, LAnimationWindow::Load, LAnimationWindow::PlayAnimation, Class Members

Topics:

Raster Image Functions: Doing Color Expansion or Reduction

 

Raster Image Functions: Doing Color Space Conversions

 

Raster Image Functions: Palettes

 

Color Resolution and Dithering

Example

#define MAKE_IMAGE_PATH(pFileName) TEXT("C:\\Users\\Public\\Documents\\LEADTOOLS Images\\")pFileName
L_INT LAnnAutomation_LAnnAutomation_LAnimationWindow_ColorResItemsExample(HWND hWndParent)
{
   L_INT nRet;
   LBase::LoadLibraries(LT_ALL_LEADLIB); 
 //make sure all libraries are loaded
   LAnimationWindow MyAnimation;
   MyAnimation.SetFileName(MAKE_IMAGE_PATH(TEXT("eye.gif")));
   nRet = MyAnimation.Load();
   
   if (nRet==SUCCESS)
   {
      /* Get an optimized palette for the whole list */
      nRet = MyAnimation.ColorResItems(8, CRF_NODITHERING|CRF_OPTIMIZEDPALETTE);
      if(nRet != SUCCESS)
         return nRet;
      MyAnimation.CreateWnd(hWndParent,0, WS_VISIBLE|WS_CHILD|WS_BORDER,0,0,300,300);
      nRet = MyAnimation.PlayAnimation(); 
      if(nRet != SUCCESS)
         return nRet;
 
      while (MyAnimation.IsPlaying())
      {
         if (MyAnimation.DoEvents())
            break; 
 
      }
   } 
   else 
      return nRet;
   return SUCCESS;
}
Products | Support | Contact Us | Copyright Notices
© 2006-2014 All Rights Reserved. LEAD Technologies, Inc.