From 5cec6b4c3df09b59464c9a492b60b86ffd0d5311 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Thu, 18 Feb 2021 09:14:05 -0500 Subject: Add QPDFPageObjectHelper::getMatrixForFormXObjectPlacement --- libqpdf/QPDFPageObjectHelper.cc | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) (limited to 'libqpdf/QPDFPageObjectHelper.cc') diff --git a/libqpdf/QPDFPageObjectHelper.cc b/libqpdf/QPDFPageObjectHelper.cc index da8b3919..e744457b 100644 --- a/libqpdf/QPDFPageObjectHelper.cc +++ b/libqpdf/QPDFPageObjectHelper.cc @@ -947,10 +947,9 @@ QPDFPageObjectHelper::getFormXObjectForPage(bool handle_transformations) return result; } -std::string -QPDFPageObjectHelper::placeFormXObject( - QPDFObjectHandle fo, std::string const& name, - QPDFObjectHandle::Rectangle rect, +QPDFMatrix +QPDFPageObjectHelper::getMatrixForFormXObjectPlacement( + QPDFObjectHandle fo, QPDFObjectHandle::Rectangle rect, bool invert_transformations, bool allow_shrink, bool allow_expand) { @@ -971,7 +970,7 @@ QPDFPageObjectHelper::placeFormXObject( QPDFObjectHandle bbox_obj = fdict.getKey("/BBox"); if (! bbox_obj.isRectangle()) { - return ""; + return QPDFMatrix(); } QPDFMatrix wmatrix; // work matrix @@ -1014,7 +1013,7 @@ QPDFPageObjectHelper::placeFormXObject( if ((T.urx == T.llx) || (T.ury == T.lly)) { // avoid division by zero - return ""; + return QPDFMatrix(); } double rect_w = rect.urx - rect.llx; double rect_h = rect.ury - rect.lly; @@ -1060,6 +1059,18 @@ QPDFPageObjectHelper::placeFormXObject( cm.translate(tx, ty); cm.scale(scale, scale); cm.concat(tmatrix); + return cm; +} + +std::string +QPDFPageObjectHelper::placeFormXObject( + QPDFObjectHandle fo, std::string const& name, + QPDFObjectHandle::Rectangle rect, + bool invert_transformations, + bool allow_shrink, bool allow_expand) +{ + QPDFMatrix cm = getMatrixForFormXObjectPlacement( + fo, rect, invert_transformations, allow_shrink, allow_expand); return ( "q\n" + cm.unparse() + " cm\n" + -- cgit v1.2.3-54-g00ecf