void CRF_TextPage::GetRectsArrayByRect(CFX_FloatRect rect, CFX_RectArray& resRectArray) const { int count, i; FX_BOOL bstart = TRUE; FPDF_CHAR_INFO info; CFX_FloatRect recttmp; count = CountChars(); for(i = 0; i < count; i++) { GetCharInfo(i, info); if(_IsIntersect(rect, info.m_CharBox)) { if(bstart) { recttmp = info.m_CharBox; bstart = FALSE; } else if(_IsInsameline(recttmp, info.m_CharBox)) { recttmp.right = info.m_CharBox.right; if(info.m_CharBox.top > recttmp.top) { recttmp.top = info.m_CharBox.top; } if(info.m_CharBox.bottom < recttmp.bottom) { recttmp.bottom = info.m_CharBox.bottom; } } else { resRectArray.Add(recttmp); recttmp = info.m_CharBox; } } } resRectArray.Add(recttmp); }
void CRF_TextPage::GetRectArray(int start, int nCount, CFX_RectArray& rectArray) const { int indexlen = start + nCount; FPDF_CHAR_INFO info; FX_BOOL bstart = TRUE; CFX_FloatRect recttmp; int i; for(i = start; i < indexlen; i++) { GetCharInfo(i, info); if(bstart) { recttmp = info.m_CharBox; bstart = FALSE; } else if(_IsInsameline(recttmp, info.m_CharBox)) { recttmp.right = info.m_CharBox.right; if(info.m_CharBox.top > recttmp.top) { recttmp.top = info.m_CharBox.top; } if(info.m_CharBox.bottom < recttmp.bottom) { recttmp.bottom = info.m_CharBox.bottom; } } else { rectArray.Add(recttmp); recttmp = info.m_CharBox; } } rectArray.Add(recttmp); }
void CPDFSDK_PageView::UpdateRects(CFX_RectArray& rects) { for (int i = 0; i < rects.GetSize(); i++) { CPDF_Rect rc = rects.GetAt(i); CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); pEnv->FFI_Invalidate(m_page, rc.left, rc.top, rc.right, rc.bottom); } }
DLLEXPORT int STDCALL FPDFLink_CountRects(FPDF_PAGELINK link_page,int link_index) { if (!link_page) return 0; IPDF_LinkExtract* pageLink=(IPDF_LinkExtract*)link_page; CFX_RectArray rectArray; pageLink->GetRects(link_index,rectArray); return rectArray.GetSize(); }
FX_BOOL Document::removeField(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError) { ASSERT(m_pDocument != NULL); if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) || m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM))) return FALSE; CJS_Context* pContext = (CJS_Context*)cc; if (params.size() != 1) { sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); return FALSE; } CFX_WideString sFieldName = params[0].ToCFXWideString(); CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm(); ASSERT(pInterForm != NULL); CFX_PtrArray widgets; pInterForm->GetWidgets(sFieldName, widgets); int nSize = widgets.GetSize(); if (nSize > 0) { for (int i=0; i<nSize; i++) { CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets[i]; ASSERT(pWidget != NULL); CPDF_Rect rcAnnot = pWidget->GetRect(); rcAnnot.left -= 1; rcAnnot.bottom -= 1; rcAnnot.right += 1; rcAnnot.top += 1; CFX_RectArray aRefresh; aRefresh.Add(rcAnnot); CPDF_Page* pPage = pWidget->GetPDFPage(); ASSERT(pPage != NULL); CPDFSDK_PageView* pPageView = m_pDocument->GetPageView(pPage); pPageView->DeleteAnnot(pWidget); pPageView->UpdateRects(aRefresh); } m_pDocument->SetChangeMark(); } return TRUE; }
DLLEXPORT void STDCALL FPDFLink_GetRect(FPDF_PAGELINK link_page,int link_index, int rect_index, double* left, double* top,double* right, double* bottom) { if (!link_page) return; IPDF_LinkExtract* pageLink=(IPDF_LinkExtract*)link_page; CFX_RectArray rectArray; pageLink->GetRects(link_index,rectArray); CFX_FloatRect rect; rect=rectArray.GetAt(rect_index); *left=rect.left; *right=rect.right; *top=rect.top; *bottom=rect.bottom; }