HomeHomeHomeHomeHome
 
Home
News
Downloads
Documentation
Looks and Themes
Icons, Clipart, etc.
Mailing List and Contacts
 
title_image
 Preface  Introduction  API Topic index  API Glossary  F.A.Q.  Copyright

Indexed Image handlingdefines main structures and function for image quantization



    libAfterImage/ascmap.h
  • NAME
    ascmap

    - Defines main structures and function for image quantization.

  • DESCRIPTION
    Image quantization is needed primarily in order to be able to  export 
    images into file, with  colormap  format, such as GIF and XPM.
     libAfterImage  attempts to allocate colorcells to the most used colors,
    and then approximate remaining colors with the closest colorcell.
    
    Since quality of quantization is in reverse proportion to the number
    of colors in original image,  libAfterImage  allows to  set  arbitrary
    level of downsampling of the  color  spectrum in the range of 8 bit per
    channel to 1 bit per channel. Downsampling is performed by simple
    dropping of less significant bits off of  color  values.
    
    In order to be able to determine closeness of colors, 3-channel RGB
    values are converted into flat 24bit (or less  if  downsampling is used)
    index. That is done by intermixing bits from different channels, like
    so : R8G8B8R7G7B7...R1G1B1. That flat index is used to arrange colors
    in ascending order, and later on to be able to find closest mapped
     color . Simple hashing technique is used to speed up the
    sorting/searching, as it allows to limit linked lists traversals.
    
    
  • SEE ALSO
    Structures :
              ASColormapEntry 
              ASColormap 
    
    Functions :
             colormap_asimage(), destroy_colormap()
    
    Other  libAfterImage  modules :
              ascmap .h  asfont .h  asimage .h  asvisual .h  blender .h  export .h
              import .h  transform .h  ximage .h
    
  • AUTHOR
    Sasha Vasko <sasha at aftercode dot net>
    
    libAfterImage/colormap_asimage()
  • NAME
    colormap_asimage()

  • SYNOPSIS
    int *colormap_asimage(  ASImage  *im,  ASColormap  *cmap,
                           unsigned int max_colors, unsigned int dither,
                           int opaque_threshold );
    
  • INPUTS
    im
    - pointer to valid  ASImage structure.
    cmap
    - preallocated structure to  store  colormap in.
    max_colors
    - maximum size of the  colormap .
    dither
    - number of bits to strip off the  color data ( 0...7 )
    opaque_threshold
    - alpha channel threshold at which pixel should be treated as opaque
  • RETURN VALUE
    pointer to the array of indexes representing pixel's colorcells. This
    array has size of WIDTHxHEIGHT where WIDTH and HEIGHT are size of the
    source image.
    
  • DESCRIPTION
    This function is all that is needed to quantize the  ASImage . In order
    to obtain colorcell of the pixel at (x,y) from result, the following
    code could be used :
    cmap->entries[res[y*width+x]]
    where res is returned pointer.
    Recommended  value  for dither parameter is 4 while quantizing photos to
    256 colors, and it could be less ,  if  original has limited number of
    colors.
    
    
    libAfterImage/destroy_colormap()
  • NAME
    destroy_colormap()

  • SYNOPSIS
    void destroy_colormap(  ASColormap  *cmap, Bool reusable );
    
  • INPUTS
    cmap
    - pointer to valid  ASColormap structure.
    reusable
    -  if True, then the memory pointed to by cmap will not be deallocated, as  if it was allocated on stack
  • DESCRIPTION
    Destroys  ASColormap  object created using colormap_asimage.
    


AfterStep Documentation   -   October 2005     ( 80% complete )

lowbarimage