diff options
author | Miklos Vajna <vmiklos@collabora.com> | 2019-01-04 11:04:05 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2019-01-04 11:58:19 +0100 |
commit | ba60204055823bce27a51078d7170e0ff9836636 (patch) | |
tree | 172fa028845f91908c3f3bcef852ff603098bbee /sfx2 | |
parent | 9ec128f8377182c0c50a4c5e6f21cd9b061ef016 (diff) |
svtools: expose document position in DocumentToGraphicRenderer
Writer pages always have an offset inside the root frame, and this is
visible in the generated metafile as well. The offset is minimal for a
small window and a single page, but the vertical offset increases with
every page. Make this information visible, so sfx2 can compensate this.
This is somewhat similar to what SfxObjectShell::DoDraw_Impl() does, but
that works for the first page only (use case is thumbnail generation),
while this is 0 offset for Calc/Impress and a proper offset for all
Writer pages.
Change-Id: I1075c98faf74f9e77c916572b4d63d40fbd80ab1
Reviewed-on: https://gerrit.libreoffice.org/65850
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
Diffstat (limited to 'sfx2')
-rw-r--r-- | sfx2/source/doc/objserv.cxx | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sfx2/source/doc/objserv.cxx b/sfx2/source/doc/objserv.cxx index 9682c1b3b8cc..0b1a879e7678 100644 --- a/sfx2/source/doc/objserv.cxx +++ b/sfx2/source/doc/objserv.cxx @@ -555,7 +555,8 @@ void SfxObjectShell::ExecFile_Impl(SfxRequest &rReq) sal_Int16 nPage = 1; ::Size aDocumentSizePixel = aRenderer.getDocumentSizeInPixels(nPage); - ::Size aLogic = aRenderer.getDocumentSizeIn100mm(nPage); + ::Point aLogicPos; + ::Size aLogic = aRenderer.getDocumentSizeIn100mm(nPage, &aLogicPos); // FIXME: This is a temporary hack. Need to figure out a proper way to derive this scale factor. ::Size aTargetSize(aDocumentSizePixel.Width() * 1.23, aDocumentSizePixel.Height() * 1.23); @@ -567,6 +568,7 @@ void SfxObjectShell::ExecFile_Impl(SfxRequest &rReq) // will be correct in MM. MapMode aMapMode; aMapMode.SetMapUnit(MapUnit::Map100thMM); + aMapMode.SetOrigin(::Point(-aLogicPos.getX(), -aLogicPos.getY())); rGDIMetaFile.SetPrefMapMode(aMapMode); rGDIMetaFile.SetPrefSize(aLogic); |