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 CPDF_BookmarkTree(CPDF_Document * pDoc)11CPDF_BookmarkTree::CPDF_BookmarkTree(CPDF_Document* pDoc) : m_pDocument(pDoc) {} 12 ~CPDF_BookmarkTree()13CPDF_BookmarkTree::~CPDF_BookmarkTree() {} 14 GetFirstChild(const CPDF_Bookmark & parent) const15CPDF_Bookmark CPDF_BookmarkTree::GetFirstChild( 16 const CPDF_Bookmark& parent) const { 17 CPDF_Dictionary* pParentDict = parent.GetDict(); 18 if (pParentDict) 19 return CPDF_Bookmark(pParentDict->GetDictFor("First")); 20 21 const CPDF_Dictionary* pRoot = m_pDocument->GetRoot(); 22 if (!pRoot) 23 return CPDF_Bookmark(); 24 25 CPDF_Dictionary* pOutlines = pRoot->GetDictFor("Outlines"); 26 return pOutlines ? CPDF_Bookmark(pOutlines->GetDictFor("First")) 27 : CPDF_Bookmark(); 28 } 29 GetNextSibling(const CPDF_Bookmark & bookmark) const30CPDF_Bookmark CPDF_BookmarkTree::GetNextSibling( 31 const CPDF_Bookmark& bookmark) const { 32 CPDF_Dictionary* pDict = bookmark.GetDict(); 33 if (!pDict) 34 return CPDF_Bookmark(); 35 36 CPDF_Dictionary* pNext = pDict->GetDictFor("Next"); 37 return pNext == pDict ? CPDF_Bookmark() : CPDF_Bookmark(pNext); 38 } 39