| // Copyright 2016 PDFium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 
 |  | 
 | #ifndef PUBLIC_FPDF_STRUCTTREE_H_ | 
 | #define PUBLIC_FPDF_STRUCTTREE_H_ | 
 |  | 
 | // clang-format off | 
 | // NOLINTNEXTLINE(build/include) | 
 | #include "fpdfview.h" | 
 |  | 
 | #ifdef __cplusplus | 
 | extern "C" { | 
 | #endif | 
 |  | 
 | // Function: FPDF_StructTree_GetForPage | 
 | //          Get the structure tree for a page. | 
 | // Parameters: | 
 | //          page        -   Handle to the page, as returned by FPDF_LoadPage(). | 
 | // Return value: | 
 | //          A handle to the structure tree or NULL on error. | 
 | FPDF_EXPORT FPDF_STRUCTTREE FPDF_CALLCONV | 
 | FPDF_StructTree_GetForPage(FPDF_PAGE page); | 
 |  | 
 | // Function: FPDF_StructTree_Close | 
 | //          Release a resource allocated by FPDF_StructTree_GetForPage(). | 
 | // Parameters: | 
 | //          struct_tree -   Handle to the structure tree, as returned by | 
 | //                          FPDF_StructTree_LoadPage(). | 
 | // Return value: | 
 | //          None. | 
 | FPDF_EXPORT void FPDF_CALLCONV | 
 | FPDF_StructTree_Close(FPDF_STRUCTTREE struct_tree); | 
 |  | 
 | // Function: FPDF_StructTree_CountChildren | 
 | //          Count the number of children for the structure tree. | 
 | // Parameters: | 
 | //          struct_tree -   Handle to the structure tree, as returned by | 
 | //                          FPDF_StructTree_LoadPage(). | 
 | // Return value: | 
 | //          The number of children, or -1 on error. | 
 | FPDF_EXPORT int FPDF_CALLCONV | 
 | FPDF_StructTree_CountChildren(FPDF_STRUCTTREE struct_tree); | 
 |  | 
 | // Function: FPDF_StructTree_GetChildAtIndex | 
 | //          Get a child in the structure tree. | 
 | // Parameters: | 
 | //          struct_tree -   Handle to the structure tree, as returned by | 
 | //                          FPDF_StructTree_LoadPage(). | 
 | //          index       -   The index for the child, 0-based. | 
 | // Return value: | 
 | //          The child at the n-th index or NULL on error. | 
 | FPDF_EXPORT FPDF_STRUCTELEMENT FPDF_CALLCONV | 
 | FPDF_StructTree_GetChildAtIndex(FPDF_STRUCTTREE struct_tree, int index); | 
 |  | 
 | // Function: FPDF_StructElement_GetAltText | 
 | //          Get the alt text for a given element. | 
 | // Parameters: | 
 | //          struct_element -   Handle to the struct element. | 
 | //          buffer         -   A buffer for output the alt text. May be NULL. | 
 | //          buflen         -   The length of the buffer, in bytes. May be 0. | 
 | // Return value: | 
 | //          The number of bytes in the title, including the terminating NUL | 
 | //          character. The number of bytes is returned regardless of the | 
 | //          |buffer| and |buflen| parameters. | 
 | // Comments: | 
 | //          Regardless of the platform, the |buffer| is always in UTF-16LE | 
 | //          encoding. The string is terminated by a UTF16 NUL character. If | 
 | //          |buflen| is less than the required length, or |buffer| is NULL, | 
 | //          |buffer| will not be modified. | 
 | FPDF_EXPORT unsigned long FPDF_CALLCONV | 
 | FPDF_StructElement_GetAltText(FPDF_STRUCTELEMENT struct_element, | 
 |                               void* buffer, | 
 |                               unsigned long buflen); | 
 |  | 
 | // Experimental API. | 
 | // Function: FPDF_StructElement_GetID | 
 | //          Get the ID for a given element. | 
 | // Parameters: | 
 | //          struct_element -   Handle to the struct element. | 
 | //          buffer         -   A buffer for output the ID string. May be NULL. | 
 | //          buflen         -   The length of the buffer, in bytes. May be 0. | 
 | // Return value: | 
 | //          The number of bytes in the ID string, including the terminating NUL | 
 | //          character. The number of bytes is returned regardless of the | 
 | //          |buffer| and |buflen| parameters. | 
 | // Comments: | 
 | //          Regardless of the platform, the |buffer| is always in UTF-16LE | 
 | //          encoding. The string is terminated by a UTF16 NUL character. If | 
 | //          |buflen| is less than the required length, or |buffer| is NULL, | 
 | //          |buffer| will not be modified. | 
 | FPDF_EXPORT unsigned long FPDF_CALLCONV | 
 | FPDF_StructElement_GetID(FPDF_STRUCTELEMENT struct_element, | 
 |                          void* buffer, | 
 |                          unsigned long buflen); | 
 |  | 
 | // Experimental API. | 
 | // Function: FPDF_StructElement_GetLang | 
 | //          Get the case-insensitive IETF BCP 47 language code for an element. | 
 | // Parameters: | 
 | //          struct_element -   Handle to the struct element. | 
 | //          buffer         -   A buffer for output the lang string. May be NULL. | 
 | //          buflen         -   The length of the buffer, in bytes. May be 0. | 
 | // Return value: | 
 | //          The number of bytes in the ID string, including the terminating NUL | 
 | //          character. The number of bytes is returned regardless of the | 
 | //          |buffer| and |buflen| parameters. | 
 | // Comments: | 
 | //          Regardless of the platform, the |buffer| is always in UTF-16LE | 
 | //          encoding. The string is terminated by a UTF16 NUL character. If | 
 | //          |buflen| is less than the required length, or |buffer| is NULL, | 
 | //          |buffer| will not be modified. | 
 | FPDF_EXPORT unsigned long FPDF_CALLCONV | 
 | FPDF_StructElement_GetLang(FPDF_STRUCTELEMENT struct_element, | 
 |                            void* buffer, | 
 |                            unsigned long buflen); | 
 |  | 
 | // Experimental API. | 
 | // Function: FPDF_StructElement_GetStringAttribute | 
 | //          Get a struct element attribute of type "name" or "string". | 
 | // Parameters: | 
 | //          struct_element -   Handle to the struct element. | 
 | //          attr_name      -   The name of the attribute to retrieve. | 
 | //          buffer         -   A buffer for output. May be NULL. | 
 | //          buflen         -   The length of the buffer, in bytes. May be 0. | 
 | // Return value: | 
 | //          The number of bytes in the attribute value, including the | 
 | //          terminating NUL character. The number of bytes is returned | 
 | //          regardless of the |buffer| and |buflen| parameters. | 
 | // Comments: | 
 | //          Regardless of the platform, the |buffer| is always in UTF-16LE | 
 | //          encoding. The string is terminated by a UTF16 NUL character. If | 
 | //          |buflen| is less than the required length, or |buffer| is NULL, | 
 | //          |buffer| will not be modified. | 
 | FPDF_EXPORT unsigned long FPDF_CALLCONV | 
 | FPDF_StructElement_GetStringAttribute(FPDF_STRUCTELEMENT struct_element, | 
 |                                       FPDF_BYTESTRING attr_name, | 
 |                                       void* buffer, | 
 |                                       unsigned long buflen); | 
 |  | 
 | // Function: FPDF_StructElement_GetMarkedContentID | 
 | //          Get the marked content ID for a given element. | 
 | // Parameters: | 
 | //          struct_element -   Handle to the struct element. | 
 | // Return value: | 
 | //          The marked content ID of the element. If no ID exists, returns | 
 | //          -1. | 
 | FPDF_EXPORT int FPDF_CALLCONV | 
 | FPDF_StructElement_GetMarkedContentID(FPDF_STRUCTELEMENT struct_element); | 
 |  | 
 | // Function: FPDF_StructElement_GetType | 
 | //           Get the type (/S) for a given element. | 
 | // Parameters: | 
 | //           struct_element - Handle to the struct element. | 
 | //           buffer        - A buffer for output. May be NULL. | 
 | //           buflen        - The length of the buffer, in bytes. May be 0. | 
 | // Return value: | 
 | //           The number of bytes in the type, including the terminating NUL | 
 | //           character. The number of bytes is returned regardless of the | 
 | //           |buffer| and |buflen| parameters. | 
 | // Comments: | 
 | //           Regardless of the platform, the |buffer| is always in UTF-16LE | 
 | //           encoding. The string is terminated by a UTF16 NUL character. If | 
 | //           |buflen| is less than the required length, or |buffer| is NULL, | 
 | //           |buffer| will not be modified. | 
 | FPDF_EXPORT unsigned long FPDF_CALLCONV | 
 | FPDF_StructElement_GetType(FPDF_STRUCTELEMENT struct_element, | 
 |                            void* buffer, | 
 |                            unsigned long buflen); | 
 |  | 
 | // Function: FPDF_StructElement_GetTitle | 
 | //           Get the title (/T) for a given element. | 
 | // Parameters: | 
 | //           struct_element - Handle to the struct element. | 
 | //           buffer         - A buffer for output. May be NULL. | 
 | //           buflen         - The length of the buffer, in bytes. May be 0. | 
 | // Return value: | 
 | //           The number of bytes in the title, including the terminating NUL | 
 | //           character. The number of bytes is returned regardless of the | 
 | //           |buffer| and |buflen| parameters. | 
 | // Comments: | 
 | //           Regardless of the platform, the |buffer| is always in UTF-16LE | 
 | //           encoding. The string is terminated by a UTF16 NUL character. If | 
 | //           |buflen| is less than the required length, or |buffer| is NULL, | 
 | //           |buffer| will not be modified. | 
 | FPDF_EXPORT unsigned long FPDF_CALLCONV | 
 | FPDF_StructElement_GetTitle(FPDF_STRUCTELEMENT struct_element, | 
 |                             void* buffer, | 
 |                             unsigned long buflen); | 
 |  | 
 | // Function: FPDF_StructElement_CountChildren | 
 | //          Count the number of children for the structure element. | 
 | // Parameters: | 
 | //          struct_element -   Handle to the struct element. | 
 | // Return value: | 
 | //          The number of children, or -1 on error. | 
 | FPDF_EXPORT int FPDF_CALLCONV | 
 | FPDF_StructElement_CountChildren(FPDF_STRUCTELEMENT struct_element); | 
 |  | 
 | // Function: FPDF_StructElement_GetChildAtIndex | 
 | //          Get a child in the structure element. | 
 | // Parameters: | 
 | //          struct_tree -   Handle to the struct element. | 
 | //          index       -   The index for the child, 0-based. | 
 | // Return value: | 
 | //          The child at the n-th index or NULL on error. | 
 | // Comments: | 
 | //          If the child exists but is not an element, then this function will | 
 | //          return NULL. This will also return NULL for out of bounds indices. | 
 | FPDF_EXPORT FPDF_STRUCTELEMENT FPDF_CALLCONV | 
 | FPDF_StructElement_GetChildAtIndex(FPDF_STRUCTELEMENT struct_element, | 
 |                                    int index); | 
 |  | 
 | #ifdef __cplusplus | 
 | }  // extern "C" | 
 | #endif | 
 |  | 
 | #endif  // PUBLIC_FPDF_STRUCTTREE_H_ |