desktop/source/lib/init.cxx |1 +
filter/source/svg/svgexport.cxx |6 +-
filter/source/svg/svgfilter.cxx | 10 ++
filter/source/svg/svgfilter.hxx |1 +
filter/source/svg/svgwriter.cxx | 22 +-
filter/source/svg/svgwriter.hxx |2 ++
sfx2/source/doc/objstor.cxx | 15 +++
sw/inc/cmdid.h |1 +
sw/inc/unoprnms.hxx |1 +
sw/source/core/unocore/unoframe.cxx | 16 +++-
sw/source/core/unocore/unomap1.cxx |1 +
11 files changed, 73 insertions(+), 3 deletions(-)
New commits:
commit d01b1b174f4e18b8bef23f7409d4e9cf4f07d232
Author: Szymon Kłos
AuthorDate: Mon Jan 31 17:15:21 2022 +0100
Commit: Szymon Kłos
CommitDate: Thu Feb 3 10:06:16 2022 +0100
lok: render image preview with lower resolution
renderShapeSelection callback is used to render
image previews which are later used during
eg. rotation.
Do not render preview with original size which
slows down app a lot. Use 1280x720 max.
Change-Id: Ia8365a67d87cea869ef74cb70ce4830439a523b6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129376
Tested-by: Jenkins CollaboraOffice
Reviewed-by: Szymon Kłos
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 920041060d88..4693e79ec3f6 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -3969,6 +3969,7 @@ static size_t
doc_renderShapeSelection(LibreOfficeKitDocument* pThis, char** pOu
}
aMediaDescriptor["SelectionOnly"] <<= true;
aMediaDescriptor["OutputStream"] <<= xOut;
+aMediaDescriptor["IsPreview"] <<= true; // will down-scale graphics
xStorable->storeToURL("private:stream",
aMediaDescriptor.getAsConstPropertyValueList());
diff --git a/filter/source/svg/svgexport.cxx b/filter/source/svg/svgexport.cxx
index fc8de3b18f68..d0eb6b9c6a8c 100644
--- a/filter/source/svg/svgexport.cxx
+++ b/filter/source/svg/svgexport.cxx
@@ -802,7 +802,9 @@ bool SVGFilter::implExportWriterTextGraphic( const
Reference< view::XSelectionSu
const Graphic aOriginalGraphic(xOriginalGraphic);
uno::Reference xTransformedGraphic;
-xPropertySet->getPropertyValue("TransformedGraphic") >>=
xTransformedGraphic;
+xPropertySet->getPropertyValue(
+mbIsPreview ? OUString("GraphicPreview") :
OUString("TransformedGraphic"))
+>>= xTransformedGraphic;
if (!xTransformedGraphic.is())
return false;
@@ -978,6 +980,8 @@ bool SVGFilter::implExportDocument()
mpSVGWriter->SetEmbeddedBitmapRefs( );
implExportTiledBackground();
}
+if( mbIsPreview )
+mpSVGWriter->SetPreviewMode();
// #i124608# export a given object selection, so no MasterPage
export at all
if (!mbExportShapeSelection)
diff --git a/filter/source/svg/svgfilter.cxx b/filter/source/svg/svgfilter.cxx
index 8025550b5837..67ff2dd80680 100644
--- a/filter/source/svg/svgfilter.cxx
+++ b/filter/source/svg/svgfilter.cxx
@@ -82,6 +82,7 @@ SVGFilter::SVGFilter( const Reference< XComponentContext >&
rxCtx ) :
mbExportShapeSelection(false),
maFilterData(),
mxDefaultPage(),
+mbIsPreview(false),
mbWriterFilter(false),
mbCalcFilter(false),
mbImpressFilter(false),
@@ -111,6 +112,15 @@ sal_Bool SAL_CALL SVGFilter::filter( const Sequence<
PropertyValue >& rDescripto
if(mxSrcDoc.is())
{
+for (const PropertyValue& rProp : rDescriptor)
+{
+if (rProp.Name == "IsPreview")
+{
+rProp.Value >>= mbIsPreview;
+break;
+}
+}
+
for (const PropertyValue& rProp : rDescriptor)
{
if (rProp.Name == "FilterName")
diff --git a/filter/source/svg/svgfilter.hxx b/filter/source/svg/svgfilter.hxx
index aab158971e0b..975eb4ae2d02 100644
--- a/filter/source/svg/svgfilter.hxx
+++ b/filter/source/svg/svgfilter.hxx
@@ -209,6 +209,7 @@ private:
Sequence< PropertyValue > maFilterData;
Reference< css::drawing::XDrawPage > mxDefaultPage;
std::vector< Reference< css::drawing::XDrawPage > > mSelectedPages;
+boolmbIsPreview;
boolmbWriterFilter;
boolmbCalcFilter;
diff --git a/filter/source/svg/svgwriter.cxx b/filter/source/svg/svgwriter.cxx
index f5c96878d4f4..9677c9e092fd 100644
--- a/filter/source/svg/svgwriter.cxx
+++ b/filter/source/svg/svgwriter.cxx
@@ -2949,7 +2949,27 @@ void SVGActionWriter::ImplWriteBmp( const BitmapEx&
rBmpEx,
}
}
-if( !(bCached || GraphicConverter::Export( aOStm, rBmpEx,
ConvertDataFormat::PNG ) == ERRCODE_NONE) )
+const BitmapEx* pBitmap =
+std::unique_ptr pNewBitmap;
+
+// for