summaryrefslogtreecommitdiff
path: root/svtools
diff options
context:
space:
mode:
authorMuhammet Kara <muhammet.kara@collabora.com>2019-01-18 14:07:56 +0300
committerAndras Timar <andras.timar@collabora.com>2019-03-27 21:41:10 +0100
commitad32e6a65bfbcf439470e16c3442a499a9f6b40a (patch)
treed067773e21e0bbbb3cde332ca9eedd19610e3614 /svtools
parentd132d2206926c8b25a11384844d5afe446901826 (diff)
Redaction: Adjust offset for multiple Calc pages
* Add an enum and some methods to DocumentToGraphicRenderer to differentiate between the doc/module types: isWriter(), isCalc(), isImpress() * Put some checks for module/doc type * The result seems ok for a Calc document of multiple sheets with hundreds of pages Change-Id: Idf3e1966d4239df30a48a947a95c9085c25ee1bb Reviewed-on: https://gerrit.libreoffice.org/66605 Tested-by: Jenkins Reviewed-by: Muhammet Kara <muhammet.kara@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/69815 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.cxx58
1 files changed, 53 insertions, 5 deletions
diff --git a/svtools/source/filter/DocumentToGraphicRenderer.cxx b/svtools/source/filter/DocumentToGraphicRenderer.cxx
index 58f1cfafa954..5d9b38a7e034 100644
--- a/svtools/source/filter/DocumentToGraphicRenderer.cxx
+++ b/svtools/source/filter/DocumentToGraphicRenderer.cxx
@@ -48,7 +48,7 @@ DocumentToGraphicRenderer::DocumentToGraphicRenderer( const Reference<XComponent
mxRenderable (mxDocument, uno::UNO_QUERY ),
mxToolkit( VCLUnoHelper::CreateToolkit() ),
mbSelectionOnly( bSelectionOnly ),
- mbIsWriter( false )
+ meDocType( UNKNOWN )
{
try
{
@@ -56,7 +56,13 @@ DocumentToGraphicRenderer::DocumentToGraphicRenderer( const Reference<XComponent
if (xServiceInfo.is())
{
if (xServiceInfo->supportsService("com.sun.star.text.TextDocument"))
- mbIsWriter = true;
+ meDocType = WRITER;
+ else if (xServiceInfo->supportsService("com.sun.star.sheet.SpreadsheetDocument"))
+ meDocType = CALC;
+ else if (xServiceInfo->supportsService("com.sun.star.presentation.PresentationDocument"))
+ meDocType = IMPRESS;
+ else
+ meDocType = UNKNOWN;
}
}
catch (const uno::Exception&)
@@ -79,7 +85,7 @@ DocumentToGraphicRenderer::DocumentToGraphicRenderer( const Reference<XComponent
* XRenderable::render() it always renders an empty page.
* So disable the selection already here. The current page
* the cursor is on is rendered. */
- if (!mbIsWriter)
+ if (!isWriter())
maSelection = aViewSelection;
}
}
@@ -115,7 +121,7 @@ uno::Any DocumentToGraphicRenderer::getSelection() const
}
Size DocumentToGraphicRenderer::getDocumentSizeIn100mm(sal_Int32 nCurrentPage,
- Point* pDocumentPosition)
+ Point* pDocumentPosition, Point* pCalcPagePosition, Size* pCalcPageSize)
{
Reference< awt::XDevice > xDevice(mxToolkit->createScreenCompatibleDevice( 32, 32 ) );
@@ -134,7 +140,9 @@ Size DocumentToGraphicRenderer::getDocumentSizeIn100mm(sal_Int32 nCurrentPage,
renderProperties[3].Value <<= true;
awt::Size aSize;
+ awt::Size aCalcPageSize;
awt::Point aPos;
+ awt::Point aCalcPos;
sal_Int32 nPages = mxRenderable->getRendererCount( selection, renderProperties );
if (nPages >= nCurrentPage)
@@ -150,6 +158,14 @@ Size DocumentToGraphicRenderer::getDocumentSizeIn100mm(sal_Int32 nCurrentPage,
{
aResult[nProperty].Value >>= aPos;
}
+ else if (aResult[nProperty].Name == "CalcPagePos")
+ {
+ aResult[nProperty].Value >>= aCalcPos;
+ }
+ else if (aResult[nProperty].Name == "CalcPageContentSize")
+ {
+ aResult[nProperty].Value >>= aCalcPageSize;
+ }
}
}
@@ -157,6 +173,14 @@ Size DocumentToGraphicRenderer::getDocumentSizeIn100mm(sal_Int32 nCurrentPage,
{
*pDocumentPosition = Point(aPos.X, aPos.Y);
}
+ if (pCalcPagePosition)
+ {
+ *pCalcPagePosition = Point(aCalcPos.X, aCalcPos.Y);
+ }
+ if (pCalcPageSize)
+ {
+ *pCalcPageSize = Size(aCalcPageSize.Width, aCalcPageSize.Height);
+ }
return Size( aSize.Width, aSize.Height );
}
@@ -224,7 +248,7 @@ sal_Int32 DocumentToGraphicRenderer::getCurrentPage()
if (hasSelection())
return 1;
- if (mbIsWriter)
+ if (isWriter())
return getCurrentPageWriter();
/* TODO: other application specific page detection? */
@@ -285,4 +309,28 @@ bool DocumentToGraphicRenderer::isShapeSelected(
return bShape;
}
+bool DocumentToGraphicRenderer::isWriter() const
+{
+ if (meDocType == WRITER)
+ return true;
+ else
+ return false;
+}
+
+bool DocumentToGraphicRenderer::isCalc() const
+{
+ if (meDocType == CALC)
+ return true;
+ else
+ return false;
+}
+
+bool DocumentToGraphicRenderer::isImpress() const
+{
+ if (meDocType == IMPRESS)
+ return true;
+ else
+ return false;
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */