n#758883 dmapper: take care of border width when setting margins

Word handles the "border to page" distance as a subset of the page
margin. Writer handles these values separately, and the real margin is
the sum of the border width, the margin and the border width itself.

The problem was that the width of the border itself wasn't counted, so
the real margin was a bit larger than necessary.

Change-Id: Id38153308f1e321b6556762b30f3377f2360edf6
This commit is contained in:
Miklos Vajna 2012-06-19 16:10:52 +02:00
parent 13cb9d9d1a
commit e215b7c57c
2 changed files with 9 additions and 6 deletions

View file

@ -501,17 +501,20 @@ void SectionPropertyMap::ApplyBorderToPageStyles(
}
if( m_nBorderDistances[nBorder] >= 0 )
{
sal_uInt32 nLineWidth = 0;
if (m_pBorderLines[nBorder])
nLineWidth = m_pBorderLines[nBorder]->LineWidth;
SetBorderDistance( xFirst, aMarginIds[nBorder], aBorderDistanceIds[nBorder],
m_nBorderDistances[nBorder], nOffsetFrom );
m_nBorderDistances[nBorder], nOffsetFrom, nLineWidth );
if(xSecond.is())
SetBorderDistance( xSecond, aMarginIds[nBorder], aBorderDistanceIds[nBorder],
m_nBorderDistances[nBorder], nOffsetFrom );
m_nBorderDistances[nBorder], nOffsetFrom, nLineWidth );
}
}
}
void SectionPropertyMap::SetBorderDistance( uno::Reference< beans::XPropertySet > xStyle,
PropertyIds eMarginId, PropertyIds eDistId, sal_Int32 nDistance, sal_Int32 nOffsetFrom )
PropertyIds eMarginId, PropertyIds eDistId, sal_Int32 nDistance, sal_Int32 nOffsetFrom, sal_uInt32 nLineWidth )
{
PropertyNameSupplier& rPropNameSupplier = PropertyNameSupplier::GetPropertyNameSupplier();
@ -523,8 +526,8 @@ void SectionPropertyMap::SetBorderDistance( uno::Reference< beans::XPropertySet
sal_Int32 nMargin = 0;
aMargin >>= nMargin;
// Change the margins with the border distance
xStyle->setPropertyValue( sMarginName, uno::makeAny( nDistance ) );
// Change the margins with the ( border distance - line width )
xStyle->setPropertyValue( sMarginName, uno::makeAny( nDistance - nLineWidth ) );
// Set the distance to ( Margin - distance )
nDist = nMargin - nDistance;

View file

@ -207,7 +207,7 @@ class SectionPropertyMap : public PropertyMap
bool HasFooter( bool bFirstPage ) const;
void SetBorderDistance( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > xStyle,
PropertyIds eMarginId, PropertyIds eDistId, sal_Int32 nDistance, sal_Int32 nOffsetFrom );
PropertyIds eMarginId, PropertyIds eDistId, sal_Int32 nDistance, sal_Int32 nOffsetFrom, sal_uInt32 nLineWidth );
public:
explicit SectionPropertyMap(bool bIsFirstSection);