void CPDF_Color::Copy(const CPDF_Color* pSrc) { ReleaseBuffer(); ReleaseColorSpace(); m_pCS = pSrc->m_pCS; if (m_pCS && m_pCS->m_pDocument) { CPDF_Array* pArray = m_pCS->GetArray(); if (pArray) { m_pCS = m_pCS->m_pDocument->GetPageData()->GetCopiedColorSpace(pArray); } } if (m_pCS == NULL) { return; } m_pBuffer = m_pCS->CreateBuf(); FXSYS_memcpy(m_pBuffer, pSrc->m_pBuffer, m_pCS->GetBufSize()); if (m_pCS->GetFamily() == PDFCS_PATTERN) { PatternValue* pvalue = (PatternValue*)m_pBuffer; if (pvalue->m_pPattern && pvalue->m_pPattern->m_pDocument) { pvalue->m_pPattern = pvalue->m_pPattern->m_pDocument->GetPageData()->GetPattern( pvalue->m_pPattern->m_pPatternObj, FALSE, &pvalue->m_pPattern->m_ParentMatrix); } } }
void CPDF_Color::SetColorSpace(CPDF_ColorSpace* pCS) { if (m_pCS == pCS) { if (m_pBuffer == NULL) { m_pBuffer = pCS->CreateBuf(); } ReleaseColorSpace(); m_pCS = pCS; return; } ReleaseBuffer(); ReleaseColorSpace(); m_pCS = pCS; if (m_pCS) { m_pBuffer = pCS->CreateBuf(); pCS->GetDefaultColor(m_pBuffer); } }
CPDF_Color::~CPDF_Color() { ReleaseBuffer(); ReleaseColorSpace(); }