summaryrefslogtreecommitdiff
path: root/fpdfsdk
diff options
context:
space:
mode:
Diffstat (limited to 'fpdfsdk')
-rw-r--r--fpdfsdk/fpdf_formfill.cpp9
-rw-r--r--fpdfsdk/fpdf_view.cpp20
-rw-r--r--fpdfsdk/fpdfxfa/cpdfxfa_page.cpp18
-rw-r--r--fpdfsdk/fpdfxfa/cpdfxfa_page.h7
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.