summaryrefslogtreecommitdiff
path: root/sw/source/filter/ww8/docxattributeoutput.cxx
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2012-07-04 17:47:22 +0200
committerMichael Stahl <mstahl@redhat.com>2012-07-04 18:06:10 +0200
commite4fc7e777fbfa600dcfe8914da81e89329279e7b (patch)
tree3c17633491fbf236692fb9cd3ec05d05673d42a2 /sw/source/filter/ww8/docxattributeoutput.cxx
parent549cf1ab08fc5ee78730c139781ad53805e4717d (diff)
refactor handling of double border widths:
Word uses a completely different definition of "width" of a double border than OOo and ODF: for Word the width is apparently the largest of the 3 component widths, while OOo and ODF define the width as the total with of all 3 components. The new border implementation in LO 3.4 was apparently inspired by Word's double border definition, which resulted in various import filter regressions, see the previous fixes: 36e43b52992735c622833e923faa63774b9e2f76 e2ffb71305c5f085eec6d396651c76d6daee3406 70a6a4d425558340bb49507975343a3e0a1bdde8 These fixes set the ScaleMetrics, which actually seems sub-optimal as there is a ScaleItemSet function somewhere that apparently re-scales all items in an itemset, which could undo the fixes. Also, one of the fixes actually managed to break RTF/DOCX import of double borders, as that ended up in the same code via the API. This commit now reverses the change, so that the width of a border is now always the total with of all components, which is (imho) much more intutitive, and also leads to a consistent UI where selecting say 3pt width has predictable results, no matter what the border style. The border widths are now converted in the Word format import/export filters (writerfilter and sw/source/filter/ww8), and various tests were adapted to the new handling. (cherry picked from commit 2d045cdb69176b280812dda0b813371cf1ac72e2) Conflicts: sw/qa/extras/ooxmltok/ooxmltok.cxx Change-Id: I50456c49b1a298569607e6c88f19f18441348ac3
Diffstat (limited to 'sw/source/filter/ww8/docxattributeoutput.cxx')
-rw-r--r--sw/source/filter/ww8/docxattributeoutput.cxx4
1 files changed, 3 insertions, 1 deletions
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index 26c0bea2a5e1..2d1bb23366a9 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -1468,8 +1468,10 @@ static void impl_borderLine( FSHelperPtr pSerializer, sal_Int32 elementToken, co
{
// Compute the sz attribute
+ double const fConverted( ::editeng::ConvertBorderWidthToWord(
+ pBorderLine->GetBorderLineStyle(), pBorderLine->GetWidth()));
// The unit is the 8th of point
- sal_Int32 nWidth = sal_Int32( pBorderLine->GetWidth() / 2.5 );
+ sal_Int32 nWidth = sal_Int32( fConverted / 2.5 );
sal_uInt16 nMinWidth = 2;
sal_uInt16 nMaxWidth = 96;