diff options
author | Lei De Bin <leidb@apache.org> | 2012-08-20 00:48:42 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2013-05-27 12:11:40 +0100 |
commit | ee0ecef811d445e2a3bf54710707713478e61fad (patch) | |
tree | b2a865313d3d6cd44119d5fd6ebed4b06749e714 /sw | |
parent | 17f21e6bcc5283c5485cc42344610e8125547c0f (diff) |
Resolves: #i120158# fix picture shadow lost after saved as doc in some case
Reported by: Yan Ji
Patch by: Chen Zuo Jun
Review by: Lei De Bin (cherry picked from commit fe549458ef04384ba777e4a36f34b68efc5b8b6d)
Conflicts:
filter/source/msfilter/msdffimp.cxx
sw/source/filter/ww8/wrtw8esh.cxx
Change-Id: I863ea7193f3dee563a892a6d857ee2385f58a862
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/filter/ww8/wrtw8esh.cxx | 57 |
1 files changed, 56 insertions, 1 deletions
diff --git a/sw/source/filter/ww8/wrtw8esh.cxx b/sw/source/filter/ww8/wrtw8esh.cxx index 5e7add30c33f..be4f594a009c 100644 --- a/sw/source/filter/ww8/wrtw8esh.cxx +++ b/sw/source/filter/ww8/wrtw8esh.cxx @@ -44,6 +44,7 @@ #include <svx/svdoole2.hxx> #include <editeng/editeng.hxx> #include <editeng/flditem.hxx> +#include <editeng/shaditem.hxx> #include <unotools/ucbstreamhelper.hxx> #include <svx/fmglob.hxx> #include <svx/svdouno.hxx> @@ -92,7 +93,6 @@ #include <fstream> #include <unotools/streamwrap.hxx> - using ::editeng::SvxBorderLine; using namespace com::sun::star; using namespace sw::util; @@ -1793,6 +1793,61 @@ sal_Int32 SwBasicEscherEx::WriteFlyFrameAttr(const SwFrmFmt& rFmt, rPropOpt.AddOpt( ESCHER_Prop_dxTextLeft, 0 ); rPropOpt.AddOpt( ESCHER_Prop_dxTextRight, 0 ); } + const SwAttrSet& rAttrSet = rFmt.GetAttrSet(); + if (SFX_ITEM_ON == rAttrSet.GetItemState(RES_BOX, false, &pItem)) + { + const SvxBoxItem* pBox = (const SvxBoxItem*)pItem; + if( pBox ) + { + const SfxPoolItem* pShadItem; + if (SFX_ITEM_ON + == rAttrSet.GetItemState(RES_SHADOW, true, &pShadItem)) + { + const SvxShadowItem* pSI = (const SvxShadowItem*)pShadItem; + + const sal_uInt16 nCstScale = 635; // unit scale between SODC and MS Word + const sal_uInt32 nShadowType = 131074; // shadow type of ms word. need to set the default value. + + sal_uInt32 nColor = (sal_uInt32)(pSI->GetColor().GetColor()) ; + sal_uInt32 nOffX = pSI->GetWidth() * nCstScale; + sal_uInt32 nOffY = pSI->GetWidth() * nCstScale; + sal_uInt32 nShadow = nShadowType; + + SvxShadowLocation eLocation = pSI->GetLocation(); + if( (eLocation!=SVX_SHADOW_NONE) && (pSI->GetWidth()!=0) ) + { + switch( eLocation ) + { + case SVX_SHADOW_TOPLEFT: + { + nOffX = -nOffX; + nOffY = -nOffY; + } + break; + case SVX_SHADOW_TOPRIGHT: + { + nOffY = -nOffY; + } + break; + case SVX_SHADOW_BOTTOMLEFT: + { + nOffX = -nOffX; + } + break; + case SVX_SHADOW_BOTTOMRIGHT: + break; + default: + break; + } + + rPropOpt.AddOpt( DFF_Prop_shadowColor, wwUtility::RGBToBGR((nColor))); + rPropOpt.AddOpt( DFF_Prop_shadowOffsetX, nOffX ); + rPropOpt.AddOpt( DFF_Prop_shadowOffsetY, nOffY ); + rPropOpt.AddOpt( DFF_Prop_fshadowObscured, nShadow ); + } + } + } + } // SwWW8ImplReader::Read_GrafLayer() imports these as opaque // unconditionally, so if both are true, don't export the property. |