C로 만드는 색상표 소스.

#include "../common/common.h"
#include "../common/gif.h"
int l, r, n, cb,cw;
double dx, dy, mx, my;
void SetBox (class GIFIMAGEMAP *gif, int _r, int _g, int _b) {
char str[30];
int i, c;
if (n < r) {
mx += dx;
my += dy/2;
n++;
} else if (n < r*2) {
my += dy;
n++;
} else if (n < r*3) {
mx -= dx;
my += dy/2;
n++;
} else if (n < r*4) {
mx -= dx;
my -= dy/2;
n++;
} else if (n < r*5) {
my -= dy;
n++;
} else if (n < r*6) {
mx += dx;
my -= dy/2;
n++;
if (n == r*6) {
r++;
n = 0;
my -= dy;
}
} else {
r++;
n = 0;
my -= dy;
}
_r *= 51;
_g *= 51;
_b *= 51;
c = gif->SetColorRGB (_r,_g,_b);
for (i=-int(dy/2); i<dy/2; i++) {
gif->Line (mx-l, my, mx-l/2, my+i, c);
gif->Line (mx+l, my, mx+l/2, my+i, c);
}
gif->Bar (mx-l/2, my-dy/2, mx+l/2, my+dy/2, c);
gif->Line (mx-l, my, mx-l/2, my-dy/2, cb);
gif->Line (mx-l, my, mx-l/2, my+dy/2, cb);
gif->Line (mx+l, my, mx+l/2, my-dy/2, cb);
gif->Line (mx+l, my, mx+l/2, my+dy/2, cb);
gif->Line (mx-l/2, my-dy/2, mx+l/2, my-dy/2, cb);
gif->Line (mx-l/2, my+dy/2, mx+l/2, my+dy/2, cb);
sprintf (str, "%02X%02X%02X", _r,_g,_b);
if (_r*76+_g*150+_b*29 < 38250) c = cw;
else c = cb;
gif->TextOutBig (mx-21, my-12, str, c, 7);
gif->TextOutBig (mx-20, my-12, str, c, 7);
sprintf (str, "%d.%d.%d", _r,_g,_b);
gif->TextOut (mx-strlen(str)*3, my+4, str, c);
}
void main () {
FILE *fp;
class GIFIMAGEMAP gif;
int c, i;
char s[2];
char code[] = {
4,4,4, 5,5,5, 0,0,0, 1,1,1, 2,2,2, 3,3,3,
5,4,3, 5,4,4, 5,3,4, 5,4,5, 4,3,5, 4,4,5, 3,4,5, 4,5,5, 3,5,4, 4,5,4, 4,5,3, 5,5,4,
4,3,2, 4,3,3, 5,3,3, 4,2,3, 4,3,4, 5,3,5, 3,2,4, 3,3,4, 3,3,5, 2,3,4, 3,4,4, 3,5,5, 2,4,3, 3,4,3, 3,5,3, 3,4,2, 4,4,3, 5,5,3,
3,2,1, 3,2,2, 4,2,2, 5,2,2, 3,1,2, 3,2,3, 4,2,4, 5,2,5, 2,1,3, 2,2,3, 2,2,4, 2,2,5, 1,2,3, 2,3,3, 2,4,4, 2,5,5, 1,3,2, 2,3,2, 2,4,2, 2,5,2, 2,3,1, 3,3,2, 4,4,2, 5,5,2,
2,1,0, 2,1,1, 3,1,1, 4,1,1, 5,1,1, 2,0,1, 2,1,2, 3,1,3, 4,1,4, 5,1,5, 1,0,2, 1,1,2, 1,1,3, 1,1,4, 1,1,5, 0,1,2, 1,2,2, 1,3,3, 1,4,4, 1,5,5, 0,2,1, 1,2,1, 1,3,1, 1,4,1, 1,5,1, 1,2,0, 2,2,1, 3,3,1, 4,4,1, 5,5,1,
4,2,0, 1,0,0, 2,0,0, 3,0,0, 4,0,0, 5,0,0, 4,0,2, 1,0,1, 2,0,2, 3,0,3, 4,0,4, 5,0,5, 2,0,4, 0,0,1, 0,0,2, 0,0,3, 0,0,4, 0,0,5, 0,2,4, 0,1,1, 0,2,2, 0,3,3, 0,4,4, 0,5,5, 0,4,2, 0,1,0, 0,2,0, 0,3,0, 0,4,0, 0,5,0, 2,4,0, 1,1,0, 2,2,0, 3,3,0, 4,4,0, 5,5,0,
5,3,1, 5,3,2, 4,2,1, 3,1,0, 3,0,1, 4,1,2, 5,2,3, 5,1,3, 5,2,4, 4,1,3, 3,0,2, 2,0,3, 3,1,4, 4,2,5, 3,1,5, 3,2,5, 2,1,4, 1,0,3, 0,1,3, 1,2,4, 2,3,5, 1,3,5, 2,4,5, 1,3,4, 0,2,3, 0,3,2, 1,4,3, 2,5,4, 1,5,3, 2,5,3, 1,4,2, 0,3,1, 1,3,0, 2,4,1, 3,5,2, 3,5,1, 4,5,2, 3,4,1, 2,3,0, 3,2,0, 4,3,1, 5,4,2,
5,2,0, 5,1,0, 5,2,1, 4,1,0, 4,0,1, 5,1,2, 5,0,1, 5,0,2, 5,0,3, 5,0,4, 5,1,4, 4,0,3, 3,0,4, 4,1,5, 4,0,5, 3,0,5, 2,0,5, 1,0,5, 2,1,5, 1,0,4, 0,1,4, 1,2,5, 0,1,5, 0,2,5, 0,3,5, 0,4,5, 1,4,5, 0,3,4, 0,4,3, 1,5,4, 0,5,4, 0,5,3, 0,5,2, 0,5,1, 1,5,2, 0,4,1, 1,4,0, 2,5,1, 1,5,0, 2,5,0, 3,5,0, 4,5,0, 4,5,1, 3,4,0, 4,3,0, 5,4,1, 5,4,0, 5,3,0
};
l = 42;
r = n = 0;
dx = 1.5*l;
dy = 1.732050807568877*l;
mx = 650.0;
my = 700.0;
gif.CreateCanvas (1300, 1400);
cb = gif.SetColor (0x000000);
cw = gif.SetColor (0xFFFFFF);
// 216
for (i=0; i<sizeof(code)/3; i++)
SetBox (&gif, code[i*3],code[i*3+1],code[i*3+2]);
for (i=0; i<54; i++)
SetBox (&gif, 0,0,0);
fp = fopen ("hi.gif", "wb");
gif.PrintCanvas (fp);
fclose (fp);
gif.DistroyCanvas ();
}