mupdf
Loading...
Searching...
No Matches
outline.h File Reference
Include dependency graph for outline.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  fz_outline_item
struct  fz_outline
struct  fz_outline_iterator

Macros

#define fz_new_derived_outline_iter(CTX, TYPE, DOC)

Typedefs

typedef struct fz_outline_iterator fz_outline_iterator
typedef struct fz_outline fz_outline
typedef fz_outline_itemfz_outline_iterator_item_fn(fz_context *ctx, fz_outline_iterator *iter)
typedef int fz_outline_iterator_next_fn(fz_context *ctx, fz_outline_iterator *iter)
typedef int fz_outline_iterator_prev_fn(fz_context *ctx, fz_outline_iterator *iter)
typedef int fz_outline_iterator_up_fn(fz_context *ctx, fz_outline_iterator *iter)
typedef int fz_outline_iterator_down_fn(fz_context *ctx, fz_outline_iterator *iter)
typedef int fz_outline_iterator_insert_fn(fz_context *ctx, fz_outline_iterator *iter, fz_outline_item *item)
typedef int fz_outline_iterator_delete_fn(fz_context *ctx, fz_outline_iterator *iter)
typedef void fz_outline_iterator_update_fn(fz_context *ctx, fz_outline_iterator *iter, fz_outline_item *item)
typedef void fz_outline_iterator_drop_fn(fz_context *ctx, fz_outline_iterator *iter)

Enumerations

enum  { FZ_OUTLINE_FLAG_BOLD = 1 , FZ_OUTLINE_FLAG_ITALIC = 2 }
enum  { FZ_OUTLINE_ITERATOR_DID_NOT_MOVE = -1 , FZ_OUTLINE_ITERATOR_AT_ITEM = 0 , FZ_OUTLINE_ITERATOR_AT_EMPTY = 1 }

Functions

fz_outline_itemfz_outline_iterator_item (fz_context *ctx, fz_outline_iterator *iter)
int fz_outline_iterator_next (fz_context *ctx, fz_outline_iterator *iter)
int fz_outline_iterator_prev (fz_context *ctx, fz_outline_iterator *iter)
int fz_outline_iterator_up (fz_context *ctx, fz_outline_iterator *iter)
int fz_outline_iterator_down (fz_context *ctx, fz_outline_iterator *iter)
int fz_outline_iterator_insert (fz_context *ctx, fz_outline_iterator *iter, fz_outline_item *item)
int fz_outline_iterator_delete (fz_context *ctx, fz_outline_iterator *iter)
void fz_outline_iterator_update (fz_context *ctx, fz_outline_iterator *iter, fz_outline_item *item)
void fz_drop_outline_iterator (fz_context *ctx, fz_outline_iterator *iter)
fz_outlinefz_new_outline (fz_context *ctx)
fz_outlinefz_keep_outline (fz_context *ctx, fz_outline *outline)
void fz_drop_outline (fz_context *ctx, fz_outline *outline)
fz_outlinefz_load_outline_from_iterator (fz_context *ctx, fz_outline_iterator *iter)
fz_outline_iteratorfz_new_outline_iterator_of_size (fz_context *ctx, size_t size, fz_document *doc)
fz_outline_iteratorfz_outline_iterator_from_outline (fz_context *ctx, fz_outline *outline)

Macro Definition Documentation

◆ fz_new_derived_outline_iter

