OLD | NEW |
1 | 1 |
| 2 #define TRANSLATE_NOFILTER_NAME MAKENAME(_nofilter_translate) |
2 #define SCALE_NOFILTER_NAME MAKENAME(_nofilter_scale) | 3 #define SCALE_NOFILTER_NAME MAKENAME(_nofilter_scale) |
3 #define SCALE_FILTER_NAME MAKENAME(_filter_scale) | 4 #define SCALE_FILTER_NAME MAKENAME(_filter_scale) |
4 #define AFFINE_NOFILTER_NAME MAKENAME(_nofilter_affine) | 5 #define AFFINE_NOFILTER_NAME MAKENAME(_nofilter_affine) |
5 #define AFFINE_FILTER_NAME MAKENAME(_filter_affine) | 6 #define AFFINE_FILTER_NAME MAKENAME(_filter_affine) |
6 #define PERSP_NOFILTER_NAME MAKENAME(_nofilter_persp) | 7 #define PERSP_NOFILTER_NAME MAKENAME(_nofilter_persp) |
7 #define PERSP_FILTER_NAME MAKENAME(_filter_persp) | 8 #define PERSP_FILTER_NAME MAKENAME(_filter_persp) |
8 | 9 |
9 #define PACK_FILTER_X_NAME MAKENAME(_pack_filter_x) | 10 #define PACK_FILTER_X_NAME MAKENAME(_pack_filter_x) |
10 #define PACK_FILTER_Y_NAME MAKENAME(_pack_filter_y) | 11 #define PACK_FILTER_Y_NAME MAKENAME(_pack_filter_y) |
11 | 12 |
12 #ifndef PREAMBLE | 13 #ifndef PREAMBLE |
13 #define PREAMBLE(state) | 14 #define PREAMBLE(state) |
14 #define PREAMBLE_PARAM_X | 15 #define PREAMBLE_PARAM_X |
15 #define PREAMBLE_PARAM_Y | 16 #define PREAMBLE_PARAM_Y |
16 #define PREAMBLE_ARG_X | 17 #define PREAMBLE_ARG_X |
17 #define PREAMBLE_ARG_Y | 18 #define PREAMBLE_ARG_Y |
18 #endif | 19 #endif |
19 | 20 |
| 21 #ifndef PREAMBLE_TRANS |
| 22 #define PREAMBLE_TRANS(state) |
| 23 #endif |
| 24 |
| 25 static void TRANSLATE_NOFILTER_NAME(const SkBitmapProcState& s, |
| 26 uint32_t xy[], int count, int x, int y) |
| 27 { |
| 28 SkASSERT((s.fInvType & ~SkMatrix::kTranslate_Mask) == 0); |
| 29 |
| 30 PREAMBLE_TRANS(s); |
| 31 |
| 32 x += SkScalarFloor(s.fInvMatrix->getTranslateX()); |
| 33 y += SkScalarFloor(s.fInvMatrix->getTranslateY()); |
| 34 |
| 35 *xy++ = (uint32_t)TILEY_TRANS(y, (s.fBitmap->height() - 1)); |
| 36 |
| 37 unsigned maxX = s.fBitmap->width() - 1; |
| 38 int i; |
| 39 uint16_t* xx = (uint16_t*)xy; |
| 40 for (i = (count >> 2); i > 0; --i) |
| 41 { |
| 42 *xx++ = (uint16_t)TILEX_TRANS(x, maxX); x++; |
| 43 *xx++ = (uint16_t)TILEX_TRANS(x, maxX); x++; |
| 44 *xx++ = (uint16_t)TILEX_TRANS(x, maxX); x++; |
| 45 *xx++ = (uint16_t)TILEX_TRANS(x, maxX); x++; |
| 46 } |
| 47 for (i = (count & 3); i > 0; --i) |
| 48 { |
| 49 *xx++ = (uint16_t)TILEX_TRANS(x, maxX); x++; |
| 50 } |
| 51 } |
| 52 |
20 static void SCALE_NOFILTER_NAME(const SkBitmapProcState& s, | 53 static void SCALE_NOFILTER_NAME(const SkBitmapProcState& s, |
21 uint32_t xy[], int count, int x, int y) { | 54 uint32_t xy[], int count, int x, int y) { |
22 SkASSERT((s.fInvType & ~(SkMatrix::kTranslate_Mask | | 55 SkASSERT((s.fInvType & ~(SkMatrix::kTranslate_Mask | |
23 SkMatrix::kScale_Mask)) == 0); | 56 SkMatrix::kScale_Mask)) == 0); |
24 | 57 |
25 PREAMBLE(s); | 58 PREAMBLE(s); |
26 // we store y, x, x, x, x, x | 59 // we store y, x, x, x, x, x |
27 | 60 |
28 // invert x+half, y+half and convert to fixed | 61 // invert x+half, y+half and convert to fixed |
29 SkFixed fx = s.fInvSy * y + s.fInvTyPlusHalf; | 62 SkFixed fx = s.fInvSy * y + s.fInvTyPlusHalf; |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
234 *xy++ = PACK_FILTER_Y_NAME(srcXY[1] - (oneY >> 1), maxY, | 267 *xy++ = PACK_FILTER_Y_NAME(srcXY[1] - (oneY >> 1), maxY, |
235 oneY PREAMBLE_ARG_Y); | 268 oneY PREAMBLE_ARG_Y); |
236 *xy++ = PACK_FILTER_X_NAME(srcXY[0] - (oneX >> 1), maxX, | 269 *xy++ = PACK_FILTER_X_NAME(srcXY[0] - (oneX >> 1), maxX, |
237 oneX PREAMBLE_ARG_X); | 270 oneX PREAMBLE_ARG_X); |
238 srcXY += 2; | 271 srcXY += 2; |
239 } while (--count != 0); | 272 } while (--count != 0); |
240 } | 273 } |
241 } | 274 } |
242 | 275 |
243 static SkBitmapProcState::MatrixProc MAKENAME(_Procs)[] = { | 276 static SkBitmapProcState::MatrixProc MAKENAME(_Procs)[] = { |
| 277 TRANSLATE_NOFILTER_NAME, |
| 278 TRANSLATE_NOFILTER_NAME, // No need to do filtering if the matrix is no |
| 279 // more complex than identity/translate. |
244 SCALE_NOFILTER_NAME, | 280 SCALE_NOFILTER_NAME, |
245 SCALE_FILTER_NAME, | 281 SCALE_FILTER_NAME, |
246 AFFINE_NOFILTER_NAME, | 282 AFFINE_NOFILTER_NAME, |
247 AFFINE_FILTER_NAME, | 283 AFFINE_FILTER_NAME, |
248 PERSP_NOFILTER_NAME, | 284 PERSP_NOFILTER_NAME, |
249 PERSP_FILTER_NAME | 285 PERSP_FILTER_NAME |
250 }; | 286 }; |
251 | 287 |
252 #undef MAKENAME | 288 #undef MAKENAME |
253 #undef TILEX_PROCF | 289 #undef TILEX_PROCF |
254 #undef TILEY_PROCF | 290 #undef TILEY_PROCF |
255 #ifdef CHECK_FOR_DECAL | 291 #ifdef CHECK_FOR_DECAL |
256 #undef CHECK_FOR_DECAL | 292 #undef CHECK_FOR_DECAL |
257 #endif | 293 #endif |
258 | 294 |
| 295 #undef TILEX_TRANS |
| 296 #undef TILEY_TRANS |
| 297 |
| 298 #undef TRANSLATE_NOFILTER_NAME |
259 #undef SCALE_NOFILTER_NAME | 299 #undef SCALE_NOFILTER_NAME |
260 #undef SCALE_FILTER_NAME | 300 #undef SCALE_FILTER_NAME |
261 #undef AFFINE_NOFILTER_NAME | 301 #undef AFFINE_NOFILTER_NAME |
262 #undef AFFINE_FILTER_NAME | 302 #undef AFFINE_FILTER_NAME |
263 #undef PERSP_NOFILTER_NAME | 303 #undef PERSP_NOFILTER_NAME |
264 #undef PERSP_FILTER_NAME | 304 #undef PERSP_FILTER_NAME |
265 | 305 |
266 #undef PREAMBLE | 306 #undef PREAMBLE |
267 #undef PREAMBLE_PARAM_X | 307 #undef PREAMBLE_PARAM_X |
268 #undef PREAMBLE_PARAM_Y | 308 #undef PREAMBLE_PARAM_Y |
269 #undef PREAMBLE_ARG_X | 309 #undef PREAMBLE_ARG_X |
270 #undef PREAMBLE_ARG_Y | 310 #undef PREAMBLE_ARG_Y |
271 | 311 |
| 312 #undef PREAMBLE_TRANS |
| 313 |
272 #undef TILEX_LOW_BITS | 314 #undef TILEX_LOW_BITS |
273 #undef TILEY_LOW_BITS | 315 #undef TILEY_LOW_BITS |
OLD | NEW |