"Fix" trimctm

I don't have any idea what's going on here. Details:

mupdf 834243dbfc8ab3e9269b7a789d61e3fe0f8e71f7 - good
      e2a85460370a3110b89fb838bc924c73f87f5b3c - bad

Most things work with either of those, except for:
http://www.gly.uga.edu/railsback/11111misc/SizeofThings36.pdf
This commit is contained in:
malc 2016-07-12 13:39:23 +03:00
parent 029aba29f3
commit 3d484220ec

30
link.c
View file

@ -645,24 +645,20 @@ static void trimctm (pdf_page *page, int pindex)
struct pagedim *pdim = &state.pagedims[pindex];
if (!pdim->tctmready) {
if (state.trimmargins) {
fz_rect realbox, mediabox;
fz_matrix rm, sm, tm, im, ctm1, page_ctm;
fz_rect realbox, mediabox;
fz_matrix rm, sm, tm, im, ctm1, page_ctm;
fz_rotate (&rm, -pdim->rotate);
fz_scale (&sm, 1, -1);
fz_concat (&ctm, &rm, &sm);
realbox = pdim->mediabox;
fz_transform_rect (&realbox, &ctm);
fz_translate (&tm, -realbox.x0, -realbox.y0);
fz_concat (&ctm1, &ctm, &tm);
pdf_page_transform (state.ctx, page, &mediabox, &page_ctm);
fz_invert_matrix (&im, &page_ctm);
fz_concat (&ctm, &im, &ctm1);
fz_rotate (&rm, -pdim->rotate);
fz_scale (&sm, 1, -1);
fz_concat (&ctm, &rm, &sm);
realbox = pdim->mediabox;
fz_transform_rect (&realbox, &ctm);
fz_translate (&tm, -realbox.x0, -realbox.y0);
fz_concat (&ctm1, &ctm, &tm);
pdf_page_transform (state.ctx, page, &mediabox, &page_ctm);
fz_invert_matrix (&im, &page_ctm);
fz_concat (&ctm, &im, &ctm1);
}
else {
ctm = fz_identity;
}
pdim->tctm = ctm;
pdim->tctmready = 1;
}