ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/utils/cfhq2xa.C
(Generate patch)

Comparing deliantra/server/utils/cfhq2xa.C (file contents):
Revision 1.6 by root, Mon Oct 12 14:01:00 2009 UTC vs.
Revision 1.7 by root, Fri Nov 6 12:27:06 2009 UTC

66 int w = w1 + w2 + w3; 66 int w = w1 + w2 + w3;
67 67
68 return ((((c1 >> shift) & Cmask) * w1 + ((c2 >> shift) & Cmask) * w2 + ((c3 >> shift) & Cmask) * w3 + w / 2) / w) << shift; 68 return ((((c1 >> shift) & Cmask) * w1 + ((c2 >> shift) & Cmask) * w2 + ((c3 >> shift) & Cmask) * w3 + w / 2) / w) << shift;
69} 69}
70 70
71inline void lerp (unsigned char *pc, pixel c1, int w1, pixel c2, int w2, pixel c3 = 0, int w3 = 0) 71static inline void lerp (unsigned char *pc, pixel c1, int w1, pixel c2, int w2, pixel c3 = 0, int w3 = 0)
72{ 72{
73 *(pixel *)pc = lerp (c1, w1, c2, w2, c3, w3, Rshift) 73 *(pixel *)pc = lerp (c1, w1, c2, w2, c3, w3, Rshift)
74 | lerp (c1, w1, c2, w2, c3, w3, Gshift) 74 | lerp (c1, w1, c2, w2, c3, w3, Gshift)
75 | lerp (c1, w1, c2, w2, c3, w3, Bshift) 75 | lerp (c1, w1, c2, w2, c3, w3, Bshift)
76 | lerp (c1, w1, c2, w2, c3, w3, Ashift); 76 | lerp (c1, w1, c2, w2, c3, w3, Ashift);
77} 77}
78 78
79inline void Interp1 (unsigned char *pc, pixel c1, pixel c2) 79static inline void Interp1 (unsigned char *pc, pixel c1, pixel c2)
80{ 80{
81 lerp (pc, c1, 3, c2, 1); 81 lerp (pc, c1, 3, c2, 1);
82} 82}
83 83
84inline void Interp2 (unsigned char *pc, pixel c1, pixel c2, pixel c3) 84static inline void Interp2 (unsigned char *pc, pixel c1, pixel c2, pixel c3)
85{ 85{
86 lerp (pc, c1, 2, c2, 1, c3, 1); 86 lerp (pc, c1, 2, c2, 1, c3, 1);
87} 87}
88 88
89inline void Interp5 (unsigned char *pc, pixel c1, pixel c2) 89static inline void Interp5 (unsigned char *pc, pixel c1, pixel c2)
90{ 90{
91 lerp (pc, c1, 1, c2, 1); 91 lerp (pc, c1, 1, c2, 1);
92} 92}
93 93
94inline void Interp6 (unsigned char *pc, pixel c1, pixel c2, pixel c3) 94static inline void Interp6 (unsigned char *pc, pixel c1, pixel c2, pixel c3)
95{ 95{
96 lerp (pc, c1, 5, c2, 2, c3, 1); 96 lerp (pc, c1, 5, c2, 2, c3, 1);
97} 97}
98 98
99inline void Interp7 (unsigned char *pc, pixel c1, pixel c2, pixel c3) 99static inline void Interp7 (unsigned char *pc, pixel c1, pixel c2, pixel c3)
100{ 100{
101 lerp (pc, c1, 6, c2, 1, c3, 1); 101 lerp (pc, c1, 6, c2, 1, c3, 1);
102} 102}
103 103
104inline void Interp9 (unsigned char *pc, pixel c1, pixel c2, pixel c3) 104static inline void Interp9 (unsigned char *pc, pixel c1, pixel c2, pixel c3)
105{ 105{
106 lerp (pc, c1, 2, c2, 3, c2, 3); 106 lerp (pc, c1, 2, c2, 3, c2, 3);
107} 107}
108 108
109inline void Interp10 (unsigned char *pc, pixel c1, pixel c2, pixel c3) 109static inline void Interp10 (unsigned char *pc, pixel c1, pixel c2, pixel c3)
110{ 110{
111 lerp (pc, c1, 14, c2, 1, c3, 1); 111 lerp (pc, c1, 14, c2, 1, c3, 1);
112} 112}
113 113
114#define PIXEL00_0 *((pixel *)(pOut)) = w[5]; 114#define PIXEL00_0 *((pixel *)(pOut)) = w[5];
158#define PIXEL11_61 Interp6(pOut+BpL + sizeof (pixel), w[5], w[6], w[8]); 158#define PIXEL11_61 Interp6(pOut+BpL + sizeof (pixel), w[5], w[6], w[8]);
159#define PIXEL11_70 Interp7(pOut+BpL + sizeof (pixel), w[5], w[6], w[8]); 159#define PIXEL11_70 Interp7(pOut+BpL + sizeof (pixel), w[5], w[6], w[8]);
160#define PIXEL11_90 Interp9(pOut+BpL + sizeof (pixel), w[5], w[6], w[8]); 160#define PIXEL11_90 Interp9(pOut+BpL + sizeof (pixel), w[5], w[6], w[8]);
161#define PIXEL11_100 Interp10(pOut+BpL + sizeof (pixel), w[5], w[6], w[8]); 161#define PIXEL11_100 Interp10(pOut+BpL + sizeof (pixel), w[5], w[6], w[8]);
162 162
163inline pixel RGBAtoYUVA (pixel w) 163static inline pixel RGBAtoYUVA (pixel w)
164{ 164{
165 int r = (w >> Rshift) & Cmask; 165 int r = (w >> Rshift) & Cmask;
166 int g = (w >> Gshift) & Cmask; 166 int g = (w >> Gshift) & Cmask;
167 int b = (w >> Bshift) & Cmask; 167 int b = (w >> Bshift) & Cmask;
168 int a = (w >> Ashift) & Cmask; 168 int a = (w >> Ashift) & Cmask;
175 | (u << Gshift) 175 | (u << Gshift)
176 | (v << Bshift) 176 | (v << Bshift)
177 | (a << Ashift); 177 | (a << Ashift);
178} 178}
179 179
180inline bool Diff (pixel w1, pixel w2) 180static inline bool Diff (pixel w1, pixel w2)
181{ 181{
182 pixel YUV1 = RGBAtoYUVA (w1); 182 pixel YUV1 = RGBAtoYUVA (w1);
183 pixel YUV2 = RGBAtoYUVA (w2); 183 pixel YUV2 = RGBAtoYUVA (w2);
184 184
185 return ((abs (((YUV1 >> Rshift) & Cmask) - ((YUV2 >> Rshift) & Cmask)) > trY) || 185 return ((abs (((YUV1 >> Rshift) & Cmask) - ((YUV2 >> Rshift) & Cmask)) > trY) ||

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines