240 lines
10 KiB
C
240 lines
10 KiB
C
#ifndef MUPDF_PDF_ANNOT_H
|
|
#define MUPDF_PDF_ANNOT_H
|
|
|
|
enum pdf_annot_type
|
|
{
|
|
PDF_ANNOT_TEXT,
|
|
PDF_ANNOT_LINK,
|
|
PDF_ANNOT_FREE_TEXT,
|
|
PDF_ANNOT_LINE,
|
|
PDF_ANNOT_SQUARE,
|
|
PDF_ANNOT_CIRCLE,
|
|
PDF_ANNOT_POLYGON,
|
|
PDF_ANNOT_POLY_LINE,
|
|
PDF_ANNOT_HIGHLIGHT,
|
|
PDF_ANNOT_UNDERLINE,
|
|
PDF_ANNOT_SQUIGGLY,
|
|
PDF_ANNOT_STRIKE_OUT,
|
|
PDF_ANNOT_REDACT,
|
|
PDF_ANNOT_STAMP,
|
|
PDF_ANNOT_CARET,
|
|
PDF_ANNOT_INK,
|
|
PDF_ANNOT_POPUP,
|
|
PDF_ANNOT_FILE_ATTACHMENT,
|
|
PDF_ANNOT_SOUND,
|
|
PDF_ANNOT_MOVIE,
|
|
PDF_ANNOT_WIDGET,
|
|
PDF_ANNOT_SCREEN,
|
|
PDF_ANNOT_PRINTER_MARK,
|
|
PDF_ANNOT_TRAP_NET,
|
|
PDF_ANNOT_WATERMARK,
|
|
PDF_ANNOT_3D,
|
|
PDF_ANNOT_UNKNOWN = -1
|
|
};
|
|
|
|
const char *pdf_string_from_annot_type(fz_context *ctx, enum pdf_annot_type type);
|
|
enum pdf_annot_type pdf_annot_type_from_string(fz_context *ctx, const char *subtype);
|
|
|
|
enum
|
|
{
|
|
PDF_ANNOT_IS_INVISIBLE = 1 << (1-1),
|
|
PDF_ANNOT_IS_HIDDEN = 1 << (2-1),
|
|
PDF_ANNOT_IS_PRINT = 1 << (3-1),
|
|
PDF_ANNOT_IS_NO_ZOOM = 1 << (4-1),
|
|
PDF_ANNOT_IS_NO_ROTATE = 1 << (5-1),
|
|
PDF_ANNOT_IS_NO_VIEW = 1 << (6-1),
|
|
PDF_ANNOT_IS_READ_ONLY = 1 << (7-1),
|
|
PDF_ANNOT_IS_LOCKED = 1 << (8-1),
|
|
PDF_ANNOT_IS_TOGGLE_NO_VIEW = 1 << (9-1),
|
|
PDF_ANNOT_IS_LOCKED_CONTENTS = 1 << (10-1)
|
|
};
|
|
|
|
enum pdf_line_ending
|
|
{
|
|
PDF_ANNOT_LE_NONE = 0,
|
|
PDF_ANNOT_LE_SQUARE,
|
|
PDF_ANNOT_LE_CIRCLE,
|
|
PDF_ANNOT_LE_DIAMOND,
|
|
PDF_ANNOT_LE_OPEN_ARROW,
|
|
PDF_ANNOT_LE_CLOSED_ARROW,
|
|
PDF_ANNOT_LE_BUTT,
|
|
PDF_ANNOT_LE_R_OPEN_ARROW,
|
|
PDF_ANNOT_LE_R_CLOSED_ARROW,
|
|
PDF_ANNOT_LE_SLASH
|
|
};
|
|
|
|
enum
|
|
{
|
|
PDF_ANNOT_Q_LEFT = 0,
|
|
PDF_ANNOT_Q_CENTER = 1,
|
|
PDF_ANNOT_Q_RIGHT = 2
|
|
};
|
|
|
|
enum pdf_line_ending pdf_line_ending_from_name(fz_context *ctx, pdf_obj *end);
|
|
enum pdf_line_ending pdf_line_ending_from_string(fz_context *ctx, const char *end);
|
|
pdf_obj *pdf_name_from_line_ending(fz_context *ctx, enum pdf_line_ending end);
|
|
const char *pdf_string_from_line_ending(fz_context *ctx, enum pdf_line_ending end);
|
|
|
|
pdf_annot *pdf_keep_annot(fz_context *ctx, pdf_annot *annot);
|
|
void pdf_drop_annot(fz_context *ctx, pdf_annot *annot);
|
|
|
|
pdf_annot *pdf_first_annot(fz_context *ctx, pdf_page *page);
|
|
pdf_annot *pdf_next_annot(fz_context *ctx, pdf_annot *annot);
|
|
|
|
fz_rect pdf_bound_annot(fz_context *ctx, pdf_annot *annot);
|
|
|
|
enum pdf_annot_type pdf_annot_type(fz_context *ctx, pdf_annot *annot);
|
|
|
|
void pdf_run_annot(fz_context *ctx, pdf_annot *annot, fz_device *dev, fz_matrix ctm, fz_cookie *cookie);
|
|
|
|
struct pdf_annot_s
|
|
{
|
|
int refs;
|
|
|
|
pdf_page *page;
|
|
pdf_obj *obj;
|
|
|
|
pdf_obj *ap;
|
|
|
|
int is_hot;
|
|
int is_active;
|
|
|
|
int needs_new_ap;
|
|
int has_new_ap;
|
|
int ignore_trigger_events;
|
|
|
|
pdf_annot *next;
|
|
};
|
|
|
|
char *pdf_parse_file_spec(fz_context *ctx, pdf_document *doc, pdf_obj *file_spec, pdf_obj *dest);
|
|
char *pdf_parse_link_dest(fz_context *ctx, pdf_document *doc, pdf_obj *obj);
|
|
char *pdf_parse_link_action(fz_context *ctx, pdf_document *doc, pdf_obj *obj, int pagenum);
|
|
pdf_obj *pdf_lookup_dest(fz_context *ctx, pdf_document *doc, pdf_obj *needle);
|
|
pdf_obj *pdf_lookup_name(fz_context *ctx, pdf_document *doc, pdf_obj *which, pdf_obj *needle);
|
|
pdf_obj *pdf_load_name_tree(fz_context *ctx, pdf_document *doc, pdf_obj *which);
|
|
pdf_obj *pdf_lookup_number(fz_context *ctx, pdf_obj *root, int needle);
|
|
|
|
int pdf_resolve_link(fz_context *ctx, pdf_document *doc, const char *uri, float *xp, float *yp);
|
|
fz_location pdf_resolve_link_imp(fz_context *ctx, fz_document *doc_, const char *uri, float *xp, float *yp);
|
|
fz_link *pdf_load_link_annots(fz_context *ctx, pdf_document *, pdf_obj *annots, int pagenum, fz_matrix page_ctm);
|
|
|
|
fz_matrix pdf_annot_transform(fz_context *ctx, pdf_annot *annot);
|
|
void pdf_load_annots(fz_context *ctx, pdf_page *page, pdf_obj *annots);
|
|
void pdf_drop_annots(fz_context *ctx, pdf_annot *annot_list);
|
|
void pdf_drop_widgets(fz_context *ctx, pdf_widget *widget_list);
|
|
|
|
pdf_annot *pdf_create_annot_raw(fz_context *ctx, pdf_page *page, enum pdf_annot_type type);
|
|
pdf_annot *pdf_create_annot(fz_context *ctx, pdf_page *page, enum pdf_annot_type type);
|
|
|
|
void pdf_delete_annot(fz_context *ctx, pdf_page *page, pdf_annot *annot);
|
|
|
|
int pdf_annot_has_ink_list(fz_context *ctx, pdf_annot *annot);
|
|
int pdf_annot_has_quad_points(fz_context *ctx, pdf_annot *annot);
|
|
int pdf_annot_has_vertices(fz_context *ctx, pdf_annot *annot);
|
|
int pdf_annot_has_line(fz_context *ctx, pdf_annot *annot);
|
|
int pdf_annot_has_interior_color(fz_context *ctx, pdf_annot *annot);
|
|
int pdf_annot_has_line_ending_styles(fz_context *ctx, pdf_annot *annot);
|
|
int pdf_annot_has_icon_name(fz_context *ctx, pdf_annot *annot);
|
|
int pdf_annot_has_open(fz_context *ctx, pdf_annot *annot);
|
|
int pdf_annot_has_author(fz_context *ctx, pdf_annot *annot);
|
|
|
|
int pdf_annot_flags(fz_context *ctx, pdf_annot *annot);
|
|
fz_rect pdf_annot_rect(fz_context *ctx, pdf_annot *annot);
|
|
float pdf_annot_border(fz_context *ctx, pdf_annot *annot);
|
|
float pdf_annot_opacity(fz_context *ctx, pdf_annot *annot);
|
|
void pdf_annot_color(fz_context *ctx, pdf_annot *annot, int *n, float color[4]);
|
|
void pdf_annot_interior_color(fz_context *ctx, pdf_annot *annot, int *n, float color[4]);
|
|
int pdf_annot_quadding(fz_context *ctx, pdf_annot *annot);
|
|
|
|
void pdf_annot_MK_BG(fz_context *ctx, pdf_annot *annot, int *n, float color[4]);
|
|
void pdf_annot_MK_BC(fz_context *ctx, pdf_annot *annot, int *n, float color[4]);
|
|
int pdf_annot_MK_BG_rgb(fz_context *ctx, pdf_annot *annot, float rgb[3]);
|
|
int pdf_annot_MK_BC_rgb(fz_context *ctx, pdf_annot *annot, float rgb[3]);
|
|
|
|
int pdf_annot_quad_point_count(fz_context *ctx, pdf_annot *annot);
|
|
fz_quad pdf_annot_quad_point(fz_context *ctx, pdf_annot *annot, int i);
|
|
|
|
int pdf_annot_ink_list_count(fz_context *ctx, pdf_annot *annot);
|
|
int pdf_annot_ink_list_stroke_count(fz_context *ctx, pdf_annot *annot, int i);
|
|
fz_point pdf_annot_ink_list_stroke_vertex(fz_context *ctx, pdf_annot *annot, int i, int k);
|
|
|
|
void pdf_set_annot_flags(fz_context *ctx, pdf_annot *annot, int flags);
|
|
void pdf_set_annot_rect(fz_context *ctx, pdf_annot *annot, fz_rect rect);
|
|
void pdf_set_annot_border(fz_context *ctx, pdf_annot *annot, float width);
|
|
void pdf_set_annot_opacity(fz_context *ctx, pdf_annot *annot, float opacity);
|
|
void pdf_set_annot_color(fz_context *ctx, pdf_annot *annot, int n, const float color[4]);
|
|
void pdf_set_annot_interior_color(fz_context *ctx, pdf_annot *annot, int n, const float color[4]);
|
|
void pdf_set_annot_quadding(fz_context *ctx, pdf_annot *annot, int q);
|
|
|
|
void pdf_set_annot_quad_points(fz_context *ctx, pdf_annot *annot, int n, const fz_quad *qv);
|
|
void pdf_clear_annot_quad_points(fz_context *ctx, pdf_annot *annot);
|
|
void pdf_add_annot_quad_point(fz_context *ctx, pdf_annot *annot, fz_quad quad);
|
|
|
|
void pdf_set_annot_ink_list(fz_context *ctx, pdf_annot *annot, int n, const int *count, const fz_point *v);
|
|
void pdf_clear_annot_ink_list(fz_context *ctx, pdf_annot *annot);
|
|
void pdf_add_annot_ink_list_stroke(fz_context *ctx, pdf_annot *annot);
|
|
void pdf_add_annot_ink_list_stroke_vertex(fz_context *ctx, pdf_annot *annot, fz_point p);
|
|
void pdf_add_annot_ink_list(fz_context *ctx, pdf_annot *annot, int n, fz_point stroke[]);
|
|
|
|
void pdf_set_annot_icon_name(fz_context *ctx, pdf_annot *annot, const char *name);
|
|
void pdf_set_annot_is_open(fz_context *ctx, pdf_annot *annot, int is_open);
|
|
|
|
enum pdf_line_ending pdf_annot_line_start_style(fz_context *ctx, pdf_annot *annot);
|
|
enum pdf_line_ending pdf_annot_line_end_style(fz_context *ctx, pdf_annot *annot);
|
|
void pdf_annot_line_ending_styles(fz_context *ctx, pdf_annot *annot, enum pdf_line_ending *start_style, enum pdf_line_ending *end_style);
|
|
void pdf_set_annot_line_start_style(fz_context *ctx, pdf_annot *annot, enum pdf_line_ending s);
|
|
void pdf_set_annot_line_end_style(fz_context *ctx, pdf_annot *annot, enum pdf_line_ending e);
|
|
void pdf_set_annot_line_ending_styles(fz_context *ctx, pdf_annot *annot, enum pdf_line_ending start_style, enum pdf_line_ending end_style);
|
|
|
|
const char *pdf_annot_icon_name(fz_context *ctx, pdf_annot *annot);
|
|
int pdf_annot_is_open(fz_context *ctx, pdf_annot *annot);
|
|
|
|
void pdf_annot_line(fz_context *ctx, pdf_annot *annot, fz_point *a, fz_point *b);
|
|
void pdf_set_annot_line(fz_context *ctx, pdf_annot *annot, fz_point a, fz_point b);
|
|
|
|
int pdf_annot_vertex_count(fz_context *ctx, pdf_annot *annot);
|
|
fz_point pdf_annot_vertex(fz_context *ctx, pdf_annot *annot, int i);
|
|
|
|
void pdf_set_annot_vertices(fz_context *ctx, pdf_annot *annot, int n, const fz_point *v);
|
|
void pdf_clear_annot_vertices(fz_context *ctx, pdf_annot *annot);
|
|
void pdf_add_annot_vertex(fz_context *ctx, pdf_annot *annot, fz_point p);
|
|
void pdf_set_annot_vertex(fz_context *ctx, pdf_annot *annot, int i, fz_point p);
|
|
|
|
const char *pdf_annot_contents(fz_context *ctx, pdf_annot *annot);
|
|
void pdf_set_annot_contents(fz_context *ctx, pdf_annot *annot, const char *text);
|
|
|
|
const char *pdf_annot_author(fz_context *ctx, pdf_annot *annot);
|
|
void pdf_set_annot_author(fz_context *ctx, pdf_annot *annot, const char *author);
|
|
|
|
int64_t pdf_annot_modification_date(fz_context *ctx, pdf_annot *annot);
|
|
|
|
void pdf_set_annot_modification_date(fz_context *ctx, pdf_annot *annot, int64_t time);
|
|
|
|
void pdf_parse_default_appearance(fz_context *ctx, const char *da, const char **font, float *size, float color[3]);
|
|
void pdf_print_default_appearance(fz_context *ctx, char *buf, int nbuf, const char *font, float size, const float color[3]);
|
|
void pdf_annot_default_appearance(fz_context *ctx, pdf_annot *annot, const char **font, float *size, float color[3]);
|
|
void pdf_set_annot_default_appearance(fz_context *ctx, pdf_annot *annot, const char *font, float size, const float color[3]);
|
|
|
|
void pdf_dirty_annot(fz_context *ctx, pdf_annot *annot);
|
|
|
|
void pdf_update_appearance(fz_context *ctx, pdf_annot *annot);
|
|
void pdf_update_signature_appearance(fz_context *ctx, pdf_annot *annot, const char *name, const char *text, const char *date);
|
|
|
|
int pdf_update_annot(fz_context *ctx, pdf_annot *annot);
|
|
|
|
int pdf_update_page(fz_context *ctx, pdf_page *page);
|
|
|
|
void pdf_set_widget_editing_state(fz_context *ctx, pdf_widget *widget, int editing);
|
|
|
|
int pdf_get_widget_editing_state(fz_context *ctx, pdf_widget *widget);
|
|
|
|
int pdf_toggle_widget(fz_context *ctx, pdf_widget *widget);
|
|
|
|
fz_display_list *pdf_new_display_list_from_annot(fz_context *ctx, pdf_annot *annot);
|
|
fz_pixmap *pdf_new_pixmap_from_annot(fz_context *ctx, pdf_annot *annot, fz_matrix ctm, fz_colorspace *cs, fz_separations *seps, int alpha);
|
|
fz_stext_page *pdf_new_stext_page_from_annot(fz_context *ctx, pdf_annot *annot, const fz_stext_options *options);
|
|
|
|
fz_layout_block *pdf_layout_text_widget(fz_context *ctx, pdf_annot *annot);
|
|
|
|
#endif
|