summaryrefslogtreecommitdiff
path: root/core/src/fxge/skia/fx_skia_blitter_new.h
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/fxge/skia/fx_skia_blitter_new.h')
-rw-r--r--core/src/fxge/skia/fx_skia_blitter_new.h225
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