## GXPSDocumentStructure GXPSDocumentStructure — Structure of XPS Document |

## Functions

gboolean | gxps_document_structure_has_outline ()
gboolean | gxps_document_structure_outline_iter_init ()
gboolean | gxps_outline_iter_next ()
gboolean | gxps_outline_iter_children ()
const gchar * | gxps_outline_iter_get_description ()
GXPSLinkTarget * | gxps_outline_iter_get_target ()

## Properties

GXPSArchive * | archive | Write / Construct Only
char * | source | Write / Construct Only

## Types and Values

struct | GXPSDocumentStructure
struct | GXPSOutlineIter

## Object Hierarchy

        GObject
        ╰── GXPSDocumentStructure

## Includes

    #include <libgxps/gxps.h>

## Description

GXPSDocumentStructure represents the structural organization of a XPS document. A GXPSDocumentStructure can contain the document outline, similar to a table of contents, containing hyperlinks. To iterate over the outline items you can use GXPSOutlineIter.

GXPSDocumentStructure objects can not be created directly, they are retrieved from a GXPSDocument with `gxps_document_get_structure()`.

## Functions

### gxps_document_structure_has_outline ()

    gboolean
    gxps_document_structure_has_outline (GXPSDocumentStructure *structure);

Whether `structure` has an outline or not.

#### Parameters

structure | a GXPSDocumentStructure |

#### Returns

`TRUE` if `structure` has an outline, `FALSE` otherwise.

### gxps_document_structure_outline_iter_init ()

    gboolean
    gxps_document_structure_outline_iter_init
                                   (GXPSOutlineIter *iter,
                                    GXPSDocumentStructure *structure);

Initializes `iter` to the root item of the outline contained by `structure` and a associates it with `structure` .

Here is a simple example of some code that walks the full outline:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    static void
    walk_outline (GXPSOutlineIter *iter)
    {
        do {
            GXPSOutlineIter child_iter;
            const gchar    *description = gxps_outline_iter_get_description (iter);
            GXPSLinkTarget *target = gxps_outline_iter_get_target (iter);

            /* Do something with description and taregt */
            if (gxps_outline_iter_children (&child_iter, iter))
                walk_outline (&child_iter);
        } while (gxps_outline_iter_next (iter));
    }
    ...
    {
        GXPSOutlineIter iter;
        if (gxps_document_structure_outline_iter_init (&iter, structure))
            walk_outline (&iter);
    }

#### Parameters

iter | an uninitialized GXPSOutlineIter |
structure | a GXPSDocumentStructure |

#### Returns

`TRUE` if `iter` was successfully initialized to the root item, `FALSE` if it failed or `structure` does not have an outline.

### gxps_outline_iter_next ()

    gboolean
    gxps_outline_iter_next (GXPSOutlineIter *iter);

Advances `iter` to the next item at the current level. See `gxps_document_structure_outline_iter_init()` for more details.

#### Parameters

iter | an initialized GXPSOutlineIter |

#### Returns

`TRUE` if `iter` was set to the next item, `FALSE` if the end of the current level has been reached

### gxps_outline_iter_children ()

    gboolean
    gxps_outline_iter_children (GXPSOutlineIter *iter,
                                GXPSOutlineIter *parent);

Initializes `iter` to the first child item of `parent` . See `gxps_document_structure_outline_iter_init()` for more details.

#### Parameters

iter | an uninitialized GXPSOutlineIter |
parent | an initialized GXPSOutlineIter |

#### Returns

`TRUE` if `iter` was set to the first child of `parent` , `FALSE` if `parent` does not have children.

### gxps_outline_iter_get_description ()

    const gchar *
    gxps_outline_iter_get_description (GXPSOutlineIter *iter);

Gets the description of the outline item associated with `iter` . See `gxps_document_structure_outline_iter_init()` for more details.

#### Parameters

iter | an initialized GXPSOutlineIter |

#### Returns

the description of the outline item

### gxps_outline_iter_get_target ()

    GXPSLinkTarget *
    gxps_outline_iter_get_target (GXPSOutlineIter *iter);

Gets the GXPSLinkTarget of the outline item associated with `iter` . See `gxps_document_structure_outline_iter_init()` for more details.

#### Parameters

iter | an initialized GXPSOutlineIter |

#### Returns

a new allocated GXPSLinkTarget. Free the returned object with `gxps_link_target_free()`.

## Types and Values

### struct GXPSDocumentStructure

    struct GXPSDocumentStructure;

The GXPSDocumentStructure struct contains only private fields and should not be directly accessed.

### struct GXPSOutlineIter

    struct GXPSOutlineIter {
    };

GXPSOutlineIter represents an iterator that can be used to iterate over the items of an outline contained in a GXPSDocumentStructure

## Property Details

### The `“archive”` property

      “archive”                  GXPSArchive *

The document archive.

Owner: GXPSDocumentStructure

Flags: Write / Construct Only

### The `“source”` property

      “source”                   char *

The DocStructure Source File.

Owner: GXPSDocumentStructure

Flags: Write / Construct Only

Default value: NULL

## See Also

GXPSDocument, GXPSLinkTarget