void CPDF_ShadingObject::CopyData(const CPDF_PageObject* pSrc) { CPDF_ShadingObject* pSrcObj = (CPDF_ShadingObject*)pSrc; m_pShading = pSrcObj->m_pShading; if (m_pShading && m_pShading->m_pDocument) { CPDF_DocPageData* pDocPageData = m_pShading->m_pDocument->GetPageData(); m_pShading = (CPDF_ShadingPattern*)pDocPageData->GetPattern(m_pShading->m_pShadingObj, m_pShading->m_bShadingObj, &m_pShading->m_ParentMatrix); } m_Matrix = pSrcObj->m_Matrix; }
CPDF_ShadingObject* CPDF_ShadingObject::Clone() const { CPDF_ShadingObject* obj = new CPDF_ShadingObject; obj->CopyData(this); obj->m_pShading = m_pShading; if (obj->m_pShading && obj->m_pShading->document()) { CPDF_DocPageData* pDocPageData = obj->m_pShading->document()->GetPageData(); CPDF_Pattern* pattern = pDocPageData->GetPattern( obj->m_pShading->GetShadingObject(), m_pShading->IsShadingObject(), obj->m_pShading->parent_matrix()); obj->m_pShading = pattern ? pattern->AsShadingPattern() : nullptr; } obj->m_Matrix = m_Matrix; return obj; }