#ifndef MUPDF_PDF_ANNOT_H
#define MUPDF_PDF_ANNOT_H
enum
{
F_Invisible = 1 << (1-1),
F_Hidden = 1 << (2-1),
F_Print = 1 << (3-1),
F_NoZoom = 1 << (4-1),
F_NoRotate = 1 << (5-1),
F_NoView = 1 << (6-1),
F_ReadOnly = 1 << (7-1),
F_Locked = 1 << (8-1),
F_ToggleNoView = 1 << (9-1),
F_LockedContents = 1 << (10-1)
};
pdf_annot *pdf_first_annot(fz_context *ctx, pdf_page *page);
pdf_annot *pdf_next_annot(fz_context *ctx, pdf_page *page, pdf_annot *annot);
fz_rect *pdf_bound_annot(fz_context *ctx, pdf_page *page, pdf_annot *annot, fz_rect *rect);
fz_annot_type pdf_annot_type(fz_context *ctx, pdf_annot *annot);
void pdf_run_annot(fz_context *ctx, pdf_page *page, pdf_annot *annot, fz_device *dev, const fz_matrix *ctm, fz_cookie *cookie);
struct pdf_annot_s
{
pdf_page *page;
pdf_obj *obj;
fz_rect rect;
fz_rect pagerect;
pdf_xobject *ap;
int ap_iteration;
fz_matrix matrix;
pdf_annot *next;
pdf_annot *next_changed;
int annot_type;
int widget_type;
};
fz_link_dest pdf_parse_link_dest(fz_context *ctx, pdf_document *doc, fz_link_kind kind, pdf_obj *dest);
char *pdf_parse_file_spec(fz_context *ctx, pdf_document *doc, pdf_obj *file_spec);
fz_link_dest pdf_parse_action(fz_context *ctx, pdf_document *doc, pdf_obj *action);
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);
fz_link *pdf_load_link_annots(fz_context *ctx, pdf_document *, pdf_obj *annots, const fz_matrix *page_ctm);
void pdf_transform_annot(fz_context *ctx, pdf_annot *annot);
void pdf_load_annots(fz_context *ctx, pdf_document *, pdf_page *page, pdf_obj *annots);
void pdf_update_annot(fz_context *ctx, pdf_document *, pdf_annot *annot);
void pdf_drop_annot(fz_context *ctx, pdf_annot *link);
pdf_annot *pdf_create_annot(fz_context *ctx, pdf_document *doc, pdf_page *page, fz_annot_type type);
void pdf_delete_annot(fz_context *ctx, pdf_document *doc, pdf_page *page, pdf_annot *annot);
void pdf_set_markup_annot_quadpoints(fz_context *ctx, pdf_document *doc, pdf_annot *annot, fz_point *qp, int n);
void pdf_set_ink_annot_list(fz_context *ctx, pdf_document *doc, pdf_annot *annot, fz_point *pts, int *counts, int ncount, float color[3], float thickness);
void pdf_set_text_annot_position(fz_context *ctx, pdf_document *doc, pdf_annot *annot, fz_point pt);
void pdf_set_annot_contents(fz_context *ctx, pdf_document *doc, pdf_annot *annot, char *text);
char *pdf_annot_contents(fz_context *ctx, pdf_document *doc, pdf_annot *annot);
void pdf_set_free_text_details(fz_context *ctx, pdf_document *doc, pdf_annot *annot, fz_point *pos, char *text, char *font_name, float font_size, float color[3]);
fz_annot_type pdf_annot_obj_type(fz_context *ctx, pdf_obj *obj);
pdf_annot *pdf_poll_changed_annot(fz_context *ctx, pdf_document *idoc, pdf_page *page);
#endif