blob: 2401bc5da84fb085887046817c9b826f43f635f4 [file] [log] [blame]
// Copyright 2017 PDFium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
#ifndef CORE_FXGE_DIB_CFX_SCANLINECOMPOSITOR_H_
#define CORE_FXGE_DIB_CFX_SCANLINECOMPOSITOR_H_
#include "core/fxge/dib/cfx_dibsource.h"
class CFX_ScanlineCompositor {
public:
CFX_ScanlineCompositor();
~CFX_ScanlineCompositor();
bool Init(FXDIB_Format dest_format,
FXDIB_Format src_format,
int32_t width,
uint32_t* pSrcPalette,
uint32_t mask_color,
int blend_type,
bool bClip,
bool bRgbByteOrder = false,
int alpha_flag = 0,
void* pIccTransform = nullptr);
void CompositeRgbBitmapLine(uint8_t* dest_scan,
const uint8_t* src_scan,
int width,
const uint8_t* clip_scan,
const uint8_t* src_extra_alpha = nullptr,
uint8_t* dst_extra_alpha = nullptr);
void CompositePalBitmapLine(uint8_t* dest_scan,
const uint8_t* src_scan,
int src_left,
int width,
const uint8_t* clip_scan,
const uint8_t* src_extra_alpha = nullptr,
uint8_t* dst_extra_alpha = nullptr);
void CompositeByteMaskLine(uint8_t* dest_scan,
const uint8_t* src_scan,
int width,
const uint8_t* clip_scan,
uint8_t* dst_extra_alpha = nullptr);
void CompositeBitMaskLine(uint8_t* dest_scan,
const uint8_t* src_scan,
int src_left,
int width,
const uint8_t* clip_scan,
uint8_t* dst_extra_alpha = nullptr);
private:
int m_Transparency;
FXDIB_Format m_SrcFormat;
FXDIB_Format m_DestFormat;
uint32_t* m_pSrcPalette;
int m_MaskAlpha;
int m_MaskRed;
int m_MaskGreen;
int m_MaskBlue;
int m_MaskBlack;
int m_BlendType;
void* m_pIccTransform;
uint8_t* m_pCacheScanline;
int m_CacheSize;
bool m_bRgbByteOrder;
};
#endif // CORE_FXGE_DIB_CFX_SCANLINECOMPOSITOR_H_