CPDF_Form* CPDF_Form::Clone() const { CPDF_Form* pClone = FX_NEW CPDF_Form(m_pDocument, m_pPageResources, m_pFormStream, m_pResources); FX_POSITION pos = m_ObjectList.GetHeadPosition(); while (pos) { CPDF_PageObject* pObj = (CPDF_PageObject*)m_ObjectList.GetNext(pos); pClone->m_ObjectList.AddTail(pObj->Clone()); } return pClone; }
CPDF_Form* CPDF_Annot::GetAPForm(const CPDF_Page* pPage, AppearanceMode mode) { CPDF_Stream* pStream = FPDFDOC_GetAnnotAP(m_pAnnotDict, mode); if (pStream == NULL) { return NULL; } CPDF_Form* pForm; if (m_APMap.Lookup(pStream, (void*&)pForm)) { return pForm; } pForm = FX_NEW CPDF_Form(m_pList->m_pDocument, pPage->m_pResources, pStream); if (pForm == NULL) { return NULL; } pForm->ParseContent(NULL, NULL, NULL, NULL); m_APMap.SetAt(pStream, pForm); return pForm; }
FX_BOOL CPDF_TilingPattern::Load() { if (m_pForm != NULL) { return TRUE; } CPDF_Dictionary* pDict = m_pPatternObj->GetDict(); if (pDict == NULL) { return FALSE; } m_bColored = pDict->GetInteger(FX_BSTRC("PaintType")) == 1; m_XStep = (FX_FLOAT)FXSYS_fabs(pDict->GetNumber(FX_BSTRC("XStep"))); m_YStep = (FX_FLOAT)FXSYS_fabs(pDict->GetNumber(FX_BSTRC("YStep"))); if (m_pPatternObj->GetType() != PDFOBJ_STREAM) { return FALSE; } CPDF_Stream* pStream = (CPDF_Stream*)m_pPatternObj; m_pForm = FX_NEW CPDF_Form(m_pDocument, NULL, pStream); m_pForm->ParseContent(NULL, &m_ParentMatrix, NULL, NULL); m_BBox = pDict->GetRect(FX_BSTRC("BBox")); return TRUE; }