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.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/source/pdf/pdf-annot.c b/source/pdf/pdf-annot.c
index 1c17882c..85c0f28b 100644
--- a/source/pdf/pdf-annot.c
+++ b/source/pdf/pdf-annot.c
@@ -128,10 +128,23 @@ fz_rect
pdf_bound_annot(fz_context *ctx, pdf_annot *annot)
{
fz_matrix page_ctm;
- fz_rect annot_rect;
+ fz_rect rect;
+ int flags;
+
+ rect = pdf_dict_get_rect(ctx, annot->obj, PDF_NAME(Rect));
pdf_page_transform(ctx, annot->page, NULL, &page_ctm);
- annot_rect = pdf_dict_get_rect(ctx, annot->obj, PDF_NAME(Rect));
- return fz_transform_rect(annot_rect, page_ctm);
+
+ flags = pdf_dict_get_int(ctx, annot->obj, PDF_NAME(F));
+ if (flags & PDF_ANNOT_IS_NO_ROTATE)
+ {
+ int rotate = pdf_to_int(ctx, pdf_dict_get_inheritable(ctx, annot->page->obj, PDF_NAME(Rotate)));
+ fz_point tp = fz_transform_point_xy(rect.x0, rect.y1, page_ctm);
+ page_ctm = fz_concat(page_ctm, fz_translate(-tp.x, -tp.y));
+ page_ctm = fz_concat(page_ctm, fz_rotate(-rotate));
+ page_ctm = fz_concat(page_ctm, fz_translate(tp.x, tp.y));
+ }
+
+ return fz_transform_rect(rect, page_ctm);
}
void