home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / graphics / gif2rpc_1 / source / c / calcpixtrans < prev    next >
Text File  |  1995-10-07  |  1KB  |  49 lines

  1. /* calcpixtrans.c
  2.  * AUTHOR:      Cy Booker, cy@cheepnis.demon.co.uk
  3.  * LICENSE:     FreeWare, Copyright (c) 1995 Cy Booker
  4.  * PURPOSE:     generic pixel translation routine
  5.  */
  6.  
  7. #include "gif2rpc:process_gif.h"
  8.  
  9. #include <assert.h>
  10.  
  11. #include "OS:macros.h"
  12.  
  13.  
  14.  
  15. /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  16.  */
  17.  
  18. extern void process_gif_calc_pixtrans(
  19.                 const process_gif       *p,
  20.                 bits                    *pixtrans) {
  21.   int                   red, grn, blu;
  22.   os_colour             colour;
  23.   int                   i;
  24.   rgbtupleout           err;
  25.   rgbtupleout_fn        fn;
  26.   const os_colour       *palette;
  27.  
  28.   assert(p);
  29.   assert(pixtrans);
  30.   assert(p->fn);
  31.   assert(p->in_palette.colours);
  32.   assert(p->in_palette.ncolours > 0);
  33.  
  34.   err.palette = p->out_palette;                 /* structure copy */
  35.  
  36.   palette = p->in_palette.colours;
  37.   fn = p->fn;
  38.   for (i= p->in_palette.ncolours - 1; (i >= 0); i--) {
  39.     colour = palette[i];
  40.     red = (colour >> (1*8)) & 0xff; red |= red << 8;
  41.     grn = (colour >> (2*8)) & 0xff; grn |= grn << 8;
  42.     blu = (colour >> (3*8)) & 0xff; blu |= blu << 8;
  43.     pixtrans[i] = (*fn)(&err, red, grn, blu);
  44.   }
  45. }
  46.  
  47.  
  48.  
  49.