From 74c5ed19f430327988194cdcd6bdff09591a93fa Mon Sep 17 00:00:00 2001 From: Adam Co Date: Wed, 26 Jun 2013 11:08:56 +0300 Subject: [PATCH] DOCX import fix for table with auto size Change-Id: Ic86f4f142e579bdef3e954492e1c1e382a545739 Reviewed-on: https://gerrit.libreoffice.org/4496 --- .../data/table-auto-column-fixed-size.docx | Bin 0 -> 17672 bytes sw/qa/extras/ooxmlimport/ooxmlimport.cxx | 12 +++++ .../dmapper/DomainMapperTableManager.cxx | 44 +++++++++++++++++- .../dmapper/DomainMapperTableManager.hxx | 1 + 4 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 sw/qa/extras/ooxmlimport/data/table-auto-column-fixed-size.docx diff --git a/sw/qa/extras/ooxmlimport/data/table-auto-column-fixed-size.docx b/sw/qa/extras/ooxmlimport/data/table-auto-column-fixed-size.docx new file mode 100644 index 0000000000000000000000000000000000000000..557edcb3cb0bdae0e3441e397d2ff8c736024a76 GIT binary patch literal 17672 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 literal 0 HcmV?d00001 diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx index 4f23d926686c..985bd66b80cd 100644 --- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx +++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx @@ -121,6 +121,7 @@ public: void testN820788(); void testN820504(); void testFdo43641(); + void testTableAutoColumnFixedSize(); CPPUNIT_TEST_SUITE(Test); #if !defined(MACOSX) && !defined(WNT) @@ -208,6 +209,7 @@ void Test::run() {"n820788.docx", &Test::testN820788}, {"n820504.docx", &Test::testN820504}, {"fdo43641.docx", &Test::testFdo43641}, + {"table-auto-column-fixed-size.docx", &Test::testTableAutoColumnFixedSize}, }; header(); for (unsigned int i = 0; i < SAL_N_ELEMENTS(aMethods); ++i) @@ -1462,6 +1464,16 @@ void Test::testFdo43641() CPPUNIT_ASSERT_EQUAL(sal_Int32(EMU_TO_MM100(928694)), xLine->getSize().Width); } +void Test::testTableAutoColumnFixedSize() +{ + uno::Reference xTablesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY); + uno::Reference xTextTable(xTables->getByIndex(0), uno::UNO_QUERY); + + // Width was not recognized during import when table size was 'auto' + CPPUNIT_ASSERT_EQUAL(sal_Int32(TWIP_TO_MM100(3996)), getProperty(xTextTable, "Width")); +} + CPPUNIT_TEST_SUITE_REGISTRATION(Test); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/writerfilter/source/dmapper/DomainMapperTableManager.cxx b/writerfilter/source/dmapper/DomainMapperTableManager.cxx index 48d1e3132690..6aabf59418cd 100644 --- a/writerfilter/source/dmapper/DomainMapperTableManager.cxx +++ b/writerfilter/source/dmapper/DomainMapperTableManager.cxx @@ -57,6 +57,7 @@ DomainMapperTableManager::DomainMapperTableManager(bool bOOXML) : m_bRowSizeTypeInserted(false), m_bTableSizeTypeInserted(false), m_nLayoutType(0), + m_nMaxFixedWidth(0), m_pTablePropsHandler( new TablePropertiesHandler( bOOXML ) ) { m_pTablePropsHandler->SetTableManager( this ); @@ -132,8 +133,47 @@ bool DomainMapperTableManager::sprm(Sprm & rSprm) } else if( sal::static_int_cast(pMeasureHandler->getUnit()) == NS_ooxml::LN_Value_ST_TblWidth_auto ) { - pPropMap->setValue( TablePropertyMap::TABLE_WIDTH_TYPE, text::SizeType::VARIABLE ); - pPropMap->setValue( TablePropertyMap::TABLE_WIDTH, 100 ); + /* + This attribute specifies the width type of table. This is used as part of the table layout + algorithm specified by the tblLayout element.(See 17.4.64 and 17.4.65 of the ISO/IEC 29500-1:2011.) + If this valus is 'auto', the table layout has to uses the preferred widths on the table items to generate + the final sizing of the table, but then must use the contents of each cell to determine final column widths. + (See 17.18.87 of the ISO/IEC 29500-1:2011.) + */ + bool bFixed = false; + sal_Int32 nRowFixedWidth = 0; + if (!m_aCellWidths.empty()) + { + // Step 1. Check whether any cell has fixed width in the given row of table. + ::std::vector< IntVectorPtr >::iterator itr; + for (itr = m_aCellWidths.begin(); itr != m_aCellWidths.end(); itr ++) + { + IntVectorPtr itrVal = (*itr); + for (std::vector::const_iterator aValIter = itrVal->begin(); aValIter != itrVal->end(); ++aValIter) + { + // Sum the width of cells to find the total width of given row + nRowFixedWidth += (*aValIter); + bFixed = true; + } + } + } + + // Check whether the total width of given row is compared with the maximum value of rows (m_nMaxFixedWidth). + if (bFixed ) + { + // Check if total width + if (m_nMaxFixedWidth < nRowFixedWidth) + m_nMaxFixedWidth = nRowFixedWidth; + + pPropMap->setValue( TablePropertyMap::TABLE_WIDTH_TYPE, text::SizeType::FIX ); + pPropMap->setValue( TablePropertyMap::TABLE_WIDTH, m_nMaxFixedWidth ); + } + else + { + // Set the width type of table with 'Auto' and set the width value to 100(%) + pPropMap->setValue( TablePropertyMap::TABLE_WIDTH_TYPE, text::SizeType::VARIABLE ); + pPropMap->setValue( TablePropertyMap::TABLE_WIDTH, 100 ); + } } m_bTableSizeTypeInserted = true; } diff --git a/writerfilter/source/dmapper/DomainMapperTableManager.hxx b/writerfilter/source/dmapper/DomainMapperTableManager.hxx index 1384197a585f..6243b619c0e1 100644 --- a/writerfilter/source/dmapper/DomainMapperTableManager.hxx +++ b/writerfilter/source/dmapper/DomainMapperTableManager.hxx @@ -62,6 +62,7 @@ class DomainMapperTableManager : public DomainMapperTableManager_Base_t bool m_bTableSizeTypeInserted; /// Table layout algorithm, IOW if we should consider fixed column width or not. sal_uInt32 m_nLayoutType; + sal_Int32 m_nMaxFixedWidth; TablePropertiesHandler *m_pTablePropsHandler; PropertyMapPtr m_pStyleProps;