Index: fpdfsdk/src/fpdfxfa/fpdfxfa_page.cpp |
diff --git a/fpdfsdk/src/fpdfxfa/fpdfxfa_page.cpp b/fpdfsdk/src/fpdfxfa/fpdfxfa_page.cpp |
index edd25c7612098b4c3f4ad6c238ce676d06fde3da..24c1ed156ddd1e6d9a127e1ea1242041a3900a72 100644 |
--- a/fpdfsdk/src/fpdfxfa/fpdfxfa_page.cpp |
+++ b/fpdfsdk/src/fpdfxfa/fpdfxfa_page.cpp |
@@ -1,255 +1,255 @@ |
-// Copyright 2014 PDFium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
- |
-#include "fpdfsdk/include/fsdk_define.h" |
-#include "fpdfsdk/include/fsdk_mgr.h" |
-#include "fpdfsdk/include/fpdfxfa/fpdfxfa_util.h" |
-#include "fpdfsdk/include/fpdfxfa/fpdfxfa_doc.h" |
-#include "fpdfsdk/include/fpdfxfa/fpdfxfa_page.h" |
- |
-CPDFXFA_Page::CPDFXFA_Page(CPDFXFA_Document* pDoc, int page_index) |
- : m_pPDFPage(NULL), |
- m_pXFAPageView(NULL), |
- m_iPageIndex(page_index), |
- m_pDocument(pDoc), |
- m_iRef(1) {} |
- |
-CPDFXFA_Page::~CPDFXFA_Page() { |
- if (m_pPDFPage) |
- delete m_pPDFPage; |
- m_pPDFPage = NULL; |
- m_pXFAPageView = NULL; |
-} |
- |
-void CPDFXFA_Page::Release() { |
- m_iRef--; |
- if (m_iRef > 0) |
- return; |
- |
- if (m_pDocument) |
- m_pDocument->RemovePage(this); |
- |
- delete this; |
-} |
- |
-FX_BOOL CPDFXFA_Page::LoadPDFPage() { |
- if (!m_pDocument) |
- return FALSE; |
- CPDF_Document* pPDFDoc = m_pDocument->GetPDFDoc(); |
- if (pPDFDoc) { |
- CPDF_Dictionary* pDict = pPDFDoc->GetPage(m_iPageIndex); |
- if (pDict == NULL) |
- return FALSE; |
- if (m_pPDFPage) { |
- if (m_pPDFPage->m_pFormDict == pDict) |
- return TRUE; |
- |
- delete m_pPDFPage; |
- m_pPDFPage = NULL; |
- } |
- |
- m_pPDFPage = new CPDF_Page; |
- m_pPDFPage->Load(pPDFDoc, pDict); |
- m_pPDFPage->ParseContent(nullptr); |
- return TRUE; |
- } |
- |
- return FALSE; |
-} |
- |
-FX_BOOL CPDFXFA_Page::LoadXFAPageView() { |
- if (!m_pDocument) |
- return FALSE; |
- IXFA_Doc* pXFADoc = m_pDocument->GetXFADoc(); |
- if (!pXFADoc) |
- return FALSE; |
- |
- IXFA_DocView* pXFADocView = m_pDocument->GetXFADocView(); |
- if (!pXFADocView) |
- return FALSE; |
- |
- IXFA_PageView* pPageView = pXFADocView->GetPageView(m_iPageIndex); |
- if (!pPageView) |
- return FALSE; |
- |
- if (m_pXFAPageView == pPageView) |
- return TRUE; |
- |
- m_pXFAPageView = pPageView; |
- (void)m_pXFAPageView->LoadPageView(nullptr); |
- return TRUE; |
-} |
- |
-FX_BOOL CPDFXFA_Page::LoadPage() { |
- if (!m_pDocument || m_iPageIndex < 0) |
- return FALSE; |
- |
- int iDocType = m_pDocument->GetDocType(); |
- switch (iDocType) { |
- case DOCTYPE_PDF: |
- case DOCTYPE_STATIC_XFA: { |
- return LoadPDFPage(); |
- } |
- case DOCTYPE_DYNAMIC_XFA: { |
- return LoadXFAPageView(); |
- } |
- default: |
- return FALSE; |
- } |
- |
- return FALSE; |
-} |
- |
-FX_BOOL CPDFXFA_Page::LoadPDFPage(CPDF_Dictionary* pageDict) { |
- if (!m_pDocument || m_iPageIndex < 0 || !pageDict) |
- return FALSE; |
- |
- if (m_pPDFPage) |
- delete m_pPDFPage; |
- |
- m_pPDFPage = new CPDF_Page(); |
- m_pPDFPage->Load(m_pDocument->GetPDFDoc(), pageDict); |
- m_pPDFPage->ParseContent(nullptr); |
- |
- return TRUE; |
-} |
- |
-FX_FLOAT CPDFXFA_Page::GetPageWidth() { |
- ASSERT(m_pDocument != NULL); |
- |
- if (!m_pPDFPage && !m_pXFAPageView) |
- return 0.0f; |
- |
- int nDocType = m_pDocument->GetDocType(); |
- switch (nDocType) { |
- case DOCTYPE_DYNAMIC_XFA: { |
- if (m_pXFAPageView) { |
- CFX_RectF rect; |
- m_pXFAPageView->GetPageViewRect(rect); |
- return rect.width; |
- } |
- } break; |
- case DOCTYPE_STATIC_XFA: |
- case DOCTYPE_PDF: { |
- if (m_pPDFPage) |
- return m_pPDFPage->GetPageWidth(); |
- } break; |
- default: |
- return 0.0f; |
- } |
- |
- return 0.0f; |
-} |
- |
-FX_FLOAT CPDFXFA_Page::GetPageHeight() { |
- ASSERT(m_pDocument != NULL); |
- |
- if (!m_pPDFPage && !m_pXFAPageView) |
- return 0.0f; |
- |
- int nDocType = m_pDocument->GetDocType(); |
- switch (nDocType) { |
- case DOCTYPE_PDF: |
- case DOCTYPE_STATIC_XFA: { |
- if (m_pPDFPage) |
- return m_pPDFPage->GetPageHeight(); |
- } break; |
- case DOCTYPE_DYNAMIC_XFA: { |
- if (m_pXFAPageView) { |
- CFX_RectF rect; |
- m_pXFAPageView->GetPageViewRect(rect); |
- return rect.height; |
- } |
- } break; |
- default: |
- return 0.0f; |
- } |
- |
- return 0.0f; |
-} |
- |
-void CPDFXFA_Page::DeviceToPage(int start_x, |
- int start_y, |
- int size_x, |
- int size_y, |
- int rotate, |
- int device_x, |
- int device_y, |
- double* page_x, |
- double* page_y) { |
- ASSERT(m_pDocument != NULL); |
- |
- if (!m_pPDFPage && !m_pXFAPageView) |
- return; |
- |
- CFX_Matrix page2device; |
- CFX_Matrix device2page; |
- FX_FLOAT page_x_f, page_y_f; |
- |
- GetDisplayMatrix(page2device, start_x, start_y, size_x, size_y, rotate); |
- |
- device2page.SetReverse(page2device); |
- device2page.Transform((FX_FLOAT)(device_x), (FX_FLOAT)(device_y), page_x_f, |
- page_y_f); |
- |
- *page_x = (page_x_f); |
- *page_y = (page_y_f); |
-} |
- |
-void CPDFXFA_Page::PageToDevice(int start_x, |
- int start_y, |
- int size_x, |
- int size_y, |
- int rotate, |
- double page_x, |
- double page_y, |
- int* device_x, |
- int* device_y) { |
- if (!m_pPDFPage && !m_pXFAPageView) |
- return; |
- |
- CFX_Matrix page2device; |
- FX_FLOAT device_x_f, device_y_f; |
- |
- GetDisplayMatrix(page2device, start_x, start_y, size_x, size_y, rotate); |
- |
- page2device.Transform(((FX_FLOAT)page_x), ((FX_FLOAT)page_y), device_x_f, |
- device_y_f); |
- |
- *device_x = FXSYS_round(device_x_f); |
- *device_y = FXSYS_round(device_y_f); |
-} |
- |
-void CPDFXFA_Page::GetDisplayMatrix(CFX_Matrix& matrix, |
- int xPos, |
- int yPos, |
- int xSize, |
- int ySize, |
- int iRotate) const { |
- ASSERT(m_pDocument != NULL); |
- |
- if (!m_pPDFPage && !m_pXFAPageView) |
- return; |
- |
- int nDocType = m_pDocument->GetDocType(); |
- switch (nDocType) { |
- case DOCTYPE_DYNAMIC_XFA: { |
- if (m_pXFAPageView) { |
- CFX_Rect rect; |
- rect.Set(xPos, yPos, xSize, ySize); |
- m_pXFAPageView->GetDisplayMatrix(matrix, rect, iRotate); |
- } |
- } break; |
- case DOCTYPE_PDF: |
- case DOCTYPE_STATIC_XFA: { |
- if (m_pPDFPage) { |
- m_pPDFPage->GetDisplayMatrix(matrix, xPos, yPos, xSize, ySize, iRotate); |
- } |
- } break; |
- default: |
- return; |
- } |
-} |
+// Copyright 2014 PDFium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
+ |
+#include "fpdfsdk/include/fsdk_define.h" |
+#include "fpdfsdk/include/fsdk_mgr.h" |
+#include "fpdfsdk/include/fpdfxfa/fpdfxfa_util.h" |
+#include "fpdfsdk/include/fpdfxfa/fpdfxfa_doc.h" |
+#include "fpdfsdk/include/fpdfxfa/fpdfxfa_page.h" |
+ |
+CPDFXFA_Page::CPDFXFA_Page(CPDFXFA_Document* pDoc, int page_index) |
+ : m_pPDFPage(NULL), |
+ m_pXFAPageView(NULL), |
+ m_iPageIndex(page_index), |
+ m_pDocument(pDoc), |
+ m_iRef(1) {} |
+ |
+CPDFXFA_Page::~CPDFXFA_Page() { |
+ if (m_pPDFPage) |
+ delete m_pPDFPage; |
+ m_pPDFPage = NULL; |
+ m_pXFAPageView = NULL; |
+} |
+ |
+void CPDFXFA_Page::Release() { |
+ m_iRef--; |
+ if (m_iRef > 0) |
+ return; |
+ |
+ if (m_pDocument) |
+ m_pDocument->RemovePage(this); |
+ |
+ delete this; |
+} |
+ |
+FX_BOOL CPDFXFA_Page::LoadPDFPage() { |
+ if (!m_pDocument) |
+ return FALSE; |
+ CPDF_Document* pPDFDoc = m_pDocument->GetPDFDoc(); |
+ if (pPDFDoc) { |
+ CPDF_Dictionary* pDict = pPDFDoc->GetPage(m_iPageIndex); |
+ if (pDict == NULL) |
+ return FALSE; |
+ if (m_pPDFPage) { |
+ if (m_pPDFPage->m_pFormDict == pDict) |
+ return TRUE; |
+ |
+ delete m_pPDFPage; |
+ m_pPDFPage = NULL; |
+ } |
+ |
+ m_pPDFPage = new CPDF_Page; |
+ m_pPDFPage->Load(pPDFDoc, pDict); |
+ m_pPDFPage->ParseContent(nullptr); |
+ return TRUE; |
+ } |
+ |
+ return FALSE; |
+} |
+ |
+FX_BOOL CPDFXFA_Page::LoadXFAPageView() { |
+ if (!m_pDocument) |
+ return FALSE; |
+ IXFA_Doc* pXFADoc = m_pDocument->GetXFADoc(); |
+ if (!pXFADoc) |
+ return FALSE; |
+ |
+ IXFA_DocView* pXFADocView = m_pDocument->GetXFADocView(); |
+ if (!pXFADocView) |
+ return FALSE; |
+ |
+ IXFA_PageView* pPageView = pXFADocView->GetPageView(m_iPageIndex); |
+ if (!pPageView) |
+ return FALSE; |
+ |
+ if (m_pXFAPageView == pPageView) |
+ return TRUE; |
+ |
+ m_pXFAPageView = pPageView; |
+ (void)m_pXFAPageView->LoadPageView(nullptr); |
+ return TRUE; |
+} |
+ |
+FX_BOOL CPDFXFA_Page::LoadPage() { |
+ if (!m_pDocument || m_iPageIndex < 0) |
+ return FALSE; |
+ |
+ int iDocType = m_pDocument->GetDocType(); |
+ switch (iDocType) { |
+ case DOCTYPE_PDF: |
+ case DOCTYPE_STATIC_XFA: { |
+ return LoadPDFPage(); |
+ } |
+ case DOCTYPE_DYNAMIC_XFA: { |
+ return LoadXFAPageView(); |
+ } |
+ default: |
+ return FALSE; |
+ } |
+ |
+ return FALSE; |
+} |
+ |
+FX_BOOL CPDFXFA_Page::LoadPDFPage(CPDF_Dictionary* pageDict) { |
+ if (!m_pDocument || m_iPageIndex < 0 || !pageDict) |
+ return FALSE; |
+ |
+ if (m_pPDFPage) |
+ delete m_pPDFPage; |
+ |
+ m_pPDFPage = new CPDF_Page(); |
+ m_pPDFPage->Load(m_pDocument->GetPDFDoc(), pageDict); |
+ m_pPDFPage->ParseContent(nullptr); |
+ |
+ return TRUE; |
+} |
+ |
+FX_FLOAT CPDFXFA_Page::GetPageWidth() { |
+ ASSERT(m_pDocument != NULL); |
+ |
+ if (!m_pPDFPage && !m_pXFAPageView) |
+ return 0.0f; |
+ |
+ int nDocType = m_pDocument->GetDocType(); |
+ switch (nDocType) { |
+ case DOCTYPE_DYNAMIC_XFA: { |
+ if (m_pXFAPageView) { |
+ CFX_RectF rect; |
+ m_pXFAPageView->GetPageViewRect(rect); |
+ return rect.width; |
+ } |
+ } break; |
+ case DOCTYPE_STATIC_XFA: |
+ case DOCTYPE_PDF: { |
+ if (m_pPDFPage) |
+ return m_pPDFPage->GetPageWidth(); |
+ } break; |
+ default: |
+ return 0.0f; |
+ } |
+ |
+ return 0.0f; |
+} |
+ |
+FX_FLOAT CPDFXFA_Page::GetPageHeight() { |
+ ASSERT(m_pDocument != NULL); |
+ |
+ if (!m_pPDFPage && !m_pXFAPageView) |
+ return 0.0f; |
+ |
+ int nDocType = m_pDocument->GetDocType(); |
+ switch (nDocType) { |
+ case DOCTYPE_PDF: |
+ case DOCTYPE_STATIC_XFA: { |
+ if (m_pPDFPage) |
+ return m_pPDFPage->GetPageHeight(); |
+ } break; |
+ case DOCTYPE_DYNAMIC_XFA: { |
+ if (m_pXFAPageView) { |
+ CFX_RectF rect; |
+ m_pXFAPageView->GetPageViewRect(rect); |
+ return rect.height; |
+ } |
+ } break; |
+ default: |
+ return 0.0f; |
+ } |
+ |
+ return 0.0f; |
+} |
+ |
+void CPDFXFA_Page::DeviceToPage(int start_x, |
+ int start_y, |
+ int size_x, |
+ int size_y, |
+ int rotate, |
+ int device_x, |
+ int device_y, |
+ double* page_x, |
+ double* page_y) { |
+ ASSERT(m_pDocument != NULL); |
+ |
+ if (!m_pPDFPage && !m_pXFAPageView) |
+ return; |
+ |
+ CFX_Matrix page2device; |
+ CFX_Matrix device2page; |
+ FX_FLOAT page_x_f, page_y_f; |
+ |
+ GetDisplayMatrix(page2device, start_x, start_y, size_x, size_y, rotate); |
+ |
+ device2page.SetReverse(page2device); |
+ device2page.Transform((FX_FLOAT)(device_x), (FX_FLOAT)(device_y), page_x_f, |
+ page_y_f); |
+ |
+ *page_x = (page_x_f); |
+ *page_y = (page_y_f); |
+} |
+ |
+void CPDFXFA_Page::PageToDevice(int start_x, |
+ int start_y, |
+ int size_x, |
+ int size_y, |
+ int rotate, |
+ double page_x, |
+ double page_y, |
+ int* device_x, |
+ int* device_y) { |
+ if (!m_pPDFPage && !m_pXFAPageView) |
+ return; |
+ |
+ CFX_Matrix page2device; |
+ FX_FLOAT device_x_f, device_y_f; |
+ |
+ GetDisplayMatrix(page2device, start_x, start_y, size_x, size_y, rotate); |
+ |
+ page2device.Transform(((FX_FLOAT)page_x), ((FX_FLOAT)page_y), device_x_f, |
+ device_y_f); |
+ |
+ *device_x = FXSYS_round(device_x_f); |
+ *device_y = FXSYS_round(device_y_f); |
+} |
+ |
+void CPDFXFA_Page::GetDisplayMatrix(CFX_Matrix& matrix, |
+ int xPos, |
+ int yPos, |
+ int xSize, |
+ int ySize, |
+ int iRotate) const { |
+ ASSERT(m_pDocument != NULL); |
+ |
+ if (!m_pPDFPage && !m_pXFAPageView) |
+ return; |
+ |
+ int nDocType = m_pDocument->GetDocType(); |
+ switch (nDocType) { |
+ case DOCTYPE_DYNAMIC_XFA: { |
+ if (m_pXFAPageView) { |
+ CFX_Rect rect; |
+ rect.Set(xPos, yPos, xSize, ySize); |
+ m_pXFAPageView->GetDisplayMatrix(matrix, rect, iRotate); |
+ } |
+ } break; |
+ case DOCTYPE_PDF: |
+ case DOCTYPE_STATIC_XFA: { |
+ if (m_pPDFPage) { |
+ m_pPDFPage->GetDisplayMatrix(matrix, xPos, yPos, xSize, ySize, iRotate); |
+ } |
+ } break; |
+ default: |
+ return; |
+ } |
+} |