File: palette.c

package info (click to toggle)
svgalib 1%3A1.4.3-24
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 4,768 kB
  • ctags: 9,153
  • sloc: ansic: 59,341; makefile: 1,141; asm: 630; sh: 61; perl: 54; pascal: 49
file content (71 lines) | stat: -rw-r--r-- 1,430 bytes parent folder | download | duplicates (14)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/* Framebuffer Graphics Libary for Linux, Copyright 1993 Harm Hanemaayer */
/* palette.c    Palette functions (wrapper over vgalib) */


#include <stdlib.h>
#include <vga.h>

#include "vgagl.h"
#include "def.h"


/* 256-color palette functions */

/* There was a horrible bug here in 0.8x -- green and blue were swapped... */
void gl_getpalettecolor(int c, int *r, int *g, int *b)
{
    vga_getpalette(c, r, g, b);
}

void gl_setpalettecolor(int c, int r, int g, int b)
{
    vga_setpalette(c, r, g, b);
}

void gl_setpalettecolors(int s, int n, void *_dp)
{
    uchar *dp = _dp;
    int i;
    for (i = s; i < s + n; i++) {
	unsigned char r, g, b;
	r = *(dp++);
	g = *(dp++);
	b = *(dp++);
	vga_setpalette(i, r, g, b);
    }
}

void gl_getpalettecolors(int s, int n, void *_dp)
{
    uchar *dp = _dp;
    int i;
    for (i = s; i < s + n; i++) {
	int r, g, b;
	vga_getpalette(i, &r, &g, &b);
	*(dp++) = (unsigned char) r;
	*(dp++) = (unsigned char) g;
	*(dp++) = (unsigned char) b;
    }
}

void gl_getpalette(void *p)
{
    gl_getpalettecolors(0, 256, p);
}

void gl_setpalette(void *p)
{
    gl_setpalettecolors(0, 256, p);
}

void gl_setrgbpalette()
{
    int i;
    Palette pal;
    for (i = 0; i < 256; i++) {
	pal.color[i].blue = (i & 7) * (64 / 8);		/* 3 bits */
	pal.color[i].green = ((i & 56) >> 3) * (64 / 8);	/* 3 bits */
	pal.color[i].red = ((i & 192) >> 6) * (64 / 4);		/* 2 bits */
    }
    gl_setpalette(&pal);
}