#include #include #include static uint32_t canvas[4][4]; static uint32_t rgb888(int method, uint8_t rgb) { int r, g, b, n; r = (rgb >> 3) & 0x01; g = (rgb >> 1) & 0x03; b = (rgb >> 0) & 0x01; switch (method) { case 5: r = r ? 0xff : 0x00; g = (g << 6) | (g << 4) | (g << 2) | (g << 0); b = b ? 0xff: 0x00; break; default: r = g = b = 0; break; } n = (r << 16) | (g << 8) | b; return n; } int main(int argc, char *argv[]) { int x, y, n; if (argc < 2) { printf("%s [method]\n", argv[0]); goto fin0; } /* 埋める */ n = atoi(argv[1]); for (y = 0; y < 4; y++) { for (x = 0; x < 4; x++) { canvas[y][x] = rgb888(n, (y << 2) | x); } } /* 結果を表示する */ printf("# ImageMagick pixel enumeration: 192,192,255,rgb\n"); for (y = 0; y < 192; y++) { for (x = 0; x < 192; x++) { printf("%d,%d: (%3d,%3d,%3d)\n", x, y, (canvas[y / 48][x / 48] >> 16) & 0xff, (canvas[y / 48][x / 48] >> 8) & 0xff, (canvas[y / 48][x / 48] >> 0) & 0xff); } } fin0: return 0; }