SkBitmapProcState.h revision fa1bd5f86ceea6cfa8303594730125ad2853d87b
1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 28a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com/* 3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2007 The Android Open Source Project 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be 6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file. 7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */ 8ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 98a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifndef SkBitmapProcState_DEFINED 118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#define SkBitmapProcState_DEFINED 128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkBitmap.h" 14b088947f27496a9b9dc48a7cfb170f9d59589825humper@google.com#include "SkBitmapFilter.h" 158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkMatrix.h" 168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 1777613a5038ee73afa1ba245effea05c1cc9db1d4reed@google.com#define FractionalInt_IS_64BIT 184bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com 194bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com#ifdef FractionalInt_IS_64BIT 204bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com typedef SkFixed48 SkFractionalInt; 214bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com #define SkScalarToFractionalInt(x) SkScalarToFixed48(x) 224bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com #define SkFractionalIntToFixed(x) SkFixed48ToFixed(x) 23411215ae2b9a36ff6e262f77d7fb5071cc084f00reed@google.com #define SkFixedToFractionalInt(x) SkFixedToFixed48(x) 244bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com #define SkFractionalIntToInt(x) SkFixed48ToInt(x) 254bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com#else 264bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com typedef SkFixed SkFractionalInt; 274bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com #define SkScalarToFractionalInt(x) SkScalarToFixed(x) 284bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com #define SkFractionalIntToFixed(x) (x) 29411215ae2b9a36ff6e262f77d7fb5071cc084f00reed@google.com #define SkFixedToFractionalInt(x) (x) 304bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com #define SkFractionalIntToInt(x) ((x) >> 16) 314bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com#endif 324bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com 338a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkPaint; 348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comstruct SkBitmapProcState { 36fa1bd5f86ceea6cfa8303594730125ad2853d87bskia.committer@gmail.com 37e81d1bce7e26f046b8bcdef7fcefe84eaa806a56commit-bot@chromium.org SkBitmapProcState(): fBitmapFilter(NULL) {} 38e81d1bce7e26f046b8bcdef7fcefe84eaa806a56commit-bot@chromium.org ~SkBitmapProcState() { 39e81d1bce7e26f046b8bcdef7fcefe84eaa806a56commit-bot@chromium.org SkDELETE(fBitmapFilter); 40e81d1bce7e26f046b8bcdef7fcefe84eaa806a56commit-bot@chromium.org } 41e81d1bce7e26f046b8bcdef7fcefe84eaa806a56commit-bot@chromium.org 427a99eb1c63d4327d352af09ea59f039f014e4028reed@android.com typedef void (*ShaderProc32)(const SkBitmapProcState&, int x, int y, 437a99eb1c63d4327d352af09ea59f039f014e4028reed@android.com SkPMColor[], int count); 447a99eb1c63d4327d352af09ea59f039f014e4028reed@android.com 457a99eb1c63d4327d352af09ea59f039f014e4028reed@android.com typedef void (*ShaderProc16)(const SkBitmapProcState&, int x, int y, 467a99eb1c63d4327d352af09ea59f039f014e4028reed@android.com uint16_t[], int count); 477a99eb1c63d4327d352af09ea59f039f014e4028reed@android.com 488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com typedef void (*MatrixProc)(const SkBitmapProcState&, 498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com uint32_t bitmapXY[], 508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com int count, 518a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com int x, int y); 52fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com 538a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com typedef void (*SampleProc32)(const SkBitmapProcState&, 548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com const uint32_t[], 558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com int count, 568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkPMColor colors[]); 578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com typedef void (*SampleProc16)(const SkBitmapProcState&, 598a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com const uint32_t[], 608a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com int count, 618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com uint16_t colors[]); 62fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com 638a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com typedef U16CPU (*FixedTileProc)(SkFixed); // returns 0..0xFFFF 64f444e8ccda8905a8ce16bac368e09f205786db31reed@google.com typedef U16CPU (*FixedTileLowBitsProc)(SkFixed, int); // returns 0..0xF 6507d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com typedef U16CPU (*IntTileProc)(int value, int count); // returns 0..count-1 667a99eb1c63d4327d352af09ea59f039f014e4028reed@android.com 67d64d8a905a044204c5960e29cdf8adf1f130edcehumper@google.com const SkBitmap* fBitmap; // chooseProcs - orig or scaled 68d64d8a905a044204c5960e29cdf8adf1f130edcehumper@google.com SkMatrix fInvMatrix; // chooseProcs 69eef375bcd602adb065c4eccc07bd811b83a71de8reed@android.com SkMatrix::MapXYProc fInvProc; // chooseProcs 70eef375bcd602adb065c4eccc07bd811b83a71de8reed@android.com 714bc0a9db18d58698057b8f38a6f21537aca4ddcfreed@google.com SkFractionalInt fInvSxFractionalInt; 72411215ae2b9a36ff6e262f77d7fb5071cc084f00reed@google.com SkFractionalInt fInvKyFractionalInt; 73fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com 748a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com FixedTileProc fTileProcX; // chooseProcs 758a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com FixedTileProc fTileProcY; // chooseProcs 76f444e8ccda8905a8ce16bac368e09f205786db31reed@google.com FixedTileLowBitsProc fTileLowBitsProcX; // chooseProcs 77f444e8ccda8905a8ce16bac368e09f205786db31reed@google.com FixedTileLowBitsProc fTileLowBitsProcY; // chooseProcs 7807d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com IntTileProc fIntTileProcY; // chooseProcs 798a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkFixed fFilterOneX; 808a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkFixed fFilterOneY; 818a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 828a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkPMColor fPaintPMColor; // chooseProcs - A8 config 83eef375bcd602adb065c4eccc07bd811b83a71de8reed@android.com SkFixed fInvSx; // chooseProcs 848a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkFixed fInvKy; // chooseProcs 858a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com uint16_t fAlphaScale; // chooseProcs 868a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com uint8_t fInvType; // chooseProcs 878a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com uint8_t fTileModeX; // CONSTRUCTOR 888a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com uint8_t fTileModeY; // CONSTRUCTOR 89fa1bd5f86ceea6cfa8303594730125ad2853d87bskia.committer@gmail.com 90fa1bd5f86ceea6cfa8303594730125ad2853d87bskia.committer@gmail.com enum { 91fa1bd5f86ceea6cfa8303594730125ad2853d87bskia.committer@gmail.com kNone_BitmapFilter, 92fa1bd5f86ceea6cfa8303594730125ad2853d87bskia.committer@gmail.com kBilerp_BitmapFilter, 93d64d8a905a044204c5960e29cdf8adf1f130edcehumper@google.com kHQ_BitmapFilter 94d64d8a905a044204c5960e29cdf8adf1f130edcehumper@google.com } fFilterQuality; // chooseProcs 95d64d8a905a044204c5960e29cdf8adf1f130edcehumper@google.com 96d64d8a905a044204c5960e29cdf8adf1f130edcehumper@google.com /** The shader will let us know when we can release some of our resources 97d64d8a905a044204c5960e29cdf8adf1f130edcehumper@google.com * like scaled bitmaps. 98d64d8a905a044204c5960e29cdf8adf1f130edcehumper@google.com */ 99d64d8a905a044204c5960e29cdf8adf1f130edcehumper@google.com 100d64d8a905a044204c5960e29cdf8adf1f130edcehumper@google.com void endContext(); 1018a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 102c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com /** Platforms implement this, and can optionally overwrite only the 103c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com following fields: 104c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com 105c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com fShaderProc32 106c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com fShaderProc16 107c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com fMatrixProc 108c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com fSampleProc32 109c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com fSampleProc32 110c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com 111c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com They will already have valid function pointers, so a platform that does 112c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com not have an accelerated version can just leave that field as is. A valid 113c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com implementation can do nothing (see SkBitmapProcState_opts_none.cpp) 114c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com */ 115c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com void platformProcs(); 116c9a1d4b519c2db8e43e54fef068c46462d2f8a4breed@android.com 1174c69a064b4a7a77f4b4f2e77d8a35a80fc63987creed@google.com 118258cb228c636282a3e4f4ce87b1017498e207f33reed@android.com /** Given the byte size of the index buffer to be passed to the matrix proc, 119258cb228c636282a3e4f4ce87b1017498e207f33reed@android.com return the maximum number of resulting pixels that can be computed 120258cb228c636282a3e4f4ce87b1017498e207f33reed@android.com (i.e. the number of SkPMColor values to be written by the sample proc). 121258cb228c636282a3e4f4ce87b1017498e207f33reed@android.com This routine takes into account that filtering and scale-vs-affine 122258cb228c636282a3e4f4ce87b1017498e207f33reed@android.com affect the amount of buffer space needed. 123fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com 1244c128c4917acf25c2cc5d1bd22282a4e1bb53d96reed@android.com Only valid to call after chooseProcs (setContext) has been called. It is 1254c128c4917acf25c2cc5d1bd22282a4e1bb53d96reed@android.com safe to call this inside the shader's shadeSpan() method. 1264c128c4917acf25c2cc5d1bd22282a4e1bb53d96reed@android.com */ 1274c128c4917acf25c2cc5d1bd22282a4e1bb53d96reed@android.com int maxCountForBufferSize(size_t bufferSize) const; 1284c128c4917acf25c2cc5d1bd22282a4e1bb53d96reed@android.com 1299fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com // If a shader proc is present, then the corresponding matrix/sample procs 1309fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com // are ignored 1319fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com ShaderProc32 getShaderProc32() const { return fShaderProc32; } 1329fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com ShaderProc16 getShaderProc16() const { return fShaderProc16; } 1339e1ec1a52985cce9db3a0d0e8d448b82a32e70cbskia.committer@gmail.com 134b088947f27496a9b9dc48a7cfb170f9d59589825humper@google.com SkBitmapFilter* getBitmapFilter() const { return fBitmapFilter; } 1359fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com 1369fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com#ifdef SK_DEBUG 1379fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com MatrixProc getMatrixProc() const; 1389fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com#else 1399fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com MatrixProc getMatrixProc() const { return fMatrixProc; } 1409fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com#endif 1419fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com SampleProc32 getSampleProc32() const { return fSampleProc32; } 1429fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com SampleProc16 getSampleProc16() const { return fSampleProc16; } 1439fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com 1448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprivate: 145eef375bcd602adb065c4eccc07bd811b83a71de8reed@android.com friend class SkBitmapProcShader; 146eef375bcd602adb065c4eccc07bd811b83a71de8reed@android.com 1479fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com ShaderProc32 fShaderProc32; // chooseProcs 1489fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com ShaderProc16 fShaderProc16; // chooseProcs 1499fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com // These are used if the shaderproc is NULL 1509fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com MatrixProc fMatrixProc; // chooseProcs 1519fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com SampleProc32 fSampleProc32; // chooseProcs 1529fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com SampleProc16 fSampleProc16; // chooseProcs 153fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com 154eef375bcd602adb065c4eccc07bd811b83a71de8reed@android.com SkBitmap fOrigBitmap; // CONSTRUCTOR 155d64d8a905a044204c5960e29cdf8adf1f130edcehumper@google.com SkBitmap fScaledBitmap; // chooseProcs 156eef375bcd602adb065c4eccc07bd811b83a71de8reed@android.com 15707d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com MatrixProc chooseMatrixProc(bool trivial_matrix); 158eef375bcd602adb065c4eccc07bd811b83a71de8reed@android.com bool chooseProcs(const SkMatrix& inv, const SkPaint&); 1599a4c746a1f0f91a5be2708a4c2018dfe14f62e48reed@google.com ShaderProc32 chooseShaderProc32(); 160fa1bd5f86ceea6cfa8303594730125ad2853d87bskia.committer@gmail.com 161d64d8a905a044204c5960e29cdf8adf1f130edcehumper@google.com void possiblyScaleImage(); 1629e1ec1a52985cce9db3a0d0e8d448b82a32e70cbskia.committer@gmail.com 163b088947f27496a9b9dc48a7cfb170f9d59589825humper@google.com SkBitmapFilter *fBitmapFilter; 164b0a327e9390da5865d4c56db5e5259adc3380d37skia.committer@gmail.com 165d64d8a905a044204c5960e29cdf8adf1f130edcehumper@google.com ShaderProc32 chooseBitmapFilterProc(); 1663e2345a8d56cb76bc43e4421a3e9e3681ecd9ebaskia.committer@gmail.com 1676bb92bc0b52d31f3ded38927cdefbeb13a3df87areed@google.com // Return false if we failed to setup for fast translate (e.g. overflow) 1686bb92bc0b52d31f3ded38927cdefbeb13a3df87areed@google.com bool setupForTranslate(); 1699fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com 1709fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com#ifdef SK_DEBUG 1719fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com static void DebugMatrixProc(const SkBitmapProcState&, 1729fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com uint32_t[], int count, int x, int y); 1739fe287bd07baa6d9e890b627c102bba562954f7dreed@google.com#endif 1748a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}; 1758a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 17607d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com/* Macros for packing and unpacking pairs of 16bit values in a 32bit uint. 17707d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com Used to allow access to a stream of uint16_t either one at a time, or 17807d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com 2 at a time by unpacking a uint32_t 17907d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com */ 18007d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com#ifdef SK_CPU_BENDIAN 18107d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com #define PACK_TWO_SHORTS(pri, sec) ((pri) << 16 | (sec)) 18207d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com #define UNPACK_PRIMARY_SHORT(packed) ((uint32_t)(packed) >> 16) 18307d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com #define UNPACK_SECONDARY_SHORT(packed) ((packed) & 0xFFFF) 18407d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com#else 18507d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com #define PACK_TWO_SHORTS(pri, sec) ((pri) | ((sec) << 16)) 18607d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com #define UNPACK_PRIMARY_SHORT(packed) ((packed) & 0xFFFF) 18707d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com #define UNPACK_SECONDARY_SHORT(packed) ((uint32_t)(packed) >> 16) 18807d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com#endif 18907d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com 19007d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com#ifdef SK_DEBUG 19107d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com static inline uint32_t pack_two_shorts(U16CPU pri, U16CPU sec) { 19207d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com SkASSERT((uint16_t)pri == pri); 19307d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com SkASSERT((uint16_t)sec == sec); 19407d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com return PACK_TWO_SHORTS(pri, sec); 19507d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com } 19607d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com#else 19707d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com #define pack_two_shorts(pri, sec) PACK_TWO_SHORTS(pri, sec) 19807d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com#endif 19907d1f008b365e94ef7c7347be19a03d00bd36805reed@android.com 200dc7de745dd142cdc00ffed7963ebb030a0506f72senorblanco@chromium.org// These functions are generated via macros, but are exposed here so that 201dc7de745dd142cdc00ffed7963ebb030a0506f72senorblanco@chromium.org// platformProcs may test for them by name. 202dc7de745dd142cdc00ffed7963ebb030a0506f72senorblanco@chromium.orgvoid S32_opaque_D32_filter_DX(const SkBitmapProcState& s, const uint32_t xy[], 203dc7de745dd142cdc00ffed7963ebb030a0506f72senorblanco@chromium.org int count, SkPMColor colors[]); 204f3f0bd71b81097f6c640e7f60805de7eacbc98c6senorblanco@chromium.orgvoid S32_alpha_D32_filter_DX(const SkBitmapProcState& s, const uint32_t xy[], 205f3f0bd71b81097f6c640e7f60805de7eacbc98c6senorblanco@chromium.org int count, SkPMColor colors[]); 206fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.comvoid S32_opaque_D32_filter_DXDY(const SkBitmapProcState& s, 207fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com const uint32_t xy[], int count, SkPMColor colors[]); 208fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.comvoid S32_alpha_D32_filter_DXDY(const SkBitmapProcState& s, 209ae29b88deff836d0768f26c5cd76744f39dc5887tomhudson@google.com const uint32_t xy[], int count, SkPMColor colors[]); 21006a7313430728b18f2ed92f14b189f3320fb8d13tomhudson@google.comvoid ClampX_ClampY_filter_scale(const SkBitmapProcState& s, uint32_t xy[], 21106a7313430728b18f2ed92f14b189f3320fb8d13tomhudson@google.com int count, int x, int y); 21206a7313430728b18f2ed92f14b189f3320fb8d13tomhudson@google.comvoid ClampX_ClampY_nofilter_scale(const SkBitmapProcState& s, uint32_t xy[], 21306a7313430728b18f2ed92f14b189f3320fb8d13tomhudson@google.com int count, int x, int y); 2145efaf268931d01498f4f1af63c556d811e5d5797tomhudson@google.comvoid ClampX_ClampY_filter_affine(const SkBitmapProcState& s, 2155efaf268931d01498f4f1af63c556d811e5d5797tomhudson@google.com uint32_t xy[], int count, int x, int y); 2165efaf268931d01498f4f1af63c556d811e5d5797tomhudson@google.comvoid ClampX_ClampY_nofilter_affine(const SkBitmapProcState& s, 2175efaf268931d01498f4f1af63c556d811e5d5797tomhudson@google.com uint32_t xy[], int count, int x, int y); 2187866228f06e402d37f8fcab70a688e1f34c1d27breed@google.comvoid S32_D16_filter_DX(const SkBitmapProcState& s, 2197866228f06e402d37f8fcab70a688e1f34c1d27breed@google.com const uint32_t* xy, int count, uint16_t* colors); 220dc7de745dd142cdc00ffed7963ebb030a0506f72senorblanco@chromium.org 221b088947f27496a9b9dc48a7cfb170f9d59589825humper@google.comvoid highQualityFilter_ScaleOnly(const SkBitmapProcState &s, int x, int y, 222b088947f27496a9b9dc48a7cfb170f9d59589825humper@google.com SkPMColor *SK_RESTRICT colors, int count); 223b088947f27496a9b9dc48a7cfb170f9d59589825humper@google.comvoid highQualityFilter(const SkBitmapProcState &s, int x, int y, 224b088947f27496a9b9dc48a7cfb170f9d59589825humper@google.com SkPMColor *SK_RESTRICT colors, int count); 2259e1ec1a52985cce9db3a0d0e8d448b82a32e70cbskia.committer@gmail.com 226b088947f27496a9b9dc48a7cfb170f9d59589825humper@google.com 2278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif 228