home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / D / SVGALIB / SVGALIB1.TAR / svgalib / gl / palette.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-08-05  |  1.4 KB  |  65 lines

  1. /* Framebuffer Graphics Libary for Linux, Copyright 1993 Harm Hanemaayer */
  2. /* palette.c    Palette functions (wrapper over vgalib) */
  3.  
  4.  
  5. #include <stdlib.h>
  6. #include <vga.h>
  7.  
  8. #include "vgagl.h"
  9. #include "def.h"
  10.  
  11.  
  12. /* 256-color palette functions */
  13.  
  14. /* There was a horrible bug here in 0.8x -- green and blue were swapped... */
  15. void gl_getpalettecolor( int c, int *r, int *g, int *b ) {
  16.     vga_getpalette(c, r, g, b);
  17. }
  18.  
  19. void gl_setpalettecolor( int c, int r, int g, int b ) {
  20.     vga_setpalette(c, r, g, b);
  21. }
  22.  
  23. void gl_setpalettecolors( int s, int n, void *_dp ) {
  24.     uchar *dp = _dp;
  25.     int i;
  26.     for (i = s; i < s + n; i++) {
  27.         unsigned char r, g, b;
  28.         r = *(dp++);
  29.         g = *(dp++);
  30.         b = *(dp++);
  31.         vga_setpalette(i, r, g, b);
  32.     } 
  33. }
  34.  
  35. void gl_getpalettecolors( int s, int n, void *_dp ) {
  36.     uchar *dp = _dp;
  37.     int i;
  38.     for (i = s; i < s + n; i++) {
  39.         int r, g, b;
  40.         vga_getpalette(i, &r, &g, &b);
  41.         *(dp++) = (unsigned char)r;
  42.         *(dp++) = (unsigned char)g;
  43.         *(dp++) = (unsigned char)b;
  44.     }
  45. }
  46.  
  47. void gl_getpalette( void *p ) {
  48.     gl_getpalettecolors(0, 256, p);
  49. }
  50.  
  51. void gl_setpalette( void *p ) {
  52.     gl_setpalettecolors(0, 256, p);
  53. }
  54.  
  55. void gl_setrgbpalette() {
  56.     int i;
  57.     Palette pal;
  58.     for (i = 0; i < 256; i++) {
  59.         pal.color[i].blue = (i & 7) * (64 / 8);         /* 3 bits */
  60.         pal.color[i].green = ((i & 56) >> 3) * (64 / 8); /* 3 bits */ 
  61.         pal.color[i].red = ((i & 192) >> 6) * (64 / 4);  /* 2 bits */
  62.     }
  63.     gl_setpalette(&pal);
  64. }
  65.