diff options
Diffstat (limited to 'core/src/fxge/skia/fx_skia_blitter_new.h')
-rw-r--r-- | core/src/fxge/skia/fx_skia_blitter_new.h | 225 |
1 files changed, 225 insertions, 0 deletions
diff --git a/core/src/fxge/skia/fx_skia_blitter_new.h b/core/src/fxge/skia/fx_skia_blitter_new.h new file mode 100644 index 0000000000..6f88065d99 --- /dev/null +++ b/core/src/fxge/skia/fx_skia_blitter_new.h @@ -0,0 +1,225 @@ +#ifndef _FX_SKIABLITTER_H_ +#define _FX_SKIABLITTER_H_ +//#define _SKIA_SUPPORT_ +#if defined(_SKIA_SUPPORT_) +class CFX_SkiaRenderer : public SkBlitter, public CFX_Object +{ +protected: + int m_Alpha, + m_Red, // Or the complementary-color, Cyan + m_Green, // Magenta + m_Blue, // Yellow + m_Gray; // Black + FX_DWORD m_Color; // FX_ARGB or FX_CMYK + FX_BOOL m_bFullCover; + int m_ProcessFilter; + FX_BOOL m_bRgbByteOrder; + + FX_RECT m_ClipBox; + CFX_DIBitmap* m_pDevice; + CFX_DIBitmap* m_pOriDevice; + const CFX_ClipRgn* m_pClipRgn; + const CFX_DIBitmap* m_pClipMask; + + FX_LPBYTE m_pDestScan; + FX_LPBYTE m_pDestExtraAlphaScan; + FX_LPBYTE m_pOriScan; + FX_LPBYTE m_pClipScan; + + void (CFX_SkiaRenderer::*composite_span)(FX_LPBYTE,FX_LPBYTE,int,int,int,int,FX_BYTE,int,int,int,FX_LPBYTE,FX_LPBYTE); +public: + + //-------------------------------------------------------------------- + virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]); + virtual void blitH(int x, int y, int width); + virtual void blitV(int x, int y, int height, SkAlpha alpha); + virtual void blitRect(int x, int y, int width, int height); + virtual void blitAntiRect(int x, int y, int width, int height, SkAlpha leftAlpha, SkAlpha rightAlpha); + + /*------------------------------------------------------------------------------------------------------*/ + // A general alpha merge function (with clipping mask). Gray device. + void CompositeSpan1bpp_0(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + void CompositeSpan1bpp_1(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + void CompositeSpan1bpp_4(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + void CompositeSpan1bpp_5(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + void CompositeSpan1bpp_8(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + void CompositeSpan1bpp_9(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + void CompositeSpan1bpp_12(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + void CompositeSpan1bpp_13(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + + /*--------------------------------------------------------------------------------------------------------*/ + + // A general alpha merge function (with clipping mask). Gray device. + void CompositeSpanGray_2(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + + void CompositeSpanGray_3(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + + void CompositeSpanGray_6(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + + void CompositeSpanGray_7(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + + void CompositeSpanGray_10(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + + + void CompositeSpanGray_11(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + + void CompositeSpanGray_14(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + + void CompositeSpanGray_15(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + + /*--------------------------------------------------------------------------------------------------------*/ + void CompositeSpanARGB_2(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + + void CompositeSpanARGB_3(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + + + void CompositeSpanARGB_6(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + + + void CompositeSpanARGB_7(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + // ... + /*--------------------------------------------------------------------------------------------------------*/ + void CompositeSpanRGB32_2(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + void CompositeSpanRGB32_3(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + void CompositeSpanRGB32_6(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + void CompositeSpanRGB32_7(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + + /*---------------------------------------------------------------------------------------------------------*/ + + void CompositeSpanRGB24_2(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + void CompositeSpanRGB24_3(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + void CompositeSpanRGB24_6(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + void CompositeSpanRGB24_7(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + void CompositeSpanRGB24_10(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + void CompositeSpanRGB24_11(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + void CompositeSpanRGB24_14(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + void CompositeSpanRGB24_15(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + + /*----------------------------------------------------------------------------------------------------------*/ + + // A general alpha merge function (with clipping mask). Cmyka/Cmyk device. + void CompositeSpanCMYK(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp, + int span_left, int span_len, int span_top, FX_BYTE cover_scan, + int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, + FX_LPBYTE dest_extra_alpha_scan); + + + //-------------------------------------------------------------------- + FX_BOOL Init(CFX_DIBitmap* pDevice, CFX_DIBitmap* pOriDevice, const CFX_ClipRgn* pClipRgn, FX_DWORD color, FX_BOOL bFullCover, FX_BOOL bRgbByteOrder, + int alpha_flag = 0, void* pIccTransform = NULL); //The alpha flag must be fill_flag if exist. +}; +class CFX_SkiaA8Renderer : public SkBlitter, public CFX_Object +{ +public: + //-------------------------------------------------------------------- + virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]); + virtual void blitH(int x, int y, int width); + virtual void blitV(int x, int y, int height, SkAlpha alpha); + virtual void blitRect(int x, int y, int width, int height); + virtual void blitAntiRect(int x, int y, int width, int height, SkAlpha leftAlpha, SkAlpha rightAlpha); + //-------------------------------------------------------------------- + FX_BOOL Init(CFX_DIBitmap* pDevice, int Left, int Top); + CFX_DIBitmap* m_pDevice; + int m_Left; + int m_Top; + int m_dstWidth; + int m_dstHeight; +}; +#endif +#endif
\ No newline at end of file |