summaryrefslogtreecommitdiff
path: root/editeng/qa
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 17:55:45 +0200
commit2d045cdb69176b280812dda0b813371cf1ac72e2 (patch)
treec427cd49c3782d509199d4e4590ff42e7862bf93 /editeng/qa
parent6146c5d1557f4813c9793c1b00567885382c00e7 (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 'editeng/qa')
-rw-r--r--editeng/qa/items/borderline_test.cxx35
1 files changed, 31 insertions, 4 deletions
diff --git a/editeng/qa/items/borderline_test.cxx b/editeng/qa/items/borderline_test.cxx
index f839103a7af1..ea0fcf7216b2 100644
--- a/editeng/qa/items/borderline_test.cxx
+++ b/editeng/qa/items/borderline_test.cxx
@@ -97,7 +97,10 @@ void BorderLineTest::testGuessWidthDouble()
SvxBorderLine line;
line.GuessLinesWidths( DOUBLE, TEST_WIDTH, TEST_WIDTH, TEST_WIDTH );
CPPUNIT_ASSERT_EQUAL( DOUBLE, line.GetBorderLineStyle() );
- CPPUNIT_ASSERT_EQUAL( TEST_WIDTH, line.GetWidth() );
+ CPPUNIT_ASSERT_EQUAL( TEST_WIDTH, static_cast<long>(line.GetOutWidth()) );
+ CPPUNIT_ASSERT_EQUAL( TEST_WIDTH, static_cast<long>(line.GetInWidth()) );
+ CPPUNIT_ASSERT_EQUAL( TEST_WIDTH, static_cast<long>(line.GetDistance()) );
+ CPPUNIT_ASSERT_EQUAL( 3*TEST_WIDTH, line.GetWidth() );
}
void BorderLineTest::testGuessWidthNoMatch()
@@ -106,6 +109,9 @@ void BorderLineTest::testGuessWidthNoMatch()
line.GuessLinesWidths( DOUBLE,
TEST_WIDTH + 1, TEST_WIDTH + 2, TEST_WIDTH + 3 );
CPPUNIT_ASSERT_EQUAL( DOUBLE, line.GetBorderLineStyle() );
+ CPPUNIT_ASSERT_EQUAL( TEST_WIDTH+1, static_cast<long>(line.GetOutWidth()) );
+ CPPUNIT_ASSERT_EQUAL( TEST_WIDTH+2, static_cast<long>(line.GetInWidth()) );
+ CPPUNIT_ASSERT_EQUAL( TEST_WIDTH+3, static_cast<long>(line.GetDistance()));
CPPUNIT_ASSERT_EQUAL( long( (3 * TEST_WIDTH) + 6 ), line.GetWidth() );
}
@@ -117,7 +123,14 @@ void BorderLineTest::testGuessWidthThinthickSmallgap()
THINTHICKSG_IN_WIDTH,
THINTHICKSG_DIST_WIDTH );
CPPUNIT_ASSERT_EQUAL( THINTHICK_SMALLGAP, line.GetBorderLineStyle() );
- CPPUNIT_ASSERT_EQUAL( TEST_WIDTH, line.GetWidth() );
+ CPPUNIT_ASSERT_EQUAL( THINTHICKSG_OUT_WIDTH,
+ static_cast<long>(line.GetOutWidth()) );
+ CPPUNIT_ASSERT_EQUAL( THINTHICKSG_IN_WIDTH,
+ static_cast<long>(line.GetInWidth()) );
+ CPPUNIT_ASSERT_EQUAL( THINTHICKSG_DIST_WIDTH,
+ static_cast<long>(line.GetDistance()) );
+ CPPUNIT_ASSERT_EQUAL( THINTHICKSG_OUT_WIDTH + THINTHICKSG_IN_WIDTH
+ + THINTHICKSG_DIST_WIDTH, line.GetWidth() );
}
void BorderLineTest::testGuessWidthThinthickLargegap()
@@ -128,7 +141,14 @@ void BorderLineTest::testGuessWidthThinthickLargegap()
THINTHICKLG_IN_WIDTH,
THINTHICKLG_DIST_WIDTH );
CPPUNIT_ASSERT_EQUAL( THINTHICK_LARGEGAP, line.GetBorderLineStyle() );
- CPPUNIT_ASSERT_EQUAL( TEST_WIDTH, line.GetWidth() );
+ CPPUNIT_ASSERT_EQUAL( THINTHICKLG_OUT_WIDTH,
+ static_cast<long>(line.GetOutWidth()) );
+ CPPUNIT_ASSERT_EQUAL( THINTHICKLG_IN_WIDTH,
+ static_cast<long>(line.GetInWidth()) );
+ CPPUNIT_ASSERT_EQUAL( THINTHICKLG_DIST_WIDTH,
+ static_cast<long>(line.GetDistance()) );
+ CPPUNIT_ASSERT_EQUAL( THINTHICKLG_OUT_WIDTH + THINTHICKLG_IN_WIDTH
+ + THINTHICKLG_DIST_WIDTH, line.GetWidth() );
}
void BorderLineTest::testGuessWidthNostyleDouble()
@@ -139,7 +159,14 @@ void BorderLineTest::testGuessWidthNostyleDouble()
THINTHICKLG_IN_WIDTH,
THINTHICKLG_DIST_WIDTH );
CPPUNIT_ASSERT_EQUAL( THINTHICK_LARGEGAP, line.GetBorderLineStyle() );
- CPPUNIT_ASSERT_EQUAL( TEST_WIDTH, line.GetWidth() );
+ CPPUNIT_ASSERT_EQUAL( THINTHICKLG_OUT_WIDTH,
+ static_cast<long>(line.GetOutWidth()) );
+ CPPUNIT_ASSERT_EQUAL( THINTHICKLG_IN_WIDTH,
+ static_cast<long>(line.GetInWidth()) );
+ CPPUNIT_ASSERT_EQUAL( THINTHICKLG_DIST_WIDTH,
+ static_cast<long>(line.GetDistance()) );
+ CPPUNIT_ASSERT_EQUAL( THINTHICKLG_OUT_WIDTH + THINTHICKLG_IN_WIDTH
+ + THINTHICKLG_DIST_WIDTH, line.GetWidth() );
}
void BorderLineTest::testGuessWidthNostyleSingle()