| 119 | #define DIFF(a,b) ((a) >= (b) ? (a) - (b) : (b) - (a)) |
| 120 | |
| 121 | int |
| 122 | main(int argc, char** argv) |
| 123 | { |
| 124 | int r0, g0, b0; |
| 125 | hsv_t hsv; |
| 126 | int r1, g1, b1; |
| 127 | int ok = 0, fuzzy = 0, ko = 0, total; |
| 128 | |
| 129 | for (r0 = 0; r0 < 256; r0++) { |
| 130 | for (g0 = 0; g0 < 256; g0++) { |
| 131 | for (b0 = 0; b0 < 256; b0++) { |
| 132 | COLORREF tmp; |
| 133 | |
| 134 | rgb2hsv(RGB(r0, g0, b0), &hsv); |
| 135 | tmp = hsv2rgb(&hsv); |
| 136 | r1 = GetRValue(tmp); |
| 137 | g1 = GetGValue(tmp); |
| 138 | b1 = GetBValue(tmp); |
| 139 | |
| 140 | if (r0 == r1 && b0 == b1 && g0 == g1) |
| 141 | ok++; |
| 142 | else if (DIFF(r0, r1) <= 1 && DIFF(b0, b1) <= 1 && DIFF(g0, g1) <= 1) |
| 143 | fuzzy++; |
| 144 | else |
| 145 | ko++; |
| 146 | } |
| 147 | } |
| 148 | } |
| 149 | |
| 150 | total = ok + fuzzy + ko; |
| 151 | |
| 152 | printf("Test results:\n"); |
| 153 | printf(" * exact matches: %8d (%5.2f%%)\n", ok, (100.0 * ok) / total); |
| 154 | printf(" * fuzzy matches: %8d (%5.2f%%)\n", fuzzy, (100.0 * fuzzy) / total); |
| 155 | printf(" * mismatches: %8d (%5.2f%%)\n", ko, (100.0 * ko) / total); |
| 156 | |
| 157 | return (ko == 0 ? 0 : 1); |
| 158 | } |
| 159 | #endif /* TEST */ |