1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CORE_SRC_FXGE_SKIA_FX_SKIA_BLITTER_NEW_H_
6 #define CORE_SRC_FXGE_SKIA_FX_SKIA_BLITTER_NEW_H_
8 #if defined(_SKIA_SUPPORT_)
9 class CFX_SkiaRenderer : public SkBlitter
13 m_Red, // Or the complementary-color, Cyan
17 FX_DWORD m_Color; // FX_ARGB or FX_CMYK
20 FX_BOOL m_bRgbByteOrder;
23 CFX_DIBitmap* m_pDevice;
24 CFX_DIBitmap* m_pOriDevice;
25 const CFX_ClipRgn* m_pClipRgn;
26 const CFX_DIBitmap* m_pClipMask;
29 uint8_t* m_pDestExtraAlphaScan;
33 void (CFX_SkiaRenderer::*composite_span)(uint8_t*,uint8_t*,int,int,int,int,uint8_t,int,int,int,uint8_t*,uint8_t*);
36 //--------------------------------------------------------------------
37 virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]);
38 virtual void blitH(int x, int y, int width);
39 virtual void blitV(int x, int y, int height, SkAlpha alpha);
40 virtual void blitRect(int x, int y, int width, int height);
41 virtual void blitAntiRect(int x, int y, int width, int height, SkAlpha leftAlpha, SkAlpha rightAlpha);
43 /*------------------------------------------------------------------------------------------------------*/
44 // A general alpha merge function (with clipping mask). Gray device.
45 void CompositeSpan1bpp_0(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
46 int span_left, int span_len, int span_top, uint8_t cover_scan,
47 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
48 uint8_t* dest_extra_alpha_scan);
49 void CompositeSpan1bpp_1(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
50 int span_left, int span_len, int span_top, uint8_t cover_scan,
51 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
52 uint8_t* dest_extra_alpha_scan);
53 void CompositeSpan1bpp_4(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
54 int span_left, int span_len, int span_top, uint8_t cover_scan,
55 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
56 uint8_t* dest_extra_alpha_scan);
57 void CompositeSpan1bpp_5(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
58 int span_left, int span_len, int span_top, uint8_t cover_scan,
59 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
60 uint8_t* dest_extra_alpha_scan);
61 void CompositeSpan1bpp_8(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
62 int span_left, int span_len, int span_top, uint8_t cover_scan,
63 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
64 uint8_t* dest_extra_alpha_scan);
65 void CompositeSpan1bpp_9(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
66 int span_left, int span_len, int span_top, uint8_t cover_scan,
67 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
68 uint8_t* dest_extra_alpha_scan);
69 void CompositeSpan1bpp_12(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
70 int span_left, int span_len, int span_top, uint8_t cover_scan,
71 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
72 uint8_t* dest_extra_alpha_scan);
73 void CompositeSpan1bpp_13(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
74 int span_left, int span_len, int span_top, uint8_t cover_scan,
75 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
76 uint8_t* dest_extra_alpha_scan);
78 /*--------------------------------------------------------------------------------------------------------*/
80 // A general alpha merge function (with clipping mask). Gray device.
81 void CompositeSpanGray_2(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
82 int span_left, int span_len, int span_top, uint8_t cover_scan,
83 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
84 uint8_t* dest_extra_alpha_scan);
86 void CompositeSpanGray_3(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
87 int span_left, int span_len, int span_top, uint8_t cover_scan,
88 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
89 uint8_t* dest_extra_alpha_scan);
91 void CompositeSpanGray_6(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
92 int span_left, int span_len, int span_top, uint8_t cover_scan,
93 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
94 uint8_t* dest_extra_alpha_scan);
96 void CompositeSpanGray_7(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
97 int span_left, int span_len, int span_top, uint8_t cover_scan,
98 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
99 uint8_t* dest_extra_alpha_scan);
101 void CompositeSpanGray_10(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
102 int span_left, int span_len, int span_top, uint8_t cover_scan,
103 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
104 uint8_t* dest_extra_alpha_scan);
107 void CompositeSpanGray_11(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
108 int span_left, int span_len, int span_top, uint8_t cover_scan,
109 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
110 uint8_t* dest_extra_alpha_scan);
112 void CompositeSpanGray_14(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
113 int span_left, int span_len, int span_top, uint8_t cover_scan,
114 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
115 uint8_t* dest_extra_alpha_scan);
117 void CompositeSpanGray_15(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
118 int span_left, int span_len, int span_top, uint8_t cover_scan,
119 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
120 uint8_t* dest_extra_alpha_scan);
122 /*--------------------------------------------------------------------------------------------------------*/
123 void CompositeSpanARGB_2(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
124 int span_left, int span_len, int span_top, uint8_t cover_scan,
125 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
126 uint8_t* dest_extra_alpha_scan);
128 void CompositeSpanARGB_3(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
129 int span_left, int span_len, int span_top, uint8_t cover_scan,
130 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
131 uint8_t* dest_extra_alpha_scan);
134 void CompositeSpanARGB_6(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
135 int span_left, int span_len, int span_top, uint8_t cover_scan,
136 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
137 uint8_t* dest_extra_alpha_scan);
140 void CompositeSpanARGB_7(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
141 int span_left, int span_len, int span_top, uint8_t cover_scan,
142 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
143 uint8_t* dest_extra_alpha_scan);
145 /*--------------------------------------------------------------------------------------------------------*/
146 void CompositeSpanRGB32_2(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
147 int span_left, int span_len, int span_top, uint8_t cover_scan,
148 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
149 uint8_t* dest_extra_alpha_scan);
150 void CompositeSpanRGB32_3(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
151 int span_left, int span_len, int span_top, uint8_t cover_scan,
152 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
153 uint8_t* dest_extra_alpha_scan);
154 void CompositeSpanRGB32_6(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
155 int span_left, int span_len, int span_top, uint8_t cover_scan,
156 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
157 uint8_t* dest_extra_alpha_scan);
158 void CompositeSpanRGB32_7(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
159 int span_left, int span_len, int span_top, uint8_t cover_scan,
160 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
161 uint8_t* dest_extra_alpha_scan);
163 /*---------------------------------------------------------------------------------------------------------*/
165 void CompositeSpanRGB24_2(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
166 int span_left, int span_len, int span_top, uint8_t cover_scan,
167 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
168 uint8_t* dest_extra_alpha_scan);
169 void CompositeSpanRGB24_3(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
170 int span_left, int span_len, int span_top, uint8_t cover_scan,
171 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
172 uint8_t* dest_extra_alpha_scan);
173 void CompositeSpanRGB24_6(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
174 int span_left, int span_len, int span_top, uint8_t cover_scan,
175 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
176 uint8_t* dest_extra_alpha_scan);
177 void CompositeSpanRGB24_7(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
178 int span_left, int span_len, int span_top, uint8_t cover_scan,
179 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
180 uint8_t* dest_extra_alpha_scan);
181 void CompositeSpanRGB24_10(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
182 int span_left, int span_len, int span_top, uint8_t cover_scan,
183 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
184 uint8_t* dest_extra_alpha_scan);
185 void CompositeSpanRGB24_11(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
186 int span_left, int span_len, int span_top, uint8_t cover_scan,
187 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
188 uint8_t* dest_extra_alpha_scan);
189 void CompositeSpanRGB24_14(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
190 int span_left, int span_len, int span_top, uint8_t cover_scan,
191 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
192 uint8_t* dest_extra_alpha_scan);
193 void CompositeSpanRGB24_15(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
194 int span_left, int span_len, int span_top, uint8_t cover_scan,
195 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
196 uint8_t* dest_extra_alpha_scan);
198 /*----------------------------------------------------------------------------------------------------------*/
200 // A general alpha merge function (with clipping mask). Cmyka/Cmyk device.
201 void CompositeSpanCMYK(uint8_t* dest_scan, uint8_t* ori_scan,int Bpp,
202 int span_left, int span_len, int span_top, uint8_t cover_scan,
203 int clip_top, int clip_left, int clip_right, uint8_t* clip_scan,
204 uint8_t* dest_extra_alpha_scan);
207 //--------------------------------------------------------------------
208 FX_BOOL Init(CFX_DIBitmap* pDevice, CFX_DIBitmap* pOriDevice, const CFX_ClipRgn* pClipRgn, FX_DWORD color, FX_BOOL bFullCover, FX_BOOL bRgbByteOrder,
209 int alpha_flag = 0, void* pIccTransform = NULL); //The alpha flag must be fill_flag if exist.
211 class CFX_SkiaA8Renderer : public SkBlitter
214 //--------------------------------------------------------------------
215 virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]);
216 virtual void blitH(int x, int y, int width);
217 virtual void blitV(int x, int y, int height, SkAlpha alpha);
218 virtual void blitRect(int x, int y, int width, int height);
219 virtual void blitAntiRect(int x, int y, int width, int height, SkAlpha leftAlpha, SkAlpha rightAlpha);
220 //--------------------------------------------------------------------
221 FX_BOOL Init(CFX_DIBitmap* pDevice, int Left, int Top);
222 CFX_DIBitmap* m_pDevice;
230 #endif // CORE_SRC_FXGE_SKIA_FX_SKIA_BLITTER_NEW_H_