Bring back the Skia files from the old repo.
[pdfium.git] / core / src / fxge / skia / fx_skia_blitter_new.h
1 #ifndef _FX_SKIABLITTER_H_
2 #define _FX_SKIABLITTER_H_
3 //#define _SKIA_SUPPORT_
4 #if defined(_SKIA_SUPPORT_)
5 class CFX_SkiaRenderer : public SkBlitter, public CFX_Object
6 {
7 protected:
8         int                     m_Alpha, 
9                                 m_Red,          // Or the complementary-color, Cyan
10                                 m_Green,        // Magenta
11                                 m_Blue,         // Yellow
12                                 m_Gray;         // Black
13         FX_DWORD        m_Color;        // FX_ARGB or FX_CMYK
14         FX_BOOL         m_bFullCover;
15         int                     m_ProcessFilter;
16         FX_BOOL     m_bRgbByteOrder;
17         
18         FX_RECT                         m_ClipBox;
19         CFX_DIBitmap*           m_pDevice;
20         CFX_DIBitmap*           m_pOriDevice;
21         const CFX_ClipRgn*      m_pClipRgn;
22         const CFX_DIBitmap*     m_pClipMask;
23
24         FX_LPBYTE m_pDestScan;
25         FX_LPBYTE m_pDestExtraAlphaScan;
26         FX_LPBYTE m_pOriScan;
27         FX_LPBYTE m_pClipScan;
28
29         void (CFX_SkiaRenderer::*composite_span)(FX_LPBYTE,FX_LPBYTE,int,int,int,int,FX_BYTE,int,int,int,FX_LPBYTE,FX_LPBYTE);
30 public:
31     
32     //--------------------------------------------------------------------
33     virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]);
34         virtual void blitH(int x, int y, int width); 
35         virtual void blitV(int x, int y, int height, SkAlpha alpha);
36         virtual void blitRect(int x, int y, int width, int height);
37         virtual void blitAntiRect(int x, int y, int width, int height, SkAlpha leftAlpha, SkAlpha rightAlpha);
38         
39         /*------------------------------------------------------------------------------------------------------*/
40         // A general alpha merge function (with clipping mask). Gray device.
41         void CompositeSpan1bpp_0(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
42                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
43                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
44                         FX_LPBYTE dest_extra_alpha_scan);
45         void CompositeSpan1bpp_1(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
46                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
47                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
48                         FX_LPBYTE dest_extra_alpha_scan);
49         void CompositeSpan1bpp_4(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
50                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
51                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
52                         FX_LPBYTE dest_extra_alpha_scan);
53         void CompositeSpan1bpp_5(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
54                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
55                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
56                         FX_LPBYTE dest_extra_alpha_scan);
57         void CompositeSpan1bpp_8(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
58                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
59                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
60                         FX_LPBYTE dest_extra_alpha_scan);
61         void CompositeSpan1bpp_9(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
62                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
63                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
64                         FX_LPBYTE dest_extra_alpha_scan);
65         void CompositeSpan1bpp_12(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
66                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
67                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
68                         FX_LPBYTE dest_extra_alpha_scan);
69         void CompositeSpan1bpp_13(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
70                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
71                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
72                         FX_LPBYTE dest_extra_alpha_scan);
73
74         /*--------------------------------------------------------------------------------------------------------*/
75         
76         // A general alpha merge function (with clipping mask). Gray device.
77         void CompositeSpanGray_2(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
78                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
79                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
80                         FX_LPBYTE dest_extra_alpha_scan);
81
82         void CompositeSpanGray_3(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
83                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
84                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
85                         FX_LPBYTE dest_extra_alpha_scan);
86
87         void CompositeSpanGray_6(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
88                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
89                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
90                         FX_LPBYTE dest_extra_alpha_scan);
91
92         void CompositeSpanGray_7(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
93                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
94                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
95                         FX_LPBYTE dest_extra_alpha_scan);
96
97         void CompositeSpanGray_10(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
98                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
99                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
100                         FX_LPBYTE dest_extra_alpha_scan);
101
102
103         void CompositeSpanGray_11(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
104                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
105                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
106                         FX_LPBYTE dest_extra_alpha_scan);
107
108         void CompositeSpanGray_14(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
109                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
110                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
111                         FX_LPBYTE dest_extra_alpha_scan);
112
113         void CompositeSpanGray_15(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
114                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
115                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
116                         FX_LPBYTE dest_extra_alpha_scan);
117
118         /*--------------------------------------------------------------------------------------------------------*/
119         void CompositeSpanARGB_2(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
120                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
121                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
122                         FX_LPBYTE dest_extra_alpha_scan);
123
124         void CompositeSpanARGB_3(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
125                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
126                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
127                         FX_LPBYTE dest_extra_alpha_scan);
128
129
130         void CompositeSpanARGB_6(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
131                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
132                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
133                         FX_LPBYTE dest_extra_alpha_scan);
134
135
136         void CompositeSpanARGB_7(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
137                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
138                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
139                         FX_LPBYTE dest_extra_alpha_scan);
140         // ...
141         /*--------------------------------------------------------------------------------------------------------*/
142         void CompositeSpanRGB32_2(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
143                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
144                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
145                         FX_LPBYTE dest_extra_alpha_scan);
146         void CompositeSpanRGB32_3(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
147                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
148                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
149                         FX_LPBYTE dest_extra_alpha_scan);
150         void CompositeSpanRGB32_6(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
151                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
152                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
153                         FX_LPBYTE dest_extra_alpha_scan);
154         void CompositeSpanRGB32_7(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
155                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
156                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
157                         FX_LPBYTE dest_extra_alpha_scan);
158         
159         /*---------------------------------------------------------------------------------------------------------*/
160
161         void CompositeSpanRGB24_2(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
162                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
163                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
164                         FX_LPBYTE dest_extra_alpha_scan);
165         void CompositeSpanRGB24_3(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
166                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
167                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
168                         FX_LPBYTE dest_extra_alpha_scan);
169         void CompositeSpanRGB24_6(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
170                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
171                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
172                         FX_LPBYTE dest_extra_alpha_scan);
173         void CompositeSpanRGB24_7(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
174                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
175                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
176                         FX_LPBYTE dest_extra_alpha_scan);
177         void CompositeSpanRGB24_10(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
178                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
179                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
180                         FX_LPBYTE dest_extra_alpha_scan);
181         void CompositeSpanRGB24_11(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
182                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
183                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
184                         FX_LPBYTE dest_extra_alpha_scan);
185         void CompositeSpanRGB24_14(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
186                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
187                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
188                         FX_LPBYTE dest_extra_alpha_scan);
189         void CompositeSpanRGB24_15(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
190                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
191                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
192                         FX_LPBYTE dest_extra_alpha_scan);
193
194         /*----------------------------------------------------------------------------------------------------------*/
195         
196         // A general alpha merge function (with clipping mask). Cmyka/Cmyk device.
197         void CompositeSpanCMYK(FX_LPBYTE dest_scan, FX_LPBYTE ori_scan,int Bpp,
198                         int span_left, int span_len, int span_top, FX_BYTE cover_scan, 
199                         int clip_top, int clip_left, int clip_right, FX_LPBYTE clip_scan, 
200                         FX_LPBYTE dest_extra_alpha_scan);
201    
202         
203         //--------------------------------------------------------------------
204         FX_BOOL Init(CFX_DIBitmap* pDevice, CFX_DIBitmap* pOriDevice, const CFX_ClipRgn* pClipRgn, FX_DWORD color, FX_BOOL bFullCover, FX_BOOL bRgbByteOrder, 
205                 int alpha_flag = 0, void* pIccTransform = NULL); //The alpha flag must be fill_flag if exist.
206 };
207 class CFX_SkiaA8Renderer : public SkBlitter, public CFX_Object
208 {
209 public:
210     //--------------------------------------------------------------------
211     virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]);
212         virtual void blitH(int x, int y, int width); 
213         virtual void blitV(int x, int y, int height, SkAlpha alpha);
214         virtual void blitRect(int x, int y, int width, int height);
215         virtual void blitAntiRect(int x, int y, int width, int height, SkAlpha leftAlpha, SkAlpha rightAlpha);
216         //--------------------------------------------------------------------
217         FX_BOOL Init(CFX_DIBitmap* pDevice, int Left, int Top);
218         CFX_DIBitmap* m_pDevice;
219         int m_Left;
220         int m_Top;
221         int m_dstWidth;
222         int m_dstHeight;
223 };
224 #endif
225 #endif