void CFX_SystemHandler::InvalidateRect(FX_HWND hWnd, FX_RECT rect) { // g_pFormFillApp->FFI_Invalidate(); CPDFSDK_Annot* pSDKAnnot = (CPDFSDK_Annot*)hWnd; CPDF_Page* pPage = NULL; CPDFSDK_PageView* pPageView = NULL; pPageView = pSDKAnnot->GetPageView(); pPage = pSDKAnnot->GetPDFPage(); if (!pPage || !pPageView) return; CPDF_Matrix page2device; pPageView->GetCurrentMatrix(page2device); CPDF_Matrix device2page; device2page.SetReverse(page2device); FX_FLOAT left, top, right, bottom; device2page.Transform((FX_FLOAT)rect.left, (FX_FLOAT)rect.top, left, top); device2page.Transform((FX_FLOAT)rect.right, (FX_FLOAT)rect.bottom, right, bottom); // m_pEnv->FFI_DeviceToPage(pPage, rect.left, rect.top, (double*)&left, // (double*)&top); // m_pEnv->FFI_DeviceToPage(pPage, rect.right, rect.bottom, (double*)&right, // (double*)&bottom); CPDF_Rect rcPDF(left, bottom, right, top); rcPDF.Normalize(); m_pEnv->FFI_Invalidate(pPage, rcPDF.left, rcPDF.top, rcPDF.right, rcPDF.bottom); }
void CFX_SystemHandler::OutputSelectedRect(void* pFormFiller, CPDF_Rect& rect) { CFFL_FormFiller* pFFL = (CFFL_FormFiller*)pFormFiller; if (pFFL) { CPDF_Point leftbottom = CPDF_Point(rect.left, rect.bottom); CPDF_Point righttop = CPDF_Point(rect.right, rect.top); CPDF_Point ptA = pFFL->PWLtoFFL(leftbottom); CPDF_Point ptB = pFFL->PWLtoFFL(righttop); CPDFSDK_Annot* pAnnot = pFFL->GetSDKAnnot(); ASSERT(pAnnot); CPDF_Page* pPage = pAnnot->GetPDFPage(); ASSERT(pPage); m_pEnv->FFI_OutputSelectedRect(pPage, ptA.x, ptB.y, ptB.x, ptA.y); } }