diff options
-rw-r--r-- | core/fpdfdoc/cpdf_dest.cpp | 22 | ||||
-rw-r--r-- | core/fpdfdoc/cpdf_dest.h | 12 | ||||
-rw-r--r-- | fpdfsdk/fpdfdoc.cpp | 24 | ||||
-rw-r--r-- | fpdfsdk/fpdfdoc_embeddertest.cpp | 10 | ||||
-rw-r--r-- | public/fpdf_doc.h | 10 |
5 files changed, 36 insertions, 42 deletions
diff --git a/core/fpdfdoc/cpdf_dest.cpp b/core/fpdfdoc/cpdf_dest.cpp index cb15bf1c33..0098f73f66 100644 --- a/core/fpdfdoc/cpdf_dest.cpp +++ b/core/fpdfdoc/cpdf_dest.cpp @@ -22,7 +22,11 @@ const char* const g_sZoomModes[] = {"Unknown", "XYZ", "Fit", "FitH", "FitV", "FitR", "FitB", "FitBH", "FitBV", nullptr}; -const int g_sZoomModeMaxParamCount[] = {0, 3, 0, 1, 1, 4, 0, 1, 1, 0}; +const uint8_t g_sZoomModeMaxParamCount[] = {0, 3, 0, 1, 1, 4, 0, 1, 1, 0}; + +static_assert(FX_ArraySize(g_sZoomModes) == + FX_ArraySize(g_sZoomModeMaxParamCount), + "Zoom mode count Mismatch"); } // namespace @@ -34,7 +38,7 @@ CPDF_Dest::CPDF_Dest(CPDF_Object* pObj) : m_pObj(pObj) {} CPDF_Dest::~CPDF_Dest() {} -int CPDF_Dest::GetPageIndex(CPDF_Document* pDoc) { +int CPDF_Dest::GetPageIndex(CPDF_Document* pDoc) const { CPDF_Array* pArray = ToArray(m_pObj.Get()); if (!pArray) return 0; @@ -49,7 +53,7 @@ int CPDF_Dest::GetPageIndex(CPDF_Document* pDoc) { return pDoc->GetPageIndex(pPage->GetObjNum()); } -uint32_t CPDF_Dest::GetPageObjNum() { +uint32_t CPDF_Dest::GetPageObjNum() const { CPDF_Array* pArray = ToArray(m_pObj.Get()); if (!pArray) return 0; @@ -64,7 +68,7 @@ uint32_t CPDF_Dest::GetPageObjNum() { return 0; } -int CPDF_Dest::GetZoomMode() { +int CPDF_Dest::GetZoomMode() const { CPDF_Array* pArray = ToArray(m_pObj.Get()); if (!pArray) return 0; @@ -129,21 +133,21 @@ bool CPDF_Dest::GetXYZ(bool* pHasX, return true; } -unsigned int CPDF_Dest::GetNumParams() { +unsigned long CPDF_Dest::GetNumParams() const { CPDF_Array* pArray = ToArray(m_pObj.Get()); if (!pArray || pArray->GetCount() < 2) return 0; - size_t maxParamsForFitType = g_sZoomModeMaxParamCount[GetZoomMode()]; - size_t numParamsInArray = pArray->GetCount() - 2; + unsigned long maxParamsForFitType = g_sZoomModeMaxParamCount[GetZoomMode()]; + unsigned long numParamsInArray = pArray->GetCount() - 2; return std::min(maxParamsForFitType, numParamsInArray); } -float CPDF_Dest::GetParam(int index) { +float CPDF_Dest::GetParam(int index) const { CPDF_Array* pArray = ToArray(m_pObj.Get()); return pArray ? pArray->GetNumberAt(2 + index) : 0; } -ByteString CPDF_Dest::GetRemoteName() { +ByteString CPDF_Dest::GetRemoteName() const { return m_pObj ? m_pObj->GetString() : ByteString(); } diff --git a/core/fpdfdoc/cpdf_dest.h b/core/fpdfdoc/cpdf_dest.h index 4959901972..584669a82d 100644 --- a/core/fpdfdoc/cpdf_dest.h +++ b/core/fpdfdoc/cpdf_dest.h @@ -22,15 +22,15 @@ class CPDF_Dest { ~CPDF_Dest(); CPDF_Object* GetObject() const { return m_pObj.Get(); } - ByteString GetRemoteName(); - int GetPageIndex(CPDF_Document* pDoc); - uint32_t GetPageObjNum(); + ByteString GetRemoteName() const; + int GetPageIndex(CPDF_Document* pDoc) const; + uint32_t GetPageObjNum() const; // Returns the zoom mode, as one of the PDFDEST_VIEW_* values in fpdf_doc.h. - int GetZoomMode(); + int GetZoomMode() const; - unsigned int GetNumParams(); - float GetParam(int index); + unsigned long GetNumParams() const; + float GetParam(int index) const; bool GetXYZ(bool* pHasX, bool* pHasY, diff --git a/fpdfsdk/fpdfdoc.cpp b/fpdfsdk/fpdfdoc.cpp index 14e4361483..47ecf4223b 100644 --- a/fpdfsdk/fpdfdoc.cpp +++ b/fpdfsdk/fpdfdoc.cpp @@ -211,26 +211,20 @@ FPDFDest_GetPageIndex(FPDF_DOCUMENT document, FPDF_DEST pDict) { } FPDF_EXPORT unsigned long FPDF_CALLCONV -FPDFDest_GetView(FPDF_DOCUMENT document, - FPDF_DEST pDict, - unsigned long* outNumParams, - FS_FLOAT* outParams) { +FPDFDest_GetView(FPDF_DEST pDict, + unsigned long* pNumParams, + FS_FLOAT* pParams) { if (!pDict) { - *outNumParams = 0; - return 0; - } - - CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document); - if (!pDoc) { - *outNumParams = 0; + *pNumParams = 0; return 0; } CPDF_Dest dest(static_cast<CPDF_Array*>(pDict)); - - *outNumParams = dest.GetNumParams(); - for (unsigned long i = 0; i < *outNumParams; ++i) - outParams[i] = dest.GetParam(i); + unsigned long nParams = dest.GetNumParams(); + ASSERT(nParams <= 4); + *pNumParams = nParams; + for (unsigned long i = 0; i < nParams; ++i) + pParams[i] = dest.GetParam(i); return dest.GetZoomMode(); } diff --git a/fpdfsdk/fpdfdoc_embeddertest.cpp b/fpdfsdk/fpdfdoc_embeddertest.cpp index 24414a1c33..d346330486 100644 --- a/fpdfsdk/fpdfdoc_embeddertest.cpp +++ b/fpdfsdk/fpdfdoc_embeddertest.cpp @@ -51,7 +51,7 @@ TEST_F(FPDFDocEmbeddertest, DestGetView) { numParams = 42; std::fill_n(params, 4, 42.4242f); EXPECT_EQ(static_cast<unsigned long>(PDFDEST_VIEW_UNKNOWN_MODE), - FPDFDest_GetView(document(), nullptr, &numParams, params)); + FPDFDest_GetView(nullptr, &numParams, params)); EXPECT_EQ(0U, numParams); EXPECT_FLOAT_EQ(42.4242f, params[0]); @@ -60,7 +60,7 @@ TEST_F(FPDFDocEmbeddertest, DestGetView) { FPDF_DEST dest = FPDF_GetNamedDestByName(document(), "First"); EXPECT_TRUE(dest); EXPECT_EQ(static_cast<unsigned long>(PDFDEST_VIEW_XYZ), - FPDFDest_GetView(document(), dest, &numParams, params)); + FPDFDest_GetView(dest, &numParams, params)); EXPECT_EQ(3U, numParams); EXPECT_FLOAT_EQ(0, params[0]); EXPECT_FLOAT_EQ(0, params[1]); @@ -72,7 +72,7 @@ TEST_F(FPDFDocEmbeddertest, DestGetView) { dest = FPDF_GetNamedDestByName(document(), "Next"); EXPECT_TRUE(dest); EXPECT_EQ(static_cast<unsigned long>(PDFDEST_VIEW_FIT), - FPDFDest_GetView(document(), dest, &numParams, params)); + FPDFDest_GetView(dest, &numParams, params)); EXPECT_EQ(0U, numParams); EXPECT_FLOAT_EQ(42.4242f, params[0]); @@ -81,7 +81,7 @@ TEST_F(FPDFDocEmbeddertest, DestGetView) { dest = FPDF_GetNamedDestByName(document(), "FirstAlternate"); EXPECT_TRUE(dest); EXPECT_EQ(static_cast<unsigned long>(PDFDEST_VIEW_XYZ), - FPDFDest_GetView(document(), dest, &numParams, params)); + FPDFDest_GetView(dest, &numParams, params)); EXPECT_EQ(3U, numParams); EXPECT_FLOAT_EQ(200, params[0]); EXPECT_FLOAT_EQ(400, params[1]); @@ -93,7 +93,7 @@ TEST_F(FPDFDocEmbeddertest, DestGetView) { dest = FPDF_GetNamedDestByName(document(), "LastAlternate"); EXPECT_TRUE(dest); EXPECT_EQ(static_cast<unsigned long>(PDFDEST_VIEW_XYZ), - FPDFDest_GetView(document(), dest, &numParams, params)); + FPDFDest_GetView(dest, &numParams, params)); EXPECT_EQ(3U, numParams); EXPECT_FLOAT_EQ(0, params[0]); EXPECT_FLOAT_EQ(0, params[1]); diff --git a/public/fpdf_doc.h b/public/fpdf_doc.h index 93efa7ae98..b523575967 100644 --- a/public/fpdf_doc.h +++ b/public/fpdf_doc.h @@ -189,18 +189,14 @@ FPDFDest_GetPageIndex(FPDF_DOCUMENT document, FPDF_DEST dest); // Get the view (fit type) specified by |dest|. // Experimental API. Subject to change. // -// document - handle to the document. // dest - handle to the destination. -// outNumParams - buffer to write the number of view parameters. -// outParams - buffer to write the view parameters. Must be at least 4 +// pNumParams - receives the number of view parameters, which is at most 4. +// pParams - buffer to write the view parameters. Must be at least 4 // FS_FLOATs long. // Returns one of the PDFDEST_VIEW_* constants, PDFDEST_VIEW_UNKNOWN_MODE if // |dest| does not specify a view. FPDF_EXPORT unsigned long FPDF_CALLCONV -FPDFDest_GetView(FPDF_DOCUMENT document, - FPDF_DEST dest, - unsigned long* outNumParams, - FS_FLOAT* outParams); +FPDFDest_GetView(FPDF_DEST dest, unsigned long* pNumParams, FS_FLOAT* pParams); // Get the (x, y, zoom) location of |dest| in the destination page, if the // destination is in [page /XYZ x y zoom] syntax. |