diff options
author | Christina Rossmanith <ChrRossmanith@web.de> | 2012-03-17 22:06:22 +0100 |
---|---|---|
committer | Fridrich Štrba <fridrich.strba@bluewin.ch> | 2012-03-22 06:48:36 +0100 |
commit | 11ccf88eeb8e4148ca532e3a42ddca356ebde811 (patch) | |
tree | 8dc5eb025136ab30118c5ebb3d145e6186c79ff4 | |
parent | 7d7e2c3636661c52ff708eb7799f481db5f98dfc (diff) |
SVG import: keep aspect ratio when transforming viewbox to viewport
-rw-r--r-- | filter/source/svg/svgreader.cxx | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/filter/source/svg/svgreader.cxx b/filter/source/svg/svgreader.cxx index 5d46c7c462aa..cd5da232b1a9 100644 --- a/filter/source/svg/svgreader.cxx +++ b/filter/source/svg/svgreader.cxx @@ -293,12 +293,13 @@ struct AnnotatingVisitor maCurrState.maViewBox.getWidth() != 0.0 && maCurrState.maViewBox.getHeight() != 0.0 ) { - // transform aViewBox into viewport, such that they - // coincide + // transform aViewBox into viewport, keep aspect ratio aLocalTransform.translate(-maCurrState.maViewBox.getMinX(), -maCurrState.maViewBox.getMinY()); - aLocalTransform.scale(maCurrState.maViewport.getWidth()/maCurrState.maViewBox.getWidth(), - maCurrState.maViewport.getHeight()/maCurrState.maViewBox.getHeight()); + double scaleW = maCurrState.maViewport.getWidth()/maCurrState.maViewBox.getWidth(); + double scaleH = maCurrState.maViewport.getHeight()/maCurrState.maViewBox.getHeight(); + double scale = (scaleW < scaleH) ? scaleW : scaleH; + aLocalTransform.scale(scale,scale); } maCurrState.maCTM = maCurrState.maCTM*maCurrState.maTransform*aLocalTransform; |