diff options
Diffstat (limited to 'src/core/SkBitmapProcState.h')
-rw-r--r-- | src/core/SkBitmapProcState.h | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/core/SkBitmapProcState.h b/src/core/SkBitmapProcState.h index a644dd1e02..3c8e346807 100644 --- a/src/core/SkBitmapProcState.h +++ b/src/core/SkBitmapProcState.h @@ -31,6 +31,7 @@ #endif class SkPaint; +class SkConvolutionProcs; struct SkBitmapProcState { @@ -59,7 +60,7 @@ struct SkBitmapProcState { const uint32_t[], int count, uint16_t colors[]); - + typedef U16CPU (*FixedTileProc)(SkFixed); // returns 0..0xFFFF typedef U16CPU (*FixedTileLowBitsProc)(SkFixed, int); // returns 0..0xF typedef U16CPU (*IntTileProc)(int value, int count); // returns 0..count-1 @@ -78,6 +79,8 @@ struct SkBitmapProcState { IntTileProc fIntTileProcY; // chooseProcs SkFixed fFilterOneX; SkFixed fFilterOneY; + + SkConvolutionProcs* fConvolutionProcs; // possiblyScaleImage SkPMColor fPaintPMColor; // chooseProcs - A8 config SkFixed fInvSx; // chooseProcs @@ -113,7 +116,12 @@ struct SkBitmapProcState { implementation can do nothing (see SkBitmapProcState_opts_none.cpp) */ void platformProcs(); - + + /** Platforms can also optionally overwrite the convolution functions + if we have SIMD versions of them. + */ + + void platformConvolutionProcs(); /** Given the byte size of the index buffer to be passed to the matrix proc, return the maximum number of resulting pixels that can be computed @@ -160,7 +168,7 @@ private: void possiblyScaleImage(); - SkBitmapFilter *fBitmapFilter; + SkBitmapFilter* fBitmapFilter; ShaderProc32 chooseBitmapFilterProc(); @@ -218,8 +226,6 @@ void ClampX_ClampY_nofilter_affine(const SkBitmapProcState& s, void S32_D16_filter_DX(const SkBitmapProcState& s, const uint32_t* xy, int count, uint16_t* colors); -void highQualityFilter_ScaleOnly(const SkBitmapProcState &s, int x, int y, - SkPMColor *SK_RESTRICT colors, int count); void highQualityFilter(const SkBitmapProcState &s, int x, int y, SkPMColor *SK_RESTRICT colors, int count); |