#define fz_new_derived_outline_iter ( CTX,
TYPE,
DOC )
Value:
((TYPE *)Memento_label(fz_new_outline_iterator_of_size(ctx,sizeof(TYPE),DOC),#TYPE))
#define Memento_label(A, B)
Definition memento.h:388
fz_outline_iterator * fz_new_outline_iterator_of_size(fz_context *ctx, size_t size, fz_document *doc)

Typedef Documentation

◆ fz_outline

typedef struct fz_outline fz_outline

Structure based API fz_outline is a tree of the outline of a document (also known as table of contents).

title: Title of outline item using UTF-8 encoding. May be NULL if the outline item has no text string.

uri: Destination in the document to be displayed when this outline item is activated. May be an internal or external link, or NULL if the outline item does not have a destination.

page: The page number of an internal link, or -1 for external links or links with no destination.

next: The next outline item at the same level as this outline item. May be NULL if no more outline items exist at this level.

down: The outline items immediate children in the hierarchy. May be NULL if no children exist.

is_open: If zero, the outline element is closed in the UI. If 1, it should be open, showing any child elements.

flags: Bit 0 set -> Bold, Bit 1 set -> Italic. All other bits reserved.

r, g, b: The RGB components of the color of this entry.

◆ fz_outline_iterator

typedef struct fz_outline_iterator fz_outline_iterator

◆ fz_outline_iterator_delete_fn

typedef int fz_outline_iterator_delete_fn(fz_context *ctx, fz_outline_iterator *iter)

Function type for deleting the current item.

This implicitly moves us to the 'next' item, and the return code is as for fz_outline_iterator_next.

◆ fz_outline_iterator_down_fn

typedef int fz_outline_iterator_down_fn(fz_context *ctx, fz_outline_iterator *iter)

◆ fz_outline_iterator_drop_fn

typedef void fz_outline_iterator_drop_fn(fz_context *ctx, fz_outline_iterator *iter)

Function type for dropping the current iterator.

◆ fz_outline_iterator_insert_fn

typedef int fz_outline_iterator_insert_fn(fz_context *ctx, fz_outline_iterator *iter, fz_outline_item *item)

Function type for inserting a new item BEFORE the current point.

Ownership of pointers are retained by the caller. The item data will be copied.

After an insert, we implicitly do a next, so that a successive insert operation would insert after the item inserted here. The return code is therefore as for next.

◆ fz_outline_iterator_item_fn

typedef fz_outline_item * fz_outline_iterator_item_fn(fz_context *ctx, fz_outline_iterator *iter)

Implementation details. Of use to people coding new document handlers. Function type for getting the current item.

Can return NULL. The item is only valid until the next call.

◆ fz_outline_iterator_next_fn

typedef int fz_outline_iterator_next_fn(fz_context *ctx, fz_outline_iterator *iter)

Function types for moving the iterator position.

A negative return value means we could not move as requested. Otherwise: 0 = the final position has a valid item. 1 = not a valid item, but we can insert an item here.

◆ fz_outline_iterator_prev_fn

typedef int fz_outline_iterator_prev_fn(fz_context *ctx, fz_outline_iterator *iter)

◆ fz_outline_iterator_up_fn

typedef int fz_outline_iterator_up_fn(fz_context *ctx, fz_outline_iterator *iter)

◆ fz_outline_iterator_update_fn

typedef void fz_outline_iterator_update_fn(fz_context *ctx, fz_outline_iterator *iter, fz_outline_item *item)

Function type for updating the current item properties according to the given item.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
FZ_OUTLINE_ITERATOR_DID_NOT_MOVE 
FZ_OUTLINE_ITERATOR_AT_ITEM 
FZ_OUTLINE_ITERATOR_AT_EMPTY 

◆ anonymous enum

anonymous enum
Enumerator
FZ_OUTLINE_FLAG_BOLD 
FZ_OUTLINE_FLAG_ITALIC 

Function Documentation

◆ fz_drop_outline()

void fz_drop_outline ( fz_context * ctx,
fz_outline * outline )

Decrements the reference count. When the reference point reaches zero, the outline is freed.

When freed, it will drop linked outline entries (next and down) too, thus a whole outline structure can be dropped by dropping the top entry.

Never throws exceptions.

◆ fz_drop_outline_iterator()

void fz_drop_outline_iterator ( fz_context * ctx,
fz_outline_iterator * iter )

Drop the current iterator.

◆ fz_keep_outline()

fz_outline * fz_keep_outline ( fz_context * ctx,
fz_outline * outline )

Increment the reference count. Returns the same pointer.

Never throws exceptions.

◆ fz_load_outline_from_iterator()

fz_outline * fz_load_outline_from_iterator ( fz_context * ctx,
fz_outline_iterator * iter )

Routine to implement the old Structure based API from an iterator.

◆ fz_new_outline()

fz_outline * fz_new_outline ( fz_context * ctx)

Create a new outline entry with zeroed fields for the caller to fill in.

◆ fz_new_outline_iterator_of_size()

fz_outline_iterator * fz_new_outline_iterator_of_size ( fz_context * ctx,
size_t size,
fz_document * doc )

◆ fz_outline_iterator_delete()

int fz_outline_iterator_delete ( fz_context * ctx,
fz_outline_iterator * iter )

Delete the current item.

This implicitly moves us to the 'next' item, and the return code is as for fz_outline_iterator_next.

◆ fz_outline_iterator_down()

int fz_outline_iterator_down ( fz_context * ctx,
fz_outline_iterator * iter )

◆ fz_outline_iterator_from_outline()

fz_outline_iterator * fz_outline_iterator_from_outline ( fz_context * ctx,
fz_outline * outline )

◆ fz_outline_iterator_insert()

int fz_outline_iterator_insert ( fz_context * ctx,
fz_outline_iterator * iter,
fz_outline_item * item )

Call to insert a new item BEFORE the current point.

Ownership of pointers are retained by the caller. The item data will be copied.

After an insert, we do not change where we are pointing. The return code is the same as for next, it indicates the current iterator position.

Note that for PDF documents at least, the is_open field is ignored. All childless nodes are considered closed by PDF, hence (given every newly inserted node is childless by definition) all new nodes are inserted with is_open == false.

◆ fz_outline_iterator_item()

fz_outline_item * fz_outline_iterator_item ( fz_context * ctx,
fz_outline_iterator * iter )

Call to get the current outline item.

Can return NULL. The item is only valid until the next call.

◆ fz_outline_iterator_next()

int fz_outline_iterator_next ( fz_context * ctx,
fz_outline_iterator * iter )

Calls to move the iterator position.

A negative return value means we could not move as requested. Otherwise: 0 = the final position has a valid item. 1 = not a valid item, but we can insert an item here.

◆ fz_outline_iterator_prev()

int fz_outline_iterator_prev ( fz_context * ctx,
fz_outline_iterator * iter )

◆ fz_outline_iterator_up()

int fz_outline_iterator_up ( fz_context * ctx,
fz_outline_iterator * iter )

◆ fz_outline_iterator_update()

void fz_outline_iterator_update ( fz_context * ctx,
fz_outline_iterator * iter,
fz_outline_item * item )

Update the current item properties according to the given item.