1 // Copyright 2016 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #include "core/fpdfdoc/cpdf_bookmarktree.h" 8 9 #include "core/fpdfapi/parser/cpdf_document.h" 10 GetFirstChild(const CPDF_Bookmark & parent) const11CPDF_Bookmark CPDF_BookmarkTree::GetFirstChild( 12 const CPDF_Bookmark& parent) const { 13 CPDF_Dictionary* pParentDict = parent.GetDict(); 14 if (pParentDict) 15 return CPDF_Bookmark(pParentDict->GetDictFor("First")); 16 17 CPDF_Dictionary* pRoot = m_pDocument->GetRoot(); 18 if (!pRoot) 19 return CPDF_Bookmark(); 20 21 CPDF_Dictionary* pOutlines = pRoot->GetDictFor("Outlines"); 22 return pOutlines ? CPDF_Bookmark(pOutlines->GetDictFor("First")) 23 : CPDF_Bookmark(); 24 } 25 GetNextSibling(const CPDF_Bookmark & bookmark) const26CPDF_Bookmark CPDF_BookmarkTree::GetNextSibling( 27 const CPDF_Bookmark& bookmark) const { 28 CPDF_Dictionary* pDict = bookmark.GetDict(); 29 if (!pDict) 30 return CPDF_Bookmark(); 31 32 CPDF_Dictionary* pNext = pDict->GetDictFor("Next"); 33 return pNext == pDict ? CPDF_Bookmark() : CPDF_Bookmark(pNext); 34 } 35