summaryrefslogtreecommitdiff
path: root/fitz/fitz.h
diff options
context:
space:
mode:
authorRobin Watts <robin.watts@artifex.com>2011-12-28 14:09:26 +0000
committerRobin Watts <robin.watts@artifex.com>2011-12-28 14:25:45 +0000
commitd442ada2f85d91077ef8cc20d43a48d832037635 (patch)
treea086095579001390c82a70ebd44498776069a6f2 /fitz/fitz.h
parent0d70079719b89aae1e5342d098389ef04bf313bc (diff)
downloadmupdf-d442ada2f85d91077ef8cc20d43a48d832037635.tar.xz
Outline/link destination tweaks.
Move 'kind' into the fz_link_dest structure (as this makes more sense). Put an fz_link_dest rather than just a page number into the outlines structure. Correct parsing of actions and dests from pdf outlines.
Diffstat (limited to 'fitz/fitz.h')
-rw-r--r--fitz/fitz.h98
1 files changed, 56 insertions, 42 deletions
diff --git a/fitz/fitz.h b/fitz/fitz.h
index 9ac43d48..d79d39f2 100644
--- a/fitz/fitz.h
+++ b/fitz/fitz.h
@@ -1160,24 +1160,6 @@ void fz_free_display_list(fz_context *ctx, fz_display_list *list);
fz_device *fz_new_list_device(fz_context *ctx, fz_display_list *list);
void fz_execute_display_list(fz_display_list *list, fz_device *dev, fz_matrix ctm, fz_bbox area);
-/*
- * Document interface.
- */
-
-typedef struct fz_outline_s fz_outline;
-
-struct fz_outline_s
-{
- fz_context *ctx;
- char *title;
- int page;
- fz_outline *next;
- fz_outline *down;
-};
-
-void fz_debug_outline_xml(fz_outline *outline, int level);
-void fz_debug_outline(fz_outline *outline, int level);
-void fz_free_outline(fz_outline *outline);
/*
* Plotting functions.
@@ -1237,11 +1219,12 @@ enum
typedef struct fz_link_s fz_link;
-typedef union fz_link_dest_s fz_link_dest;
+typedef struct fz_link_dest_s fz_link_dest;
typedef enum fz_link_kind_e
{
- FZ_LINK_GOTO = 0,
+ FZ_LINK_NONE = 0,
+ FZ_LINK_GOTO,
FZ_LINK_URI,
FZ_LINK_LAUNCH,
FZ_LINK_NAMED,
@@ -1258,39 +1241,70 @@ enum {
fz_link_flag_r_is_zoom = 64 /* rb.x is actually a zoom figure */
};
-union fz_link_dest_s
+struct fz_link_dest_s
{
- struct {
- int page;
- 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;
- } launch;
- struct {
- char *named;
- } named;
+ fz_link_kind kind;
+ union
+ {
+ struct
+ {
+ int page;
+ 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;
+ }
+ launch;
+ struct
+ {
+ char *named;
+ }
+ named;
+ }
+ ld;
};
struct fz_link_s
{
- fz_link_kind kind;
fz_rect rect;
fz_link_dest dest;
fz_link *next;
};
-fz_link *fz_new_link(fz_context *ctx, fz_link_kind, fz_rect bbox, fz_link_dest dest);
+fz_link *fz_new_link(fz_context *ctx, fz_rect bbox, fz_link_dest dest);
void fz_free_link(fz_context *ctx, fz_link *);
+/*
+ * Document interface.
+ */
+
+typedef struct fz_outline_s fz_outline;
+
+struct fz_outline_s
+{
+ fz_context *ctx;
+ char *title;
+ fz_link_dest dest;
+ fz_outline *next;
+ fz_outline *down;
+};
+
+void fz_debug_outline_xml(fz_outline *outline, int level);
+void fz_debug_outline(fz_outline *outline, int level);
+void fz_free_outline(fz_outline *outline);
+
#endif