SkBitmapProcState_sample.h revision 46402f8ee247238d734cdd90b8770caa46862a06
10910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkUtils.h" 20910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 30910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#if DSTSIZE==32 40910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project #define DSTTYPE SkPMColor 50910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#elif DSTSIZE==16 60910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project #define DSTTYPE uint16_t 70910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#else 80910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project #error "need DSTSIZE to be 32 or 16" 90910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif 100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#if (DSTSIZE == 32) 120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project #define BITMAPPROC_MEMSET(ptr, value, n) sk_memset32(ptr, value, n) 130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#elif (DSTSIZE == 16) 140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project #define BITMAPPROC_MEMSET(ptr, value, n) sk_memset16(ptr, value, n) 150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#else 160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project #error "unsupported DSTSIZE" 170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif 180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectstatic void MAKENAME(_nofilter_DXDY)(const SkBitmapProcState& s, 200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project const uint32_t* SK_RESTRICT xy, 210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project int count, DSTTYPE* SK_RESTRICT colors) { 220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(count > 0 && colors != NULL); 230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(s.fDoFilter == false); 240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkDEBUGCODE(CHECKSTATE(s);) 250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifdef PREAMBLE 270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project PREAMBLE(s); 280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif 290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project const char* SK_RESTRICT srcAddr = (const char*)s.fBitmap->getPixels(); 300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project int i, rb = s.fBitmap->rowBytes(); 310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project uint32_t XY; 330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SRCTYPE src; 340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project for (i = (count >> 1); i > 0; --i) { 360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project XY = *xy++; 370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT((XY >> 16) < (unsigned)s.fBitmap->height() && 380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project (XY & 0xFFFF) < (unsigned)s.fBitmap->width()); 390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project src = ((const SRCTYPE*)(srcAddr + (XY >> 16) * rb))[XY & 0xFFFF]; 400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project *colors++ = RETURNDST(src); 410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project XY = *xy++; 430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT((XY >> 16) < (unsigned)s.fBitmap->height() && 440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project (XY & 0xFFFF) < (unsigned)s.fBitmap->width()); 450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project src = ((const SRCTYPE*)(srcAddr + (XY >> 16) * rb))[XY & 0xFFFF]; 460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project *colors++ = RETURNDST(src); 470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } 480910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project if (count & 1) { 490910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project XY = *xy++; 500910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT((XY >> 16) < (unsigned)s.fBitmap->height() && 510910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project (XY & 0xFFFF) < (unsigned)s.fBitmap->width()); 520910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project src = ((const SRCTYPE*)(srcAddr + (XY >> 16) * rb))[XY & 0xFFFF]; 530910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project *colors++ = RETURNDST(src); 540910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } 550910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 560910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifdef POSTAMBLE 570910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project POSTAMBLE(s); 580910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif 590910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project} 600910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 610910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectstatic void MAKENAME(_nofilter_DX)(const SkBitmapProcState& s, 620910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project const uint32_t* SK_RESTRICT xy, 630910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project int count, DSTTYPE* SK_RESTRICT colors) { 640910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(count > 0 && colors != NULL); 650910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(s.fInvType <= (SkMatrix::kTranslate_Mask | SkMatrix::kScale_Mask)); 660910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(s.fDoFilter == false); 670910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkDEBUGCODE(CHECKSTATE(s);) 680910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 690910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifdef PREAMBLE 700910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project PREAMBLE(s); 710910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif 720910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project const SRCTYPE* SK_RESTRICT srcAddr = (const SRCTYPE*)s.fBitmap->getPixels(); 730910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 740910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project // buffer is y32, x16, x16, x16, x16, x16 750910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project // bump srcAddr to the proper row, since we're told Y never changes 760910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT((unsigned)xy[0] < (unsigned)s.fBitmap->height()); 770910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project srcAddr = (const SRCTYPE*)((const char*)srcAddr + 780910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project xy[0] * s.fBitmap->rowBytes()); 7946402f8ee247238d734cdd90b8770caa46862a06Mike Reed xy += 1; 800910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 810910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SRCTYPE src; 820910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 830910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project if (1 == s.fBitmap->width()) { 840910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project src = srcAddr[0]; 850910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project DSTTYPE dstValue = RETURNDST(src); 860910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project BITMAPPROC_MEMSET(colors, dstValue, count); 870910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } else { 880910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project int i; 890910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project for (i = (count >> 2); i > 0; --i) { 9046402f8ee247238d734cdd90b8770caa46862a06Mike Reed uint32_t xx0 = *xy++; 9146402f8ee247238d734cdd90b8770caa46862a06Mike Reed uint32_t xx1 = *xy++; 9246402f8ee247238d734cdd90b8770caa46862a06Mike Reed SRCTYPE x0 = srcAddr[UNPACK_PRIMARY_SHORT(xx0)]; 9346402f8ee247238d734cdd90b8770caa46862a06Mike Reed SRCTYPE x1 = srcAddr[UNPACK_SECONDARY_SHORT(xx0)]; 9446402f8ee247238d734cdd90b8770caa46862a06Mike Reed SRCTYPE x2 = srcAddr[UNPACK_PRIMARY_SHORT(xx1)]; 9546402f8ee247238d734cdd90b8770caa46862a06Mike Reed SRCTYPE x3 = srcAddr[UNPACK_SECONDARY_SHORT(xx1)]; 960910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 9746402f8ee247238d734cdd90b8770caa46862a06Mike Reed *colors++ = RETURNDST(x0); 9846402f8ee247238d734cdd90b8770caa46862a06Mike Reed *colors++ = RETURNDST(x1); 9946402f8ee247238d734cdd90b8770caa46862a06Mike Reed *colors++ = RETURNDST(x2); 10046402f8ee247238d734cdd90b8770caa46862a06Mike Reed *colors++ = RETURNDST(x3); 1010910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } 10246402f8ee247238d734cdd90b8770caa46862a06Mike Reed const uint16_t* SK_RESTRICT xx = (const uint16_t*)(xy); 1030910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project for (i = (count & 3); i > 0; --i) { 1040910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(*xx < (unsigned)s.fBitmap->width()); 1050910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project src = srcAddr[*xx++]; *colors++ = RETURNDST(src); 1060910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } 1070910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } 1080910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 1090910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifdef POSTAMBLE 1100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project POSTAMBLE(s); 1110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif 1120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project} 1130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 1140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project/////////////////////////////////////////////////////////////////////////////// 1150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 1160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectstatic void MAKENAME(_filter_DX)(const SkBitmapProcState& s, 1170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project const uint32_t* SK_RESTRICT xy, 1180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project int count, DSTTYPE* SK_RESTRICT colors) { 1190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(count > 0 && colors != NULL); 1200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(s.fDoFilter); 1210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkDEBUGCODE(CHECKSTATE(s);) 1220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 1230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifdef PREAMBLE 1240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project PREAMBLE(s); 1250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif 1260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project const char* SK_RESTRICT srcAddr = (const char*)s.fBitmap->getPixels(); 1270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project unsigned rb = s.fBitmap->rowBytes(); 1280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project unsigned subY; 1290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project const SRCTYPE* SK_RESTRICT row0; 1300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project const SRCTYPE* SK_RESTRICT row1; 1310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 1320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project // setup row ptrs and update proc_table 1330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project { 1340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project uint32_t XY = *xy++; 1350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project unsigned y0 = XY >> 14; 1360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project row0 = (const SRCTYPE*)(srcAddr + (y0 >> 4) * rb); 1370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project row1 = (const SRCTYPE*)(srcAddr + (XY & 0x3FFF) * rb); 1380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project subY = y0 & 0xF; 1390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } 1400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 1410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project do { 1420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project uint32_t XX = *xy++; // x0:14 | 4 | x1:14 1430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project unsigned x0 = XX >> 14; 1440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project unsigned x1 = XX & 0x3FFF; 1450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project unsigned subX = x0 & 0xF; 1460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project x0 >>= 4; 1470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 14846402f8ee247238d734cdd90b8770caa46862a06Mike Reed FILTER_PROC(subX, subY, 14946402f8ee247238d734cdd90b8770caa46862a06Mike Reed SRC_TO_FILTER(row0[x0]), 15046402f8ee247238d734cdd90b8770caa46862a06Mike Reed SRC_TO_FILTER(row0[x1]), 15146402f8ee247238d734cdd90b8770caa46862a06Mike Reed SRC_TO_FILTER(row1[x0]), 15246402f8ee247238d734cdd90b8770caa46862a06Mike Reed SRC_TO_FILTER(row1[x1]), 15346402f8ee247238d734cdd90b8770caa46862a06Mike Reed colors); 15446402f8ee247238d734cdd90b8770caa46862a06Mike Reed colors += 1; 1550910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 1560910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } while (--count != 0); 1570910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 1580910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifdef POSTAMBLE 1590910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project POSTAMBLE(s); 1600910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif 1610910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project} 1620910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectstatic void MAKENAME(_filter_DXDY)(const SkBitmapProcState& s, 1630910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project const uint32_t* SK_RESTRICT xy, 1640910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project int count, DSTTYPE* SK_RESTRICT colors) { 1650910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(count > 0 && colors != NULL); 1660910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(s.fDoFilter); 1670910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkDEBUGCODE(CHECKSTATE(s);) 1680910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 1690910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifdef PREAMBLE 1700910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project PREAMBLE(s); 1710910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif 1720910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project const char* SK_RESTRICT srcAddr = (const char*)s.fBitmap->getPixels(); 1730910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project int rb = s.fBitmap->rowBytes(); 1740910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 1750910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project do { 1760910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project uint32_t data = *xy++; 1770910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project unsigned y0 = data >> 14; 1780910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project unsigned y1 = data & 0x3FFF; 1790910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project unsigned subY = y0 & 0xF; 1800910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project y0 >>= 4; 1810910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 1820910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project data = *xy++; 1830910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project unsigned x0 = data >> 14; 1840910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project unsigned x1 = data & 0x3FFF; 1850910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project unsigned subX = x0 & 0xF; 1860910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project x0 >>= 4; 1870910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 1880910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project const SRCTYPE* SK_RESTRICT row0 = (const SRCTYPE*)(srcAddr + y0 * rb); 1890910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project const SRCTYPE* SK_RESTRICT row1 = (const SRCTYPE*)(srcAddr + y1 * rb); 1900910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 19146402f8ee247238d734cdd90b8770caa46862a06Mike Reed FILTER_PROC(subX, subY, 19246402f8ee247238d734cdd90b8770caa46862a06Mike Reed SRC_TO_FILTER(row0[x0]), 19346402f8ee247238d734cdd90b8770caa46862a06Mike Reed SRC_TO_FILTER(row0[x1]), 19446402f8ee247238d734cdd90b8770caa46862a06Mike Reed SRC_TO_FILTER(row1[x0]), 19546402f8ee247238d734cdd90b8770caa46862a06Mike Reed SRC_TO_FILTER(row1[x1]), 19646402f8ee247238d734cdd90b8770caa46862a06Mike Reed colors); 19746402f8ee247238d734cdd90b8770caa46862a06Mike Reed colors += 1; 1980910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } while (--count != 0); 1990910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 2000910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifdef POSTAMBLE 2010910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project POSTAMBLE(s); 2020910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif 2030910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project} 2040910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 2050910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#undef MAKENAME 2060910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#undef DSTSIZE 2070910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#undef DSTTYPE 2080910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#undef SRCTYPE 2090910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#undef CHECKSTATE 2100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#undef RETURNDST 2110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#undef SRC_TO_FILTER 2120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#undef FILTER_TO_DST 2130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 2140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifdef PREAMBLE 2150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project #undef PREAMBLE 2160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif 2170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifdef POSTAMBLE 2180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project #undef POSTAMBLE 2190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif 2200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 2210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#undef FILTER_PROC_TYPE 2220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#undef GET_FILTER_TABLE 2230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#undef GET_FILTER_ROW 2240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#undef GET_FILTER_ROW_PROC 2250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#undef GET_FILTER_PROC 2260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#undef BITMAPPROC_MEMSET 227