diff options
Diffstat (limited to 'fpdfsdk')
-rw-r--r-- | fpdfsdk/fpdf_formfill.cpp | 9 | ||||
-rw-r--r-- | fpdfsdk/fpdf_view.cpp | 20 | ||||
-rw-r--r-- | fpdfsdk/fpdfxfa/cpdfxfa_page.cpp | 18 | ||||
-rw-r--r-- | fpdfsdk/fpdfxfa/cpdfxfa_page.h | 7 |
4 files changed, 22 insertions, 32 deletions
diff --git a/fpdfsdk/fpdf_formfill.cpp b/fpdfsdk/fpdf_formfill.cpp index 7b47259a12..912db878f8 100644 --- a/fpdfsdk/fpdf_formfill.cpp +++ b/fpdfsdk/fpdf_formfill.cpp @@ -150,9 +150,8 @@ void FFLCommon(FPDF_FORMHANDLE hHandle, return; #endif // PDF_ENABLE_XFA - CFX_Matrix matrix = - pPage->GetDisplayMatrix(start_x, start_y, size_x, size_y, rotate); - FX_RECT clip(start_x, start_y, start_x + size_x, start_y + size_y); + const FX_RECT rect(start_x, start_y, start_x + size_x, start_y + size_y); + CFX_Matrix matrix = pPage->GetDisplayMatrix(rect, rotate); auto pDevice = pdfium::MakeUnique<CFX_DefaultRenderDevice>(); #ifdef _SKIA_SUPPORT_ @@ -162,7 +161,7 @@ void FFLCommon(FPDF_FORMHANDLE hHandle, pDevice->Attach(holder, false, nullptr, false); { CFX_RenderDevice::StateRestorer restorer(pDevice.get()); - pDevice->SetClip_Rect(clip); + pDevice->SetClip_Rect(rect); CPDF_RenderOptions options; uint32_t option_flags = options.GetFlags(); @@ -182,7 +181,7 @@ void FFLCommon(FPDF_FORMHANDLE hHandle, options.SetOCContext( pdfium::MakeRetain<CPDF_OCContext>(pPDFDoc, CPDF_OCContext::View)); if (CPDFSDK_PageView* pPageView = pFormFillEnv->GetPageView(pPage, true)) - pPageView->PageView_OnDraw(pDevice.get(), &matrix, &options, clip); + pPageView->PageView_OnDraw(pDevice.get(), &matrix, &options, rect); #else // PDF_ENABLE_XFA options.SetOCContext(pdfium::MakeRetain<CPDF_OCContext>( pPage->m_pDocument.Get(), CPDF_OCContext::View)); diff --git a/fpdfsdk/fpdf_view.cpp b/fpdfsdk/fpdf_view.cpp index 2b4600dc8a..b04276ee51 100644 --- a/fpdfsdk/fpdf_view.cpp +++ b/fpdfsdk/fpdf_view.cpp @@ -657,8 +657,8 @@ FPDF_RenderPageBitmapWithMatrix(FPDF_BITMAP bitmap, clipping_rect = CFXFloatRectFromFSRECTF(*clipping); FX_RECT clip_rect = clipping_rect.ToFxRect(); - CFX_Matrix transform_matrix = pPage->GetDisplayMatrix( - 0, 0, pPage->GetPageWidth(), pPage->GetPageHeight(), 0); + const FX_RECT rect(0, 0, pPage->GetPageWidth(), pPage->GetPageHeight()); + CFX_Matrix transform_matrix = pPage->GetDisplayMatrix(rect, 0); if (matrix) { transform_matrix.Concat(CFX_Matrix(matrix->a, matrix->b, matrix->c, @@ -748,8 +748,8 @@ FPDF_EXPORT void FPDF_CALLCONV FPDF_DeviceToPage(FPDF_PAGE page, pPage->DeviceToPage(start_x, start_y, size_x, size_y, rotate, device_x, device_y, page_x, page_y); #else // PDF_ENABLE_XFA - CFX_Matrix page2device = - pPage->GetDisplayMatrix(start_x, start_y, size_x, size_y, rotate); + const FX_RECT rect(start_x, start_y, start_x + size_x, start_y + size_y); + CFX_Matrix page2device = pPage->GetDisplayMatrix(rect, rotate); CFX_PointF pos = page2device.GetInverse().Transform( CFX_PointF(static_cast<float>(device_x), static_cast<float>(device_y))); @@ -778,8 +778,8 @@ FPDF_EXPORT void FPDF_CALLCONV FPDF_PageToDevice(FPDF_PAGE page, pPage->PageToDevice(start_x, start_y, size_x, size_y, rotate, page_x, page_y, device_x, device_y); #else // PDF_ENABLE_XFA - CFX_Matrix page2device = - pPage->GetDisplayMatrix(start_x, start_y, size_x, size_y, rotate); + const FX_RECT rect(start_x, start_y, start_x + size_x, start_y + size_y); + CFX_Matrix page2device = pPage->GetDisplayMatrix(rect, rotate); CFX_PointF pos = page2device.Transform( CFX_PointF(static_cast<float>(page_x), static_cast<float>(page_y))); @@ -898,11 +898,9 @@ void FPDF_RenderPage_Retail(CPDF_PageRenderContext* pContext, if (!pPage) return; - RenderPageImpl( - pContext, pPage, - pPage->GetDisplayMatrix(start_x, start_y, size_x, size_y, rotate), - FX_RECT(start_x, start_y, start_x + size_x, start_y + size_y), flags, - bNeedToRestore, pause); + const FX_RECT rect(start_x, start_y, start_x + size_x, start_y + size_y); + RenderPageImpl(pContext, pPage, pPage->GetDisplayMatrix(rect, rotate), rect, + flags, bNeedToRestore, pause); } FPDF_EXPORT int FPDF_CALLCONV FPDF_GetPageSizeByIndex(FPDF_DOCUMENT document, diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp index 0b4e8f60ee..a43707a9cf 100644 --- a/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp +++ b/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp @@ -138,7 +138,8 @@ void CPDFXFA_Page::DeviceToPage(int start_x, if (!m_pPDFPage && !m_pXFAPageView) return; - CFX_PointF pos = GetDisplayMatrix(start_x, start_y, size_x, size_y, rotate) + const FX_RECT rect(start_x, start_y, start_x + size_x, start_y + size_y); + CFX_PointF pos = GetDisplayMatrix(rect, rotate) .GetInverse() .Transform(CFX_PointF(static_cast<float>(device_x), static_cast<float>(device_y))); @@ -159,8 +160,8 @@ void CPDFXFA_Page::PageToDevice(int start_x, if (!m_pPDFPage && !m_pXFAPageView) return; - CFX_Matrix page2device = - GetDisplayMatrix(start_x, start_y, size_x, size_y, rotate); + const FX_RECT rect(start_x, start_y, start_x + size_x, start_y + size_y); + CFX_Matrix page2device = GetDisplayMatrix(rect, rotate); CFX_PointF pos = page2device.Transform( CFX_PointF(static_cast<float>(page_x), static_cast<float>(page_y))); @@ -169,10 +170,7 @@ void CPDFXFA_Page::PageToDevice(int start_x, *device_y = FXSYS_round(pos.y); } -CFX_Matrix CPDFXFA_Page::GetDisplayMatrix(int xPos, - int yPos, - int xSize, - int ySize, +CFX_Matrix CPDFXFA_Page::GetDisplayMatrix(const FX_RECT& rect, int iRotate) const { if (!m_pPDFPage && !m_pXFAPageView) return CFX_Matrix(); @@ -182,13 +180,11 @@ CFX_Matrix CPDFXFA_Page::GetDisplayMatrix(int xPos, case FormType::kAcroForm: case FormType::kXFAForeground: if (m_pPDFPage) - return m_pPDFPage->GetDisplayMatrix(xPos, yPos, xSize, ySize, iRotate); + return m_pPDFPage->GetDisplayMatrix(rect, iRotate); FX_FALLTHROUGH; case FormType::kXFAFull: - if (m_pXFAPageView) { - FX_RECT rect = FX_RECT(xPos, yPos, xPos + xSize, yPos + ySize); + if (m_pXFAPageView) return m_pXFAPageView->GetDisplayMatrix(rect, iRotate); - } break; } diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_page.h b/fpdfsdk/fpdfxfa/cpdfxfa_page.h index f64d66b10c..bdb4791c87 100644 --- a/fpdfsdk/fpdfxfa/cpdfxfa_page.h +++ b/fpdfsdk/fpdfxfa/cpdfxfa_page.h @@ -18,6 +18,7 @@ class CPDFXFA_Context; class CPDF_Dictionary; class CPDF_Page; class CXFA_FFPageView; +struct FX_RECT; class CPDFXFA_Page : public Retainable { public: @@ -57,11 +58,7 @@ class CPDFXFA_Page : public Retainable { int* device_x, int* device_y); - CFX_Matrix GetDisplayMatrix(int xPos, - int yPos, - int xSize, - int ySize, - int iRotate) const; + CFX_Matrix GetDisplayMatrix(const FX_RECT& rect, int iRotate) const; protected: // Refcounted class. |