16 #include "colormath.h"
19 int remapColor(
int c,
char *f1,
char *f2)
23 int r1 = 0, g1 = 0, b1 = 0;
24 int r2 = 0, g2 = 0, b2 = 0;
25 unsigned int rr = 0, gg = 0, bb = 0;
26 int u = 0, v = 0, w = 0, t = 0, l = 0;
29 for(
int j = 0; j < 3; j++)
34 if(f1[i] >=
'0' && f1[i] <=
'9')
43 if(f1[i] ==
'R') r1 = t;
44 else if(f1[i] ==
'G') g1 = t;
51 for(
int j = 0; j < 3; j++)
56 if(f2[i] >=
'0' && f2[i] <=
'9')
65 if(f2[i] ==
'R') r2 = t;
66 else if(f2[i] ==
'G') g2 = t;
71 if(m[0] ==
'R') u = g1 + b1;
72 else if(m[0] ==
'G') v = r1 + b1;
75 if(m[2] ==
'R') l = r1;
76 else if(m[2] ==
'G') l = g1;
79 if(m[1] ==
'R') u = l;
80 else if(m[1] ==
'G') v = l;
83 mask = 0xFFFFFFFF >> (32 - r1);
84 rr = (c & (mask << u)) >> u;
86 mask = 0xFFFFFFFF >> (32 - g1);
87 gg = (c & (mask << v)) >> v;
89 mask = 0xFFFFFFFF >> (32 - b1);
90 bb = (c & (mask << w)) >> w;
94 if(r1 > r2) rr = rr >> (r1 - r2);
95 else rr = rr << (r2 - r1);
97 if(g1 > g2) gg = gg >> (g1 - g2);
98 else gg = gg << (g2 - g1);
100 if(b1 > b2) bb = bb >> (b1 - b2);
101 else bb = bb << (b2 - b1);
103 if(k[0] ==
'R') rr = rr << (g2 + b2);
104 else if(k[0] ==
'G') gg = gg << (r2 + b2);
105 else bb = bb << (r2 + g2);
107 if(k[2] ==
'R') l = r2;
108 else if(k[2] ==
'G') l = g2;
111 if(k[1] ==
'R') rr = rr << l;
112 else if(k[1] ==
'G') gg = gg << l;
115 return (rr | gg | bb);
121 int remapColor888to565(
int c)
124 int r = (c >> 8) & 0b1111100000000000;
125 int g = (c >> 5) & 0b0000011111100000;
126 int b = (c >> 3) & 0b0000000000011111;