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 {
12 m_Red, // Or the complementary-color, Cyan
16 FX_DWORD m_Color; // FX_ARGB or FX_CMYK
19 FX_BOOL m_bRgbByteOrder;
22 CFX_DIBitmap* m_pDevice;
23 CFX_DIBitmap* m_pOriDevice;
24 const CFX_ClipRgn* m_pClipRgn;
25 const CFX_DIBitmap* m_pClipMask;
28 uint8_t* m_pDestExtraAlphaScan;
32 void (CFX_SkiaRenderer::*composite_span)(uint8_t*,
46 //--------------------------------------------------------------------
47 virtual void blitAntiH(int x,
49 const SkAlpha antialias[],
50 const int16_t runs[]);
51 virtual void blitH(int x, int y, int width);
52 virtual void blitV(int x, int y, int height, SkAlpha alpha);
53 virtual void blitRect(int x, int y, int width, int height);
54 virtual void blitAntiRect(int x,
61 /*------------------------------------------------------------------------------------------------------*/
62 // A general alpha merge function (with clipping mask). Gray device.
63 void CompositeSpan1bpp_0(uint8_t* dest_scan,
74 uint8_t* dest_extra_alpha_scan);
75 void CompositeSpan1bpp_1(uint8_t* dest_scan,
86 uint8_t* dest_extra_alpha_scan);
87 void CompositeSpan1bpp_4(uint8_t* dest_scan,
98 uint8_t* dest_extra_alpha_scan);
99 void CompositeSpan1bpp_5(uint8_t* dest_scan,
110 uint8_t* dest_extra_alpha_scan);
111 void CompositeSpan1bpp_8(uint8_t* dest_scan,
122 uint8_t* dest_extra_alpha_scan);
123 void CompositeSpan1bpp_9(uint8_t* dest_scan,
134 uint8_t* dest_extra_alpha_scan);
135 void CompositeSpan1bpp_12(uint8_t* dest_scan,
146 uint8_t* dest_extra_alpha_scan);
147 void CompositeSpan1bpp_13(uint8_t* dest_scan,
158 uint8_t* dest_extra_alpha_scan);
160 /*--------------------------------------------------------------------------------------------------------*/
162 // A general alpha merge function (with clipping mask). Gray device.
163 void CompositeSpanGray_2(uint8_t* dest_scan,
174 uint8_t* dest_extra_alpha_scan);
176 void CompositeSpanGray_3(uint8_t* dest_scan,
187 uint8_t* dest_extra_alpha_scan);
189 void CompositeSpanGray_6(uint8_t* dest_scan,
200 uint8_t* dest_extra_alpha_scan);
202 void CompositeSpanGray_7(uint8_t* dest_scan,
213 uint8_t* dest_extra_alpha_scan);
215 void CompositeSpanGray_10(uint8_t* dest_scan,
226 uint8_t* dest_extra_alpha_scan);
228 void CompositeSpanGray_11(uint8_t* dest_scan,
239 uint8_t* dest_extra_alpha_scan);
241 void CompositeSpanGray_14(uint8_t* dest_scan,
252 uint8_t* dest_extra_alpha_scan);
254 void CompositeSpanGray_15(uint8_t* dest_scan,
265 uint8_t* dest_extra_alpha_scan);
267 /*--------------------------------------------------------------------------------------------------------*/
268 void CompositeSpanARGB_2(uint8_t* dest_scan,
279 uint8_t* dest_extra_alpha_scan);
281 void CompositeSpanARGB_3(uint8_t* dest_scan,
292 uint8_t* dest_extra_alpha_scan);
294 void CompositeSpanARGB_6(uint8_t* dest_scan,
305 uint8_t* dest_extra_alpha_scan);
307 void CompositeSpanARGB_7(uint8_t* dest_scan,
318 uint8_t* dest_extra_alpha_scan);
320 /*--------------------------------------------------------------------------------------------------------*/
321 void CompositeSpanRGB32_2(uint8_t* dest_scan,
332 uint8_t* dest_extra_alpha_scan);
333 void CompositeSpanRGB32_3(uint8_t* dest_scan,
344 uint8_t* dest_extra_alpha_scan);
345 void CompositeSpanRGB32_6(uint8_t* dest_scan,
356 uint8_t* dest_extra_alpha_scan);
357 void CompositeSpanRGB32_7(uint8_t* dest_scan,
368 uint8_t* dest_extra_alpha_scan);
370 /*---------------------------------------------------------------------------------------------------------*/
372 void CompositeSpanRGB24_2(uint8_t* dest_scan,
383 uint8_t* dest_extra_alpha_scan);
384 void CompositeSpanRGB24_3(uint8_t* dest_scan,
395 uint8_t* dest_extra_alpha_scan);
396 void CompositeSpanRGB24_6(uint8_t* dest_scan,
407 uint8_t* dest_extra_alpha_scan);
408 void CompositeSpanRGB24_7(uint8_t* dest_scan,
419 uint8_t* dest_extra_alpha_scan);
420 void CompositeSpanRGB24_10(uint8_t* dest_scan,
431 uint8_t* dest_extra_alpha_scan);
432 void CompositeSpanRGB24_11(uint8_t* dest_scan,
443 uint8_t* dest_extra_alpha_scan);
444 void CompositeSpanRGB24_14(uint8_t* dest_scan,
455 uint8_t* dest_extra_alpha_scan);
456 void CompositeSpanRGB24_15(uint8_t* dest_scan,
467 uint8_t* dest_extra_alpha_scan);
469 /*----------------------------------------------------------------------------------------------------------*/
471 // A general alpha merge function (with clipping mask). Cmyka/Cmyk device.
472 void CompositeSpanCMYK(uint8_t* dest_scan,
483 uint8_t* dest_extra_alpha_scan);
485 //--------------------------------------------------------------------
486 FX_BOOL Init(CFX_DIBitmap* pDevice,
487 CFX_DIBitmap* pOriDevice,
488 const CFX_ClipRgn* pClipRgn,
491 FX_BOOL bRgbByteOrder,
493 void* pIccTransform =
494 NULL); // The alpha flag must be fill_flag if exist.
496 class CFX_SkiaA8Renderer : public SkBlitter {
498 //--------------------------------------------------------------------
499 virtual void blitAntiH(int x,
501 const SkAlpha antialias[],
502 const int16_t runs[]);
503 virtual void blitH(int x, int y, int width);
504 virtual void blitV(int x, int y, int height, SkAlpha alpha);
505 virtual void blitRect(int x, int y, int width, int height);
506 virtual void blitAntiRect(int x,
512 //--------------------------------------------------------------------
513 FX_BOOL Init(CFX_DIBitmap* pDevice, int Left, int Top);
514 CFX_DIBitmap* m_pDevice;
522 #endif // CORE_SRC_FXGE_SKIA_FX_SKIA_BLITTER_NEW_H_