4 uint RGB_Table_08[16] = {
\r
22 ushort RGB_08_To_16(uchar c8)
\r
27 c32.c32 = RGB_Table_08[c8];
\r
28 return ((c32.bit.r / 7) << 11) | ((c32.bit.g / 7) << (5 + 1) | (c32.bit.b / 7));
\r
37 c32.bit.b = c8 / 36;
\r
38 c8 -= c32.bit.b * 36;
\r
40 c8 -= c32.bit.g * 6;
\r
44 return ((c32.bit.r * 6) << 11) | ((c32.bit.g * 6) << (5 + 1) | (c32.bit.b * 6));
\r
47 uint RGB_08_To_32(uchar c8)
\r
52 return RGB_Table_08[c8];
\r
61 c32.bit.b = c8 / 36;
\r
62 c8 -= c32.bit.b * 36;
\r
64 c8 -= c32.bit.g * 6;
\r
75 uchar RGB_16_To_08(ushort c16)
\r
79 c[0] = c16 >> (5 + 6);
\r
80 c[1] = (c16 & 0x7e0) >> 5;
\r
87 return 16 + c[0] + c[1] * 6 + c[2] * 36;
\r
90 uint RGB_16_To_32(ushort c16)
\r
94 c[0] = c16 >> (5 + 6);
\r
95 c[1] = (c16 & 0x7e0) >> 5;
\r
98 return (c[0] << (16 + 3)) | (c[1] << (8 + 2)) | (c[2] << 3);
\r
101 uchar RGB_32_To_08(uint c32)
\r
106 c[3] = (c32 << 24) >> 24;
\r
107 c[2] = (c32 << 16) >> 24;
\r
108 c[1] = (c32 << 8) >> 24;
\r
114 c8 = (c[1] + c[2] * 6 + c[3] * 36) + 16;
\r
119 uchar RGB_32_To_08_xy(uint c32, int x, int y)
\r
121 static int table[4] = { 3, 1, 0, 2 };
\r
126 c[3] = (c32 << 24) >> 24;
\r
127 c[2] = (c32 << 16) >> 24;
\r
128 c[1] = (c32 << 8) >> 24;
\r
130 x &= 1; /* 偶数か奇数か */
\r
133 i = table[x + y * 2]; /* 中間色を作るための定数 */
\r
134 c[1] = (c[1] * 21) / 256; /* これで 0~20 になる */
\r
135 c[2] = (c[2] * 21) / 256;
\r
136 c[3] = (c[3] * 21) / 256;
\r
137 c[1] = (c[1] + i) / 4; /* これで 0~5 になる */
\r
138 c[2] = (c[2] + i) / 4;
\r
139 c[3] = (c[3] + i) / 4;
\r
141 c8 = 16 + c[1] + c[2] * 6 + c[3] * 36;
\r
146 ushort RGB_32_To_16(uint c32)
\r
151 c[3] = (c32 << 24) >> 24;
\r
152 c[2] = (c32 << 16) >> 24;
\r
153 c[1] = (c32 << 8) >> 24;
\r
155 c16 = ((c[1] >> 3) << 11 | (c[2] >> 2) << 5 | (c[3] >> 3));
\r