summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@suse.cz>2013-02-05 18:16:12 +0100
committerMiklos Vajna <vmiklos@suse.cz>2013-02-05 18:38:11 +0100
commit878c6f7cb4b7495de90581e8513d46053b8a38e9 (patch)
treeef429285bf0ec68d3dd7aea54b9eb8c037c46a08 /writerfilter
parent98146763e7ad954c647da018d5db451952caadfc (diff)
fdo#58076 import RTF_SHPLEFT/TOP of ESCHER_ShpInst_PictureFrame
Change-Id: Ia655743710778ea7d48a9b2221f22f55a4ccce32
Diffstat (limited to 'writerfilter')
-rw-r--r--writerfilter/source/rtftok/rtfdocumentimpl.cxx15
1 files changed, 15 insertions, 0 deletions
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index 9e2ce7242591..607d9553ef96 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -64,6 +64,7 @@
#include <ooxml/OOXMLFastTokens.hxx> // ooxml namespace
#include <oox/token/namespaces.hxx> // oox namespace
#include <oox/token/tokens.hxx>
+#include <dmapper/GraphicHelpers.hxx>
#include <rtfsdrimport.hxx>
#include <rtftokenizer.hxx>
@@ -73,6 +74,7 @@
#include <rtffly.hxx>
#define TWIP_TO_MM100(TWIP) ((TWIP) >= 0 ? (((TWIP)*127L+36L)/72L) : (((TWIP)*127L-36L)/72L))
+#define MM100_TO_EMU(MM100) (MM100 * 360)
#define M_TOKEN(token) OOX_TOKEN(officeMath, token)
#define OPEN_M_TOKEN( rtftok, ooxtok ) \
case RTF_M##rtftok: \
@@ -808,6 +810,19 @@ int RTFDocumentImpl::resolvePict(bool bInline)
aAnchorSprms.set(NS_ooxml::LN_CT_Anchor_extent, pExtentValue);
if (aAnchorWrapAttributes.size())
aAnchorSprms.set(NS_ooxml::LN_EG_WrapType_wrapSquare, pAnchorWrapValue);
+
+ // See OOXMLFastContextHandler::positionOffset(), we can't just put values in an RTFValue.
+ if (m_aStates.top().aShape.nLeft > 0)
+ {
+ writerfilter::dmapper::PositionHandler::setPositionOffset(OUString::number(MM100_TO_EMU(m_aStates.top().aShape.nLeft)), false);
+ aAnchorSprms.set(NS_ooxml::LN_CT_Anchor_positionH, RTFValue::Pointer_t(new RTFValue(RTFSprms())));
+ }
+ if (m_aStates.top().aShape.nTop > 0)
+ {
+ writerfilter::dmapper::PositionHandler::setPositionOffset(OUString::number(MM100_TO_EMU(m_aStates.top().aShape.nTop)), true);
+ aAnchorSprms.set(NS_ooxml::LN_CT_Anchor_positionV, RTFValue::Pointer_t(new RTFValue(RTFSprms())));
+ }
+
aAnchorSprms.set(NS_ooxml::LN_CT_Anchor_docPr, pDocprValue);
aAnchorSprms.set(NS_ooxml::LN_graphic_graphic, pGraphicValue);
// anchor sprm