Files
Arquivotheca.SunOS-4.1.4/usr.lib/libpixrect/pr/pr_reverse.c
seta75D ff309bfe1c Init
2021-10-11 18:37:13 -03:00

78 lines
1.9 KiB
C

#ifndef lint
static char sccsid[] = "@(#)pr_reverse.c 1.1 94/10/31 SMI";
#endif
/*
* Copyright 1983, 1987 by Sun Microsystems, Inc.
*/
/*
* Two operations on operations, reversesrc and reversedst, are provided
* for adjusting the operation code to take into account video reversing
* of either the source or the destination. These are implemented by
* table lookup. This process can be iterated, as in
* pr_reversedst[pr_reversesrc[op]].
*
* Note that the "op" that these tables reverses is shifted down one bit
* from the "op" described in the header file. In other words, it's not
* what you expect, so look again.
*
* The PIX_OP_REVERSE{SRC,DST} macros in pr_impl_util.h should generally
* be used instead of these tables.
*/
#include <sys/types.h>
#include <pixrect/pixrect.h>
char pr_reversedst[16] = { /* NB: reverses both input and output */
15, 13, 14, 12,
7, 5, 6, 4,
11, 9, 10, 8,
3, 1, 2, 0
};
char pr_reversesrc[16] = { /* transpose of the 4x4 identity */
0, 4, 8, 12,
1, 5, 9, 13,
2, 6, 10, 14,
3, 7, 11, 15
};
/*
* Reverse video colormap utilities.
*/
static u_char black = 0, white = 255;
pr_blackonwhite(pr, min, max)
Pixrect *pr;
int min, max;
{
(void) pr_putcolormap(pr, max, 1, &black, &black, &black);
(void) pr_putcolormap(pr, min, 1, &white, &white, &white);
return 0;
}
pr_whiteonblack(pr, min, max)
Pixrect *pr;
int min, max;
{
(void) pr_putcolormap(pr, max, 1, &white, &white, &white);
(void) pr_putcolormap(pr, min, 1, &black, &black, &black);
return 0;
}
pr_reversevideo(pr, min, max)
Pixrect *pr;
int min, max;
{
u_char rgb[2][3];
(void) pr_getcolormap(pr, min, 1, &rgb[0][0], &rgb[0][1], &rgb[0][2]);
(void) pr_getcolormap(pr, max, 1, &rgb[1][0], &rgb[1][1], &rgb[1][2]);
(void) pr_putcolormap(pr, max, 1, &rgb[0][0], &rgb[0][1], &rgb[0][2]);
(void) pr_putcolormap(pr, min, 1, &rgb[1][0], &rgb[1][1], &rgb[1][2]);
return 0;
}