diff options
author | Tor Lillqvist <tml@collabora.com> | 2014-05-16 16:43:25 +0300 |
---|---|---|
committer | Tor Lillqvist <tml@collabora.com> | 2014-05-16 18:18:20 +0300 |
commit | 633003965a4be0c535b43cc3072c5c4a95109d34 (patch) | |
tree | 251d490aaaedc7ebec4adcb859b48f82afb3f402 | |
parent | 66fce1f61e7e088bd92e19ecb0dd94553de6f824 (diff) |
Use SVM (metafile) instead of PNG for diagrams (SmartArt)
It seemed a bit pointless to waste CPU cycles on PNG-compressing a
bitmap image only to later then uncompress it anyway. vcl's PNG
writing code showed up as 13% on the time profile of TiledLibreOffice
when displaying a document full of SmartArts.
Miklos suggested I try using SVM (which I guess means "StarView
Metafile") instead. When using SVM, no rendering of diagrams to
bitmaps during loading is done, but the diagram stays stored in a
resolution-independent (vector-ish) form. Which means it will be
rendered nicely and crisply regardless of the zoom level.
At least, that is my understanding, and experimentation (on OS X and Linux)
seems to confirm.
ce8c0ff07559ddcc729bffd7a68f4c6f281882e3
Change-Id: Ice8c0ff07559ddcc729bffd7a68f4c6f281882e3
-rw-r--r-- | oox/source/drawingml/shape.cxx | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx index b319c3800449..33c846cd5d92 100644 --- a/oox/source/drawingml/shape.cxx +++ b/oox/source/drawingml/shape.cxx @@ -1088,7 +1088,7 @@ Reference < XShape > Shape::renderDiagramToGraphic( XmlFilterBase& rFilterBase ) Reference < io::XOutputStream > xOutputStream( xStream->getOutputStream() ); // Rendering format - OUString sFormat( "PNG" ); + OUString sFormat( "SVM" ); // Size of the rendering awt::Size aActualSize = mxShape->getSize(); @@ -1097,21 +1097,15 @@ Reference < XShape > Shape::renderDiagramToGraphic( XmlFilterBase& rFilterBase ) awt::Size aSize = awt::Size( static_cast < sal_Int32 > ( ( fPixelsPer100thmm * aActualSize.Width ) + 0.5 ), static_cast < sal_Int32 > ( ( fPixelsPer100thmm * aActualSize.Height ) + 0.5 ) ); - Sequence< PropertyValue > aFilterData( 7 ); - aFilterData[ 0 ].Name = "Compression"; - aFilterData[ 0 ].Value <<= static_cast < sal_Int32 > ( 9 ); - aFilterData[ 1 ].Name = "Interlaced"; - aFilterData[ 1 ].Value <<= static_cast < sal_Int32 > ( 1 ); - aFilterData[ 2 ].Name = "Translucent"; - aFilterData[ 2 ].Value <<= static_cast < sal_Int32 > ( 1 ); - aFilterData[ 3 ].Name = "PixelWidth"; - aFilterData[ 3 ].Value <<= aSize.Width; - aFilterData[ 4 ].Name = "PixelHeight"; - aFilterData[ 4 ].Value <<= aSize.Height; - aFilterData[ 5 ].Name = "LogicalWidth"; - aFilterData[ 5 ].Value <<= aActualSize.Width; - aFilterData[ 6 ].Name = "LogicalHeight"; - aFilterData[ 6 ].Value <<= aActualSize.Height; + Sequence< PropertyValue > aFilterData( 4 ); + aFilterData[ 0 ].Name = "PixelWidth"; + aFilterData[ 0 ].Value <<= aSize.Width; + aFilterData[ 1 ].Name = "PixelHeight"; + aFilterData[ 1 ].Value <<= aSize.Height; + aFilterData[ 2 ].Name = "LogicalWidth"; + aFilterData[ 2 ].Value <<= aActualSize.Width; + aFilterData[ 3 ].Name = "LogicalHeight"; + aFilterData[ 3 ].Value <<= aActualSize.Height; Sequence < PropertyValue > aDescriptor( 3 ); aDescriptor[ 0 ].Name = "OutputStream"; |