22 static inline unsigned rotLeft(
unsigned a,
unsigned n)
24 return (a << n) | (a >> (32 - n));
37 Rmask2 = ((1 << (2 + pixelOps.
getRloss())) - 1) <<
39 Gmask2 = ((1 << (2 + pixelOps.
getGloss())) - 1) <<
41 Bmask2 = ((1 << (2 + pixelOps.
getBloss())) - 1) <<
48 Rshift3 = (Rshift1 + 0) & 31;
49 Gshift3 = (Gshift1 + 10) & 31;
50 Bshift3 = (Bshift1 + 20) & 31;
53 memset(tab, 0,
sizeof(tab));
63 for (
unsigned p = 0; p < 0x10000; ++p) {
64 unsigned r = rotLeft((p & Rmask1), Rshift1) |
65 rotLeft((p & Rmask2), Rshift2);
66 unsigned g = rotLeft((p & Gmask1), Gshift1) |
67 rotLeft((p & Gmask2), Gshift2);
68 unsigned b = rotLeft((p & Bmask1), Bshift1) |
69 rotLeft((p & Bmask2), Bshift2);
70 tab[p] = (((r * factor) >> 8) << 0) |
71 (((g * factor) >> 8) << 10) |
72 (((b * factor) >> 8) << 20);