/usr/include/mupdf/fitz/link.h is in libmupdf-dev 1.7a-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 | #ifndef MUPDF_FITZ_LINK_H
#define MUPDF_FITZ_LINK_H
#include "mupdf/fitz/system.h"
#include "mupdf/fitz/context.h"
#include "mupdf/fitz/math.h"
/*
Links
NOTE: The link destination struct is scheduled for imminent change!
Use at your own peril.
*/
typedef struct fz_link_s fz_link;
typedef struct fz_link_dest_s fz_link_dest;
typedef enum fz_link_kind_e
{
FZ_LINK_NONE = 0,
FZ_LINK_GOTO,
FZ_LINK_URI,
FZ_LINK_LAUNCH,
FZ_LINK_NAMED,
FZ_LINK_GOTOR
} fz_link_kind;
enum {
fz_link_flag_l_valid = 1, /* lt.x is valid */
fz_link_flag_t_valid = 2, /* lt.y is valid */
fz_link_flag_r_valid = 4, /* rb.x is valid */
fz_link_flag_b_valid = 8, /* rb.y is valid */
fz_link_flag_fit_h = 16, /* Fit horizontally */
fz_link_flag_fit_v = 32, /* Fit vertically */
fz_link_flag_r_is_zoom = 64 /* rb.x is actually a zoom figure */
};
/*
fz_link_dest: This structure represents the destination of
an fz_link; this may be a page to display, a new file to open,
a javascript action to perform, etc.
kind: This identifies the kind of link destination. Different
kinds use different sections of the union.
For FZ_LINK_GOTO or FZ_LINK_GOTOR:
gotor.page: The target page number to move to (0 being the
first page in the document). In the FZ_LINK_GOTOR case, the
page number either refers to to the file specified by
gotor.file_spec, or the page number is -1 suggesting that
the destination is given by gotor.dest.
gotor.dest: If set, the target destination name to be
resolved in the file specified by gotor.file_spec. Always
NULL in the FZ_LINK_GOTO case.
gotor.flags: A bitfield consisting of fz_link_flag_*
describing the validity and meaning of the different parts
of gotor.lt and gotor.rb. Link destinations are constructed
(as far as possible) so that lt and rb can be treated as a
bounding box, though the validity flags indicate which of the
values was actually specified in the file.
gotor.lt: The top left corner of the destination bounding box.
gotor.rb: The bottom right corner of the destination bounding
box. If fz_link_flag_r_is_zoom is set, then the r figure
should actually be interpretted as a zoom ratio.
gotor.file_spec: If set, this destination should cause a new
file to be opened; this field holds a pointer to a remote
file specification (UTF-8). Always NULL in the FZ_LINK_GOTO
case.
gotor.new_window: If true, the destination should open in a
new window. Always false in the FZ_LINK_GOTO case.
For FZ_LINK_URI:
uri.uri: A UTF-8 encoded URI to launch.
uri.is_map: If true, the x and y coords (as ints, in user
space) should be appended to the URI before launch.
For FZ_LINK_LAUNCH:
launch.file_spec: A UTF-8 file specification to launch.
launch.new_window: If true, the destination should be launched
in a new window.
launch.is_uri: If true, launch.file_spec is a URI to launch.
For FZ_LINK_NAMED:
named.named: The named action to perform. Likely to be
client specific.
*/
struct fz_link_dest_s
{
fz_link_kind kind;
union
{
struct
{
int page;
char *dest;
int flags;
fz_point lt;
fz_point rb;
char *file_spec;
int new_window;
}
gotor;
struct
{
char *uri;
int is_map;
}
uri;
struct
{
char *file_spec;
int new_window;
int is_uri;
}
launch;
struct
{
char *named;
}
named;
}
ld;
};
/*
fz_link is a list of interactive links on a page.
There is no relation between the order of the links in the
list and the order they appear on the page. The list of links
for a given page can be obtained from fz_load_links.
A link is reference counted. Dropping a reference to a link is
done by calling fz_drop_link.
rect: The hot zone. The area that can be clicked in
untransformed coordinates.
dest: Link destinations come in two forms: Page and area that
an application should display when this link is activated. Or
as an URI that can be given to a browser.
next: A pointer to the next link on the same page.
*/
struct fz_link_s
{
int refs;
fz_rect rect;
fz_link_dest dest;
fz_link *next;
};
fz_link *fz_new_link(fz_context *ctx, const fz_rect *bbox, fz_link_dest dest);
fz_link *fz_keep_link(fz_context *ctx, fz_link *link);
/*
fz_drop_link: Drop and free a list of links.
Does not throw exceptions.
*/
void fz_drop_link(fz_context *ctx, fz_link *link);
void fz_drop_link_dest(fz_context *ctx, fz_link_dest *dest);
#endif
|