Files
jehanne/sys/src/lib/memdraw/mkcmap.c
Giacomo Tesio e70feee4a3 libc: introduce "jehanne_" namespace
With this commit all functions declared in libc.h have been renamed
with the "jehanne_" prefix. This is done for several reason:

- it removes conflicts during symbol resolution when linking
  standard C libraries like newlib or musl
- it allows programs depending on a standard C library to directly
  link to a library depending on our non standard libc (eg libsec).

To ease transiction two files are provided:

- sys/include/lib9.h that can be included instead of <libc.h> to use
  the old names (via a simple set of macros)
- sys/src/lib/c/lib9.c that can be compiled with a program where the
  macro provided by lib9.h are too dumb (see for example rc or grep).

In the kernel port/lib.h has been modified accordingly and some of
the functions it directly provides has been renamed too (eg malloc
in qmalloc.c and print in devcons.c).
2017-04-19 23:48:21 +02:00

89 lines
1.9 KiB
C

/*
* This file is part of the UCB release of Plan 9. It is subject to the license
* terms in the LICENSE file found in the top-level directory of this
* distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
* part of the UCB release of Plan 9, including this file, may be copied,
* modified, propagated, or distributed except according to the terms contained
* in the LICENSE file.
*/
#include <u.h>
#include <libc.h>
#include <draw.h>
#include <memdraw.h>
/*
struct Memcmap
{
uchar cmap2rgb[3*256];
uchar rgb2cmap[16*16*16];
};
*/
static Memcmap*
mkcmap(void)
{
static Memcmap def;
int i, rgb, r, g, b;
for(i=0; i<256; i++){
rgb = cmap2rgb(i);
r = (rgb>>16)&0xff;
g = (rgb>>8)&0xff;
b = rgb&0xff;
def.cmap2rgb[3*i] = r;
def.cmap2rgb[3*i+1] = g;
def.cmap2rgb[3*i+2] = b;
}
for(r=0; r<16; r++)
for(g=0; g<16; g++)
for(b=0; b<16; b++)
def.rgb2cmap[r*16*16+g*16+b] = rgb2cmap(r*0x11, g*0x11, b*0x11);
return &def;
}
void
main(int argc, char **argv)
{
Memcmap *c;
int i, j, inferno;
inferno = 0;
ARGBEGIN{
case 'i':
inferno = 1;
}ARGEND
memimageinit();
c = mkcmap();
if(!inferno)
jehanne_print("#include <u.h>\n#include <libc.h>\n");
else
jehanne_print("#include \"lib9.h\"\n");
jehanne_print("#include <draw.h>\n");
jehanne_print("#include <memdraw.h>\n\n");
jehanne_print("static Memcmap def = {\n");
jehanne_print("/* cmap2rgb */ {\n");
for(i=0; i<sizeof(c->cmap2rgb); ){
jehanne_print("\t");
for(j=0; j<16; j++, i++)
jehanne_print("0x%2.2ux,", c->cmap2rgb[i]);
jehanne_print("\n");
}
jehanne_print("},\n");
jehanne_print("/* rgb2cmap */ {\n");
for(i=0; i<sizeof(c->rgb2cmap);){
jehanne_print("\t");
for(j=0; j<16; j++, i++)
jehanne_print("0x%2.2ux,", c->rgb2cmap[i]);
jehanne_print("\n");
}
jehanne_print("}\n");
jehanne_print("};\n");
jehanne_print("Memcmap *memdefcmap = &def;\n");
jehanne_print("void _memmkcmap(void){}\n");
jehanne_exits(0);
}