#include "AlphaMask.h" #include namespace Aggplus { CAlphaMask::CAlphaMask() : m_pBuffer(NULL) {} CAlphaMask::CAlphaMask(BYTE *pBuffer, EMaskDataType eDataType, bool bExternalBuffer) : m_pBuffer(pBuffer), m_enDataType(eDataType), m_bExternalBuffer(bExternalBuffer) {} CAlphaMask::~CAlphaMask() { if (!m_bExternalBuffer) RELEASEARRAYOBJECTS(m_pBuffer); } BYTE *CAlphaMask::GetBuffer() { return m_pBuffer; } EMaskDataType CAlphaMask::GetDataType() const { return m_enDataType; } UINT CAlphaMask::GetStep() const { switch(m_enDataType) { case EMaskDataType::ImageBuffer: return 4; case EMaskDataType::AlphaBuffer: return 1; } } Status CAlphaMask::Create(UINT unWidth, UINT unHeight, EMaskDataType eDataType) { if (0 == unWidth || 0 == unHeight) return InvalidParameter; m_enDataType = eDataType; m_bExternalBuffer = false; UINT unSize = unWidth * unHeight * GetStep(); m_pBuffer = new BYTE[unSize]; if (NULL == m_pBuffer) return OutOfMemory; memset(m_pBuffer, 0x00, unSize); return Ok; } Status CAlphaMask::LoadFromBuffer(BYTE *pBuffer, EMaskDataType eDataType, bool bExternalBuffer) { m_pBuffer = pBuffer; m_enDataType = eDataType; m_bExternalBuffer = bExternalBuffer; return Ok; } }