Home | History | Annotate | Download | only in fpdfdoc
      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 
     11 CPDF_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 
     26 CPDF_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