palette.c

来自「linux 下svgalib编的一个界面程序示例」· C语言 代码 · 共 72 行

C
72
字号
/* 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);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?