TEST_F(FPDFDocEmbeddertest, DestGetPageIndex) { EXPECT_TRUE(OpenDocument("named_dests.pdf")); // NULL FPDF_DEST case. EXPECT_EQ(0U, FPDFDest_GetPageIndex(document(), nullptr)); // Page number directly in item from Dests NameTree. FPDF_DEST dest = FPDF_GetNamedDestByName(document(), "First"); EXPECT_TRUE(dest); EXPECT_EQ(1U, FPDFDest_GetPageIndex(document(), dest)); // Page number via object reference in item from Dests NameTree. dest = FPDF_GetNamedDestByName(document(), "Next"); EXPECT_TRUE(dest); EXPECT_EQ(1U, FPDFDest_GetPageIndex(document(), dest)); // Page number directly in item from Dests dictionary. dest = FPDF_GetNamedDestByName(document(), "FirstAlternate"); EXPECT_TRUE(dest); EXPECT_EQ(11U, FPDFDest_GetPageIndex(document(), dest)); // Invalid object reference in item from Dests NameTree. dest = FPDF_GetNamedDestByName(document(), "LastAlternate"); EXPECT_TRUE(dest); EXPECT_EQ(0U, FPDFDest_GetPageIndex(document(), dest)); }
csPDFiumDest csPDFiumDocument::createDest(const void *_dest, const void *_action) const { FPDF_DEST dest = (FPDF_DEST)_dest; const FPDF_ACTION action = (const FPDF_ACTION)_action; if( action != NULL ) { if( FPDFAction_GetType(action) == PDFACTION_GOTO && dest == NULL ) { dest = FPDFAction_GetDest(impl->document, action); } else if( FPDFAction_GetType(action) == PDFACTION_REMOTEGOTO ) { const int size = FPDFAction_GetFilePath(action, NULL, 0); if( size < 1 ) { return csPDFiumDest(); } QByteArray destFilename(size, '\0'); FPDFAction_GetFilePath(action, destFilename.data(), destFilename.size()); return csPDFiumDest(impl->fileName, QString::fromUtf8(destFilename)); } } if( dest == NULL ) { return csPDFiumDest(); } return csPDFiumDest(FPDFDest_GetPageIndex(impl->document, dest), FPDFDest_GetZoomMode(dest) == FPDF_ZOOM_XYZ ? QPointF(FPDFDest_GetZoomParam(dest, 0), FPDFDest_GetZoomParam(dest, 1)) : QPointF()); }