From a69f71e89bc9c325bc91fc0ec69f3ca231c83efe Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Mon, 18 Jun 2018 16:53:31 +0200 Subject: Add fz_quad type. --- include/mupdf/fitz/geometry.h | 9 +++++++++ source/fitz/geometry.c | 21 +++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/include/mupdf/fitz/geometry.h b/include/mupdf/fitz/geometry.h index 180ae8da..f36c884c 100644 --- a/include/mupdf/fitz/geometry.h +++ b/include/mupdf/fitz/geometry.h @@ -637,4 +637,13 @@ void fz_gridfit_matrix(int as_tiled, fz_matrix *m); float fz_matrix_max_expansion(const fz_matrix *m); +typedef struct fz_quad_s fz_quad; +struct fz_quad_s +{ + fz_point ul, ur, ll, lr; +}; + +fz_rect fz_rect_from_quad(fz_quad q); +fz_quad *fz_transform_quad(fz_quad *q, const fz_matrix *m); + #endif diff --git a/source/fitz/geometry.c b/source/fitz/geometry.c index 4c488669..df02eeb5 100644 --- a/source/fitz/geometry.c +++ b/source/fitz/geometry.c @@ -577,3 +577,24 @@ int fz_contains_rect(const fz_rect *a, const fz_rect *b) (a->x1 >= b->x1) && (a->y1 >= b->y1)); } + +fz_rect +fz_rect_from_quad(fz_quad q) +{ + fz_rect r; + r.x0 = MIN4(q.ll.x, q.lr.x, q.ul.x, q.ur.x); + r.y0 = MIN4(q.ll.y, q.lr.y, q.ul.y, q.ur.y); + r.x1 = MAX4(q.ll.x, q.lr.x, q.ul.x, q.ur.x); + r.y1 = MAX4(q.ll.y, q.lr.y, q.ul.y, q.ur.y); + return r; +} + +fz_quad * +fz_transform_quad(fz_quad *q, const fz_matrix *m) +{ + fz_transform_point(&q->ul, m); + fz_transform_point(&q->ur, m); + fz_transform_point(&q->ll, m); + fz_transform_point(&q->lr, m); + return q; +} -- cgit v1.2.3