diff options
author | Michael Stahl <mstahl@redhat.com> | 2012-07-04 17:47:22 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2012-07-04 17:55:45 +0200 |
commit | 2d045cdb69176b280812dda0b813371cf1ac72e2 (patch) | |
tree | c427cd49c3782d509199d4e4590ff42e7862bf93 /writerfilter/source/dmapper/BorderHandler.cxx | |
parent | 6146c5d1557f4813c9793c1b00567885382c00e7 (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.
Change-Id: I50456c49b1a298569607e6c88f19f18441348ac3
Diffstat (limited to 'writerfilter/source/dmapper/BorderHandler.cxx')
-rw-r--r-- | writerfilter/source/dmapper/BorderHandler.cxx | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/writerfilter/source/dmapper/BorderHandler.cxx b/writerfilter/source/dmapper/BorderHandler.cxx index 2d0801708fa2..068c21091d7c 100644 --- a/writerfilter/source/dmapper/BorderHandler.cxx +++ b/writerfilter/source/dmapper/BorderHandler.cxx @@ -35,7 +35,7 @@ using namespace ::com::sun::star; BorderHandler::BorderHandler( bool bOOXML ) : LoggedProperties(dmapper_logger, "BorderHandler"), m_nCurrentBorderPosition( BORDER_TOP ), -m_nLineWidth(26), // Word default +m_nLineWidth(15), // Word default, in twips m_nLineType(0), m_nLineColor(0), m_nLineDistance(0), @@ -70,7 +70,7 @@ void BorderHandler::lcl_attribute(Id rName, Value & rVal) break; case NS_rtf::LN_DPTLINEWIDTH: // 0x2871 // width of a single line in 1/8 pt, max of 32 pt -> twip * 5 / 2. - m_nLineWidth = ConversionHelper::convertTwipToMM100( nIntValue * 5 / 2 ); + m_nLineWidth = nIntValue * 5 / 2; break; case NS_rtf::LN_BRCTYPE: // 0x2872 m_nLineType = nIntValue; |