diff options
author | Miklos Vajna <vmiklos@suse.cz> | 2013-01-22 13:20:57 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@suse.cz> | 2013-01-22 16:13:25 +0100 |
commit | d0fcf8340d5319524dd0f9d8fb24666229d5fd92 (patch) | |
tree | b464140013cb0dc29c575f738a9f9cc04f398d19 /sw | |
parent | f04bcdc4681e76b26b2f5e78232ccfb2d3cb891e (diff) |
sw: DOCX export of TextFrame shadow
Change-Id: Ia095a3adee271cf7235fb7c13824d7f265658897
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/filter/ww8/docxattributeoutput.cxx | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index 9cb2c3371489..0e82f7fd3c89 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -188,6 +188,7 @@ class FieldMarkParamsHelper return bResult; } }; +static OString impl_ConvertColor( const Color &rColor ); void DocxAttributeOutput::RTLAndCJKState( bool bIsRTL, sal_uInt16 /*nScript*/ ) { if (bIsRTL) @@ -251,6 +252,35 @@ void DocxAttributeOutput::StartParagraph( ww8::WW8TableNodeInfo::Pointer_t pText m_bParagraphOpened = true; } +void lcl_TextFrameShadow(FSHelperPtr pSerializer, const SwFrmFmt& rFrmFmt) +{ + SvxShadowItem aShadowItem = rFrmFmt.GetShadow(); + if (aShadowItem.GetLocation() == SVX_SHADOW_NONE) + return; + + OString aShadowWidth( OString::valueOf( double( aShadowItem.GetWidth() ) / 20) + "pt"); + OString aOffset; + switch (aShadowItem.GetLocation()) + { + case SVX_SHADOW_TOPLEFT: aOffset = "-" + aShadowWidth + ",-" + aShadowWidth; break; + case SVX_SHADOW_TOPRIGHT: aOffset = aShadowWidth + ",-" + aShadowWidth; break; + case SVX_SHADOW_BOTTOMLEFT: aOffset = "-" + aShadowWidth + "," + aShadowWidth; break; + case SVX_SHADOW_BOTTOMRIGHT: aOffset = aShadowWidth + "," + aShadowWidth; break; + case SVX_SHADOW_NONE: + case SVX_SHADOW_END: + break; + } + if (aOffset.isEmpty()) + return; + + OString aShadowColor = impl_ConvertColor(aShadowItem.GetColor()); + pSerializer->singleElementNS(XML_v, XML_shadow, + XML_on, "t", + XML_color, "#" + aShadowColor, + XML_offset, aOffset, + FSEND); +} + void DocxAttributeOutput::EndParagraph( ww8::WW8TableNodeInfoInner::Pointer_t pTextNodeInfoInner ) { // write the paragraph properties + the run, already in the correct order @@ -284,6 +314,7 @@ void DocxAttributeOutput::EndParagraph( ww8::WW8TableNodeInfoInner::Pointer_t pT m_pSerializer->startElementNS( XML_w, XML_r, FSEND ); m_pSerializer->startElementNS( XML_w, XML_pict, FSEND ); m_pSerializer->startElementNS( XML_v, XML_rect, xFlyAttrList ); + lcl_TextFrameShadow(m_pSerializer, rFrmFmt); m_pSerializer->startElementNS( XML_v, XML_textbox, FSEND ); m_pSerializer->startElementNS( XML_w, XML_txbxContent, FSEND ); m_rExport.WriteText( ); |