Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(20)

Side by Side Diff: src/core/SkBitmapProcState.cpp

Issue 96099: Whitespace fix: remove whitespace from the end of lines.
Patch Set: Created 16 years, 11 months ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/core/SkBitmapProcState.h ('k') | src/core/SkBitmapProcState_matrix.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #include "SkBitmapProcState.h" 1 #include "SkBitmapProcState.h"
2 #include "SkColorPriv.h" 2 #include "SkColorPriv.h"
3 #include "SkFilterProc.h" 3 #include "SkFilterProc.h"
4 #include "SkPaint.h" 4 #include "SkPaint.h"
5 #include "SkShader.h" // for tilemodes 5 #include "SkShader.h" // for tilemodes
6 6
7 #ifdef SK_CPU_BENDIAN 7 #ifdef SK_CPU_BENDIAN
8 #define UNPACK_PRIMARY_SHORT(packed) ((uint32_t)(packed) >> 16) 8 #define UNPACK_PRIMARY_SHORT(packed) ((uint32_t)(packed) >> 16)
9 #define UNPACK_SECONDARY_SHORT(packed) ((packed) & 0xFFFF) 9 #define UNPACK_SECONDARY_SHORT(packed) ((packed) & 0xFFFF)
10 #else 10 #else
11 #define UNPACK_PRIMARY_SHORT(packed) ((packed) & 0xFFFF) 11 #define UNPACK_PRIMARY_SHORT(packed) ((packed) & 0xFFFF)
12 #define UNPACK_SECONDARY_SHORT(packed) ((uint32_t)(packed) >> 16) 12 #define UNPACK_SECONDARY_SHORT(packed) ((uint32_t)(packed) >> 16)
13 #endif 13 #endif
14 14
15 static inline SkPMColor Filter_32(unsigned x, unsigned y, 15 static inline SkPMColor Filter_32(unsigned x, unsigned y,
16 SkPMColor a00, SkPMColor a01, 16 SkPMColor a00, SkPMColor a01,
17 SkPMColor a10, SkPMColor a11) { 17 SkPMColor a10, SkPMColor a11) {
18 SkASSERT((unsigned)x <= 0xF); 18 SkASSERT((unsigned)x <= 0xF);
19 SkASSERT((unsigned)y <= 0xF); 19 SkASSERT((unsigned)y <= 0xF);
20 20
21 int xy = x * y; 21 int xy = x * y;
22 uint32_t mask = gMask_00FF00FF; //0xFF00FF; 22 uint32_t mask = gMask_00FF00FF; //0xFF00FF;
23 23
24 int scale = 256 - 16*y - 16*x + xy; 24 int scale = 256 - 16*y - 16*x + xy;
25 uint32_t lo = (a00 & mask) * scale; 25 uint32_t lo = (a00 & mask) * scale;
26 uint32_t hi = ((a00 >> 8) & mask) * scale; 26 uint32_t hi = ((a00 >> 8) & mask) * scale;
27 27
28 scale = 16*x - xy; 28 scale = 16*x - xy;
29 lo += (a01 & mask) * scale; 29 lo += (a01 & mask) * scale;
30 hi += ((a01 >> 8) & mask) * scale; 30 hi += ((a01 >> 8) & mask) * scale;
31 31
32 scale = 16*y - xy; 32 scale = 16*y - xy;
33 lo += (a10 & mask) * scale; 33 lo += (a10 & mask) * scale;
34 hi += ((a10 >> 8) & mask) * scale; 34 hi += ((a10 >> 8) & mask) * scale;
35 35
36 lo += (a11 & mask) * xy; 36 lo += (a11 & mask) * xy;
37 hi += ((a11 >> 8) & mask) * xy; 37 hi += ((a11 >> 8) & mask) * xy;
38 38
39 return ((lo >> 8) & mask) | (hi & ~mask); 39 return ((lo >> 8) & mask) | (hi & ~mask);
40 } 40 }
41 41
42 // returns expanded * 5bits 42 // returns expanded * 5bits
43 static inline uint32_t Filter_565_Expanded(unsigned x, unsigned y, 43 static inline uint32_t Filter_565_Expanded(unsigned x, unsigned y,
44 uint32_t a00, uint32_t a01, 44 uint32_t a00, uint32_t a01,
45 uint32_t a10, uint32_t a11) { 45 uint32_t a10, uint32_t a11) {
46 SkASSERT((unsigned)x <= 0xF); 46 SkASSERT((unsigned)x <= 0xF);
47 SkASSERT((unsigned)y <= 0xF); 47 SkASSERT((unsigned)y <= 0xF);
48 48
49 a00 = SkExpand_rgb_16(a00); 49 a00 = SkExpand_rgb_16(a00);
50 a01 = SkExpand_rgb_16(a01); 50 a01 = SkExpand_rgb_16(a01);
51 a10 = SkExpand_rgb_16(a10); 51 a10 = SkExpand_rgb_16(a10);
52 a11 = SkExpand_rgb_16(a11); 52 a11 = SkExpand_rgb_16(a11);
53 53
54 int xy = x * y >> 3; 54 int xy = x * y >> 3;
55 return a00 * (32 - 2*y - 2*x + xy) + 55 return a00 * (32 - 2*y - 2*x + xy) +
56 a01 * (2*x - xy) + 56 a01 * (2*x - xy) +
57 a10 * (2*y - xy) + 57 a10 * (2*y - xy) +
58 a11 * xy; 58 a11 * xy;
59 } 59 }
60 60
61 // turn an expanded 565 * 5bits into SkPMColor 61 // turn an expanded 565 * 5bits into SkPMColor
62 // g:11 | r:10 | x:1 | b:10 62 // g:11 | r:10 | x:1 | b:10
63 static inline SkPMColor SkExpanded_565_To_PMColor(uint32_t c) { 63 static inline SkPMColor SkExpanded_565_To_PMColor(uint32_t c) {
64 unsigned r = (c >> 13) & 0xFF; 64 unsigned r = (c >> 13) & 0xFF;
65 unsigned g = (c >> 24); 65 unsigned g = (c >> 24);
66 unsigned b = (c >> 2) & 0xFF; 66 unsigned b = (c >> 2) & 0xFF;
67 return SkPackARGB32(0xFF, r, g, b); 67 return SkPackARGB32(0xFF, r, g, b);
68 } 68 }
69 69
70 // returns answer in SkPMColor format 70 // returns answer in SkPMColor format
71 static inline SkPMColor Filter_4444_D32(unsigned x, unsigned y, 71 static inline SkPMColor Filter_4444_D32(unsigned x, unsigned y,
72 uint32_t a00, uint32_t a01, 72 uint32_t a00, uint32_t a01,
73 uint32_t a10, uint32_t a11) { 73 uint32_t a10, uint32_t a11) {
74 SkASSERT((unsigned)x <= 0xF); 74 SkASSERT((unsigned)x <= 0xF);
75 SkASSERT((unsigned)y <= 0xF); 75 SkASSERT((unsigned)y <= 0xF);
76 76
77 a00 = SkExpand_4444(a00); 77 a00 = SkExpand_4444(a00);
78 a01 = SkExpand_4444(a01); 78 a01 = SkExpand_4444(a01);
79 a10 = SkExpand_4444(a10); 79 a10 = SkExpand_4444(a10);
80 a11 = SkExpand_4444(a11); 80 a11 = SkExpand_4444(a11);
81 81
82 int xy = x * y >> 4; 82 int xy = x * y >> 4;
83 uint32_t result = a00 * (16 - y - x + xy) + 83 uint32_t result = a00 * (16 - y - x + xy) +
84 a01 * (x - xy) + 84 a01 * (x - xy) +
85 a10 * (y - xy) + 85 a10 * (y - xy) +
86 a11 * xy; 86 a11 * xy;
87 87
88 return SkCompact_8888(result); 88 return SkCompact_8888(result);
89 } 89 }
90 90
91 static inline U8CPU Filter_8(unsigned x, unsigned y, 91 static inline U8CPU Filter_8(unsigned x, unsigned y,
92 U8CPU a00, U8CPU a01, 92 U8CPU a00, U8CPU a01,
93 U8CPU a10, U8CPU a11) { 93 U8CPU a10, U8CPU a11) {
94 SkASSERT((unsigned)x <= 0xF); 94 SkASSERT((unsigned)x <= 0xF);
95 SkASSERT((unsigned)y <= 0xF); 95 SkASSERT((unsigned)y <= 0xF);
96 96
97 int xy = x * y; 97 int xy = x * y;
98 unsigned result = a00 * (256 - 16*y - 16*x + xy) + 98 unsigned result = a00 * (256 - 16*y - 16*x + xy) +
99 a01 * (16*x - xy) + 99 a01 * (16*x - xy) +
100 a10 * (16*y - xy) + 100 a10 * (16*y - xy) +
101 a11 * xy; 101 a11 * xy;
102 102
103 return result >> 8; 103 return result >> 8;
104 } 104 }
105 105
106 /***************************************************************************** 106 /*****************************************************************************
107 * 107 *
108 * D32 functions 108 * D32 functions
109 * 109 *
110 */ 110 */
111 111
112 // SRC == 8888 112 // SRC == 8888
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 if (SkShader::kClamp_TileMode == fTileModeX && 334 if (SkShader::kClamp_TileMode == fTileModeX &&
335 SkShader::kClamp_TileMode == fTileModeY) { 335 SkShader::kClamp_TileMode == fTileModeY) {
336 m = &inv; 336 m = &inv;
337 clamp_clamp = true; 337 clamp_clamp = true;
338 } else { 338 } else {
339 fUnitInvMatrix = inv; 339 fUnitInvMatrix = inv;
340 fUnitInvMatrix.postIDiv(fOrigBitmap.width(), fOrigBitmap.height()); 340 fUnitInvMatrix.postIDiv(fOrigBitmap.width(), fOrigBitmap.height());
341 m = &fUnitInvMatrix; 341 m = &fUnitInvMatrix;
342 clamp_clamp = false; 342 clamp_clamp = false;
343 } 343 }
344 344
345 fBitmap = &fOrigBitmap; 345 fBitmap = &fOrigBitmap;
346 if (fOrigBitmap.hasMipMap()) { 346 if (fOrigBitmap.hasMipMap()) {
347 int shift = fOrigBitmap.extractMipLevel(&fMipBitmap, 347 int shift = fOrigBitmap.extractMipLevel(&fMipBitmap,
348 SkScalarToFixed(m->getScaleX()), 348 SkScalarToFixed(m->getScaleX()),
349 SkScalarToFixed(m->getSkewY())); 349 SkScalarToFixed(m->getSkewY()));
350 350
351 if (shift > 0) { 351 if (shift > 0) {
352 if (m != &fUnitInvMatrix) { 352 if (m != &fUnitInvMatrix) {
353 fUnitInvMatrix = *m; 353 fUnitInvMatrix = *m;
354 m = &fUnitInvMatrix; 354 m = &fUnitInvMatrix;
355 } 355 }
356 356
357 SkScalar scale = SkFixedToScalar(SK_Fixed1 >> shift); 357 SkScalar scale = SkFixedToScalar(SK_Fixed1 >> shift);
358 fUnitInvMatrix.postScale(scale, scale); 358 fUnitInvMatrix.postScale(scale, scale);
359 359
360 // now point here instead of fOrigBitmap 360 // now point here instead of fOrigBitmap
361 fBitmap = &fMipBitmap; 361 fBitmap = &fMipBitmap;
362 } 362 }
363 } 363 }
364 364
365 fInvMatrix = m; 365 fInvMatrix = m;
366 fInvProc = m->getMapXYProc(); 366 fInvProc = m->getMapXYProc();
367 fInvType = m->getType(); 367 fInvType = m->getType();
368 fInvSx = SkScalarToFixed(m->getScaleX()); 368 fInvSx = SkScalarToFixed(m->getScaleX());
369 fInvSy = SkScalarToFixed(m->getScaleY()); 369 fInvSy = SkScalarToFixed(m->getScaleY());
(...skipping 14 matching lines...) Expand all
384 fShaderProc16 = NULL; 384 fShaderProc16 = NULL;
385 fSampleProc32 = NULL; 385 fSampleProc32 = NULL;
386 fSampleProc16 = NULL; 386 fSampleProc16 = NULL;
387 387
388 fMatrixProc = this->chooseMatrixProc(); 388 fMatrixProc = this->chooseMatrixProc();
389 if (NULL == fMatrixProc) { 389 if (NULL == fMatrixProc) {
390 return false; 390 return false;
391 } 391 }
392 392
393 /////////////////////////////////////////////////////////////////////// 393 ///////////////////////////////////////////////////////////////////////
394 394
395 int index = 0; 395 int index = 0;
396 if (fAlphaScale < 256) { // note: this distinction is not used for D16 396 if (fAlphaScale < 256) { // note: this distinction is not used for D16
397 index |= 1; 397 index |= 1;
398 } 398 }
399 if (fInvType <= (SkMatrix::kTranslate_Mask | SkMatrix::kScale_Mask)) { 399 if (fInvType <= (SkMatrix::kTranslate_Mask | SkMatrix::kScale_Mask)) {
400 index |= 2; 400 index |= 2;
401 } 401 }
402 if (fDoFilter) { 402 if (fDoFilter) {
403 index |= 4; 403 index |= 4;
404 } 404 }
(...skipping 21 matching lines...) Expand all
426 426
427 static const SampleProc32 gSample32[] = { 427 static const SampleProc32 gSample32[] = {
428 S32_opaque_D32_nofilter_DXDY, 428 S32_opaque_D32_nofilter_DXDY,
429 S32_alpha_D32_nofilter_DXDY, 429 S32_alpha_D32_nofilter_DXDY,
430 S32_opaque_D32_nofilter_DX, 430 S32_opaque_D32_nofilter_DX,
431 S32_alpha_D32_nofilter_DX, 431 S32_alpha_D32_nofilter_DX,
432 S32_opaque_D32_filter_DXDY, 432 S32_opaque_D32_filter_DXDY,
433 S32_alpha_D32_filter_DXDY, 433 S32_alpha_D32_filter_DXDY,
434 S32_opaque_D32_filter_DX, 434 S32_opaque_D32_filter_DX,
435 S32_alpha_D32_filter_DX, 435 S32_alpha_D32_filter_DX,
436 436
437 S16_opaque_D32_nofilter_DXDY, 437 S16_opaque_D32_nofilter_DXDY,
438 S16_alpha_D32_nofilter_DXDY, 438 S16_alpha_D32_nofilter_DXDY,
439 S16_opaque_D32_nofilter_DX, 439 S16_opaque_D32_nofilter_DX,
440 S16_alpha_D32_nofilter_DX, 440 S16_alpha_D32_nofilter_DX,
441 S16_opaque_D32_filter_DXDY, 441 S16_opaque_D32_filter_DXDY,
442 S16_alpha_D32_filter_DXDY, 442 S16_alpha_D32_filter_DXDY,
443 S16_opaque_D32_filter_DX, 443 S16_opaque_D32_filter_DX,
444 S16_alpha_D32_filter_DX, 444 S16_alpha_D32_filter_DX,
445 445
446 SI8_opaque_D32_nofilter_DXDY, 446 SI8_opaque_D32_nofilter_DXDY,
447 SI8_alpha_D32_nofilter_DXDY, 447 SI8_alpha_D32_nofilter_DXDY,
448 SI8_opaque_D32_nofilter_DX, 448 SI8_opaque_D32_nofilter_DX,
449 SI8_alpha_D32_nofilter_DX, 449 SI8_alpha_D32_nofilter_DX,
450 SI8_opaque_D32_filter_DXDY, 450 SI8_opaque_D32_filter_DXDY,
451 SI8_alpha_D32_filter_DXDY, 451 SI8_alpha_D32_filter_DXDY,
452 SI8_opaque_D32_filter_DX, 452 SI8_opaque_D32_filter_DX,
453 SI8_alpha_D32_filter_DX, 453 SI8_alpha_D32_filter_DX,
454 454
455 S4444_opaque_D32_nofilter_DXDY, 455 S4444_opaque_D32_nofilter_DXDY,
456 S4444_alpha_D32_nofilter_DXDY, 456 S4444_alpha_D32_nofilter_DXDY,
457 S4444_opaque_D32_nofilter_DX, 457 S4444_opaque_D32_nofilter_DX,
458 S4444_alpha_D32_nofilter_DX, 458 S4444_alpha_D32_nofilter_DX,
459 S4444_opaque_D32_filter_DXDY, 459 S4444_opaque_D32_filter_DXDY,
460 S4444_alpha_D32_filter_DXDY, 460 S4444_alpha_D32_filter_DXDY,
461 S4444_opaque_D32_filter_DX, 461 S4444_opaque_D32_filter_DX,
462 S4444_alpha_D32_filter_DX, 462 S4444_alpha_D32_filter_DX,
463 463
464 // A8 treats alpha/opauqe the same (equally efficient) 464 // A8 treats alpha/opauqe the same (equally efficient)
465 SA8_alpha_D32_nofilter_DXDY, 465 SA8_alpha_D32_nofilter_DXDY,
466 SA8_alpha_D32_nofilter_DXDY, 466 SA8_alpha_D32_nofilter_DXDY,
467 SA8_alpha_D32_nofilter_DX, 467 SA8_alpha_D32_nofilter_DX,
468 SA8_alpha_D32_nofilter_DX, 468 SA8_alpha_D32_nofilter_DX,
469 SA8_alpha_D32_filter_DXDY, 469 SA8_alpha_D32_filter_DXDY,
470 SA8_alpha_D32_filter_DXDY, 470 SA8_alpha_D32_filter_DXDY,
471 SA8_alpha_D32_filter_DX, 471 SA8_alpha_D32_filter_DX,
472 SA8_alpha_D32_filter_DX 472 SA8_alpha_D32_filter_DX
473 }; 473 };
474 474
475 static const SampleProc16 gSample16[] = { 475 static const SampleProc16 gSample16[] = {
476 S32_D16_nofilter_DXDY, 476 S32_D16_nofilter_DXDY,
477 S32_D16_nofilter_DX, 477 S32_D16_nofilter_DX,
478 S32_D16_filter_DXDY, 478 S32_D16_filter_DXDY,
479 S32_D16_filter_DX, 479 S32_D16_filter_DX,
480 480
481 S16_D16_nofilter_DXDY, 481 S16_D16_nofilter_DXDY,
482 S16_D16_nofilter_DX, 482 S16_D16_nofilter_DX,
483 S16_D16_filter_DXDY, 483 S16_D16_filter_DXDY,
484 S16_D16_filter_DX, 484 S16_D16_filter_DX,
485 485
486 SI8_D16_nofilter_DXDY, 486 SI8_D16_nofilter_DXDY,
487 SI8_D16_nofilter_DX, 487 SI8_D16_nofilter_DX,
488 SI8_D16_filter_DXDY, 488 SI8_D16_filter_DXDY,
489 SI8_D16_filter_DX, 489 SI8_D16_filter_DX,
490 490
491 // Don't support 4444 -> 565 491 // Don't support 4444 -> 565
492 NULL, NULL, NULL, NULL, 492 NULL, NULL, NULL, NULL,
493 // Don't support A8 -> 565 493 // Don't support A8 -> 565
494 NULL, NULL, NULL, NULL 494 NULL, NULL, NULL, NULL
495 }; 495 };
496 496
497 fSampleProc32 = gSample32[index]; 497 fSampleProc32 = gSample32[index];
498 index >>= 1; // shift away any opaque/alpha distinction 498 index >>= 1; // shift away any opaque/alpha distinction
499 fSampleProc16 = gSample16[index]; 499 fSampleProc16 = gSample16[index];
500 500
501 // our special-case shaderprocs 501 // our special-case shaderprocs
502 if (S16_D16_filter_DX == fSampleProc16) { 502 if (S16_D16_filter_DX == fSampleProc16) {
503 if (clamp_clamp) { 503 if (clamp_clamp) {
504 fShaderProc16 = Clamp_S16_D16_filter_DX_shaderproc; 504 fShaderProc16 = Clamp_S16_D16_filter_DX_shaderproc;
505 } else if (SkShader::kRepeat_TileMode == fTileModeX && 505 } else if (SkShader::kRepeat_TileMode == fTileModeX &&
506 SkShader::kRepeat_TileMode == fTileModeY) { 506 SkShader::kRepeat_TileMode == fTileModeY) {
507 fShaderProc16 = Repeat_S16_D16_filter_DX_shaderproc; 507 fShaderProc16 = Repeat_S16_D16_filter_DX_shaderproc;
508 } 508 }
509 } 509 }
510 return true; 510 return true;
511 } 511 }
512 512
OLDNEW
« no previous file with comments | « src/core/SkBitmapProcState.h ('k') | src/core/SkBitmapProcState_matrix.h » ('j') | no next file with comments »

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b