summaryrefslogtreecommitdiff
path: root/source/pdf/pdf-annot.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/pdf/pdf-annot.c')
-rw-r--r--source/pdf/pdf-annot.c141
1 files changed, 0 insertions, 141 deletions
diff --git a/source/pdf/pdf-annot.c b/source/pdf/pdf-annot.c
deleted file mode 100644
index 38b62cf3..00000000
--- a/source/pdf/pdf-annot.c
+++ /dev/null
@@ -1,141 +0,0 @@
-#include "mupdf/fitz.h"
-#include "mupdf/pdf.h"
-
-#include <string.h>
-
-#ifdef _WIN32
-#define timegm _mkgmtime
-#endif
-
-
-static void
-pdf_drop_annot_imp(fz_context *ctx, pdf_annot *annot)
-{
- pdf_drop_obj(ctx, annot->ap);
- pdf_drop_obj(ctx, annot->obj);
-}
-
-void
-pdf_drop_annots(fz_context *ctx, pdf_annot *annot)
-{
- while (annot)
- {
- pdf_annot *next = annot->next;
- fz_drop_annot(ctx, &annot->super);
- annot = next;
- }
-}
-
-/* Create transform to fit appearance stream to annotation Rect */
-void
-pdf_annot_transform(fz_context *ctx, pdf_annot *annot, fz_matrix *annot_ctm)
-{
- fz_rect bbox, rect;
- fz_matrix matrix;
- float w, h, x, y;
-
- pdf_to_rect(ctx, pdf_dict_get(ctx, annot->obj, PDF_NAME(Rect)), &rect);
- pdf_xobject_bbox(ctx, annot->ap, &bbox);
- pdf_xobject_matrix(ctx, annot->ap, &matrix);
-
- fz_transform_rect(&bbox, &matrix);
- if (bbox.x1 == bbox.x0)
- w = 0;
- else
- w = (rect.x1 - rect.x0) / (bbox.x1 - bbox.x0);
- if (bbox.y1 == bbox.y0)
- h = 0;
- else
- h = (rect.y1 - rect.y0) / (bbox.y1 - bbox.y0);
- x = rect.x0 - bbox.x0;
- y = rect.y0 - bbox.y0;
-
- fz_pre_scale(fz_translate(annot_ctm, x, y), w, h);
-}
-
-pdf_annot *pdf_new_annot(fz_context *ctx, pdf_page *page, pdf_obj *obj)
-{
- pdf_annot *annot;
-
- annot = fz_new_derived_annot(ctx, pdf_annot);
-
- annot->super.drop_annot = (fz_annot_drop_fn*)pdf_drop_annot_imp;
- annot->super.bound_annot = (fz_annot_bound_fn*)pdf_bound_annot;
- annot->super.run_annot = (fz_annot_run_fn*)pdf_run_annot;
- annot->super.next_annot = (fz_annot_next_fn*)pdf_next_annot;
-
- annot->page = page; /* only borrowed, as the page owns the annot */
- annot->obj = pdf_keep_obj(ctx, obj);
-
- return annot;
-}
-
-void
-pdf_load_annots(fz_context *ctx, pdf_page *page, pdf_obj *annots)
-{
- pdf_document *doc = page->doc;
- pdf_annot *annot;
- pdf_obj *subtype;
- int i, n;
-
- n = pdf_array_len(ctx, annots);
- for (i = 0; i < n; ++i)
- {
- pdf_obj *obj = pdf_array_get(ctx, annots, i);
- if (obj)
- {
- subtype = pdf_dict_get(ctx, obj, PDF_NAME(Subtype));
- if (pdf_name_eq(ctx, subtype, PDF_NAME(Link)))
- continue;
- if (pdf_name_eq(ctx, subtype, PDF_NAME(Popup)))
- continue;
-
- annot = pdf_new_annot(ctx, page, obj);
- fz_try(ctx)
- {
- pdf_update_annot(ctx, annot);
- annot->has_new_ap = 0;
- }
- fz_catch(ctx)
- fz_warn(ctx, "could not update appearance for annotation");
-
- if (doc->focus_obj == obj)
- doc->focus = annot;
-
- *page->annot_tailp = annot;
- page->annot_tailp = &annot->next;
- }
- }
-}
-
-pdf_annot *
-pdf_first_annot(fz_context *ctx, pdf_page *page)
-{
- return page ? page->annots : NULL;
-}
-
-pdf_annot *
-pdf_next_annot(fz_context *ctx, pdf_annot *annot)
-{
- return annot ? annot->next : NULL;
-}
-
-fz_rect *
-pdf_bound_annot(fz_context *ctx, pdf_annot *annot, fz_rect *rect)
-{
- pdf_obj *obj = pdf_dict_get(ctx, annot->obj, PDF_NAME(Rect));
- fz_rect mediabox;
- fz_matrix page_ctm;
- pdf_to_rect(ctx, obj, rect);
- pdf_page_transform(ctx, annot->page, &mediabox, &page_ctm);
- fz_transform_rect(rect, &page_ctm);
- return rect;
-}
-
-void
-pdf_dirty_annot(fz_context *ctx, pdf_annot *annot)
-{
- annot->needs_new_ap = 1;
- if (annot->page && annot->page->doc)
- annot->page->doc->dirty = 1;
-}