home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 580a.lha / HDFView_v3.01 / source.LZH / source / src / getdefpal.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-11-17  |  1.2 KB  |  69 lines

  1. /* This code will get an hdf palette. */
  2. #include <exec/types.h>
  3. #include "viewprotos.h"
  4.  
  5. #include <hdf/dfproto.h>
  6.  
  7. extern int HAME_r[256], HAME_g[256], HAME_b[256];
  8. extern int r_32[32], g_32[32], b_32[32];
  9. extern int r_16[16], g_16[16], b_16[16];
  10.  
  11. int
  12. getDefPal(char *file)
  13. {
  14.    unsigned char palette[768];
  15.    int ret=0;
  16.    
  17.    if(file==NULL)
  18.    {
  19.       ret = DFPgetpal("default.pal",palette);
  20.       if(ret==-1) return(ret); 
  21.    }
  22.    else
  23.    {
  24.       ret = DFPgetpal(file,palette);
  25.       if(ret==-1) {
  26.          request("Can't get palette! (Convert from raw?)",NULL);
  27.          return(ret);
  28.       }
  29.    }
  30.    
  31.    setPal(palette);
  32.          
  33.    return(1);
  34.  
  35. }
  36.  
  37.  
  38. VOID
  39. setPal(unsigned char palette[768])
  40. {
  41.    int i, reg=0;
  42.    
  43.    for(i=0;i<768;i+=3)
  44.    {
  45.       HAME_r[reg] = (int)palette[i];
  46.       HAME_g[reg] = (int)palette[i+1];
  47.       HAME_b[reg] = (int)palette[i+2];
  48.       reg++;
  49.    }   
  50.    reg=0;   
  51.    for(i=0;i<768;i+=24)
  52.    {
  53.       r_32[reg] = ((int)palette[i]) / 16;
  54.       g_32[reg] = ((int)palette[i+1]) / 16;
  55.       b_32[reg] = ((int)palette[i+2]) / 16;
  56.       reg++;
  57.    }
  58.    reg=0;
  59.    for(i=0;i<768;i+=48)
  60.    {
  61.       r_16[reg] = ((int)palette[i]) / 16;
  62.       g_16[reg] = ((int)palette[i+1]) / 16;
  63.       b_16[reg] = ((int)palette[i+2]) / 16;
  64.       reg++;
  65.    }
  66.    
  67.    
  68. }
  69.