195 |
195 |
196 #if defined(TTD_ALIGNMENT_4) |
196 #if defined(TTD_ALIGNMENT_4) |
197 static inline void WRITE_PIXELS(Pixel* d, uint32 val) |
197 static inline void WRITE_PIXELS(Pixel* d, uint32 val) |
198 { |
198 { |
199 # if defined(TTD_BIG_ENDIAN) |
199 # if defined(TTD_BIG_ENDIAN) |
200 d[0] = (byte)(val >> 24); |
200 d[0] = GB(val, 24, 8); |
201 d[1] = (byte)(val >> 16); |
201 d[1] = GB(val, 16, 8); |
202 d[2] = (byte)(val >> 8); |
202 d[2] = GB(val, 8, 8); |
203 d[3] = (byte)(val >> 0); |
203 d[3] = GB(val, 0, 8); |
204 # elif defined(TTD_LITTLE_ENDIAN) |
204 # elif defined(TTD_LITTLE_ENDIAN) |
205 d[0] = (byte)(val >> 0); |
205 d[0] = GB(val, 0, 8); |
206 d[1] = (byte)(val >> 8); |
206 d[1] = GB(val, 8, 8); |
207 d[2] = (byte)(val >> 16); |
207 d[2] = GB(val, 16, 8); |
208 d[3] = (byte)(val >> 24); |
208 d[3] = GB(val, 24, 8); |
209 # endif |
209 # endif |
210 } |
210 } |
211 |
211 |
212 /* need to use OR, otherwise we will overwrite the wrong pixels at the edges :( */ |
212 /* need to use OR, otherwise we will overwrite the wrong pixels at the edges :( */ |
213 static inline void WRITE_PIXELS_OR(Pixel* d, uint32 val) |
213 static inline void WRITE_PIXELS_OR(Pixel* d, uint32 val) |
214 { |
214 { |
215 # if defined(TTD_BIG_ENDIAN) |
215 # if defined(TTD_BIG_ENDIAN) |
216 d[0] |= (byte)(val >> 24); |
216 d[0] |= GB(val, 24, 8); |
217 d[1] |= (byte)(val >> 16); |
217 d[1] |= GB(val, 16, 8); |
218 d[2] |= (byte)(val >> 8); |
218 d[2] |= GB(val, 8, 8); |
219 d[3] |= (byte)(val >> 0); |
219 d[3] |= GB(val, 0, 8); |
220 # elif defined(TTD_LITTLE_ENDIAN) |
220 # elif defined(TTD_LITTLE_ENDIAN) |
221 d[0] |= (byte)(val >> 0); |
221 d[0] |= GB(val, 0, 8); |
222 d[1] |= (byte)(val >> 8); |
222 d[1] |= GB(val, 8, 8); |
223 d[2] |= (byte)(val >> 16); |
223 d[2] |= GB(val, 16, 8); |
224 d[3] |= (byte)(val >> 24); |
224 d[3] |= GB(val, 24, 8); |
225 # endif |
225 # endif |
226 } |
226 } |
227 #else |
227 #else |
228 # define WRITE_PIXELS(dst, val) *(uint32*)(dst) = (val); |
228 # define WRITE_PIXELS(dst, val) *(uint32*)(dst) = (val); |
229 # define WRITE_PIXELS_OR(dst,val) *(uint32*)(dst) |= (val); |
229 # define WRITE_PIXELS_OR(dst,val) *(uint32*)(dst) |= (val); |