summaryrefslogtreecommitdiff
path: root/svtools
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.com>2019-01-04 11:04:05 +0100
committerAndras Timar <andras.timar@collabora.com>2019-03-27 21:39:20 +0100
commit5ceee417fef834cd6b033603d72eaf4708970a1d (patch)
tree7699050a4643c44fdc8e1294cad60f2328c73ead /svtools
parentcbbe3edc5668fa21f8507a6435547dbfe5eef4d0 (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 Reviewed-on: https://gerrit.libreoffice.org/69758 Reviewed-by: Andras Timar <andras.timar@collabora.com> Tested-by: Andras Timar <andras.timar@collabora.com>
Diffstat (limited to 'svtools')
-rw-r--r--svtools/source/filter/DocumentToGraphicRenderer.cxx13
1 files changed, 12 insertions, 1 deletions
diff --git a/svtools/source/filter/DocumentToGraphicRenderer.cxx b/svtools/source/filter/DocumentToGraphicRenderer.cxx
index 812fea51d701..00c27c7c0fd8 100644
--- a/svtools/source/filter/DocumentToGraphicRenderer.cxx
+++ b/svtools/source/filter/DocumentToGraphicRenderer.cxx
@@ -114,7 +114,8 @@ uno::Any DocumentToGraphicRenderer::getSelection() const
return aSelection;
}
-Size DocumentToGraphicRenderer::getDocumentSizeIn100mm(sal_Int32 nCurrentPage)
+Size DocumentToGraphicRenderer::getDocumentSizeIn100mm(sal_Int32 nCurrentPage,
+ Point* pDocumentPosition)
{
Reference< awt::XDevice > xDevice(mxToolkit->createScreenCompatibleDevice( 32, 32 ) );
@@ -133,6 +134,7 @@ Size DocumentToGraphicRenderer::getDocumentSizeIn100mm(sal_Int32 nCurrentPage)
renderProperties[3].Value <<= true;
awt::Size aSize;
+ awt::Point aPos;
sal_Int32 nPages = mxRenderable->getRendererCount( selection, renderProperties );
if (nPages >= nCurrentPage)
@@ -144,9 +146,18 @@ Size DocumentToGraphicRenderer::getDocumentSizeIn100mm(sal_Int32 nCurrentPage)
{
aResult[ nProperty ].Value >>= aSize;
}
+ else if (aResult[nProperty].Name == "PagePos")
+ {
+ aResult[nProperty].Value >>= aPos;
+ }
}
}
+ if (pDocumentPosition)
+ {
+ *pDocumentPosition = Point(aPos.X, aPos.Y);
+ }
+
return Size( aSize.Width, aSize.Height );
}