[Libreoffice-commits] .: sc/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Thu Oct 4 08:59:57 PDT 2012


 sc/source/filter/excel/xetable.cxx     |    5 +++--
 sc/source/filter/inc/xetable.hxx       |    1 +
 sc/source/filter/oox/unitconverter.cxx |    5 ++---
 3 files changed, 6 insertions(+), 5 deletions(-)

New commits:
commit 8e753f8446554822d97969b0c18eba6cb9d79e26
Author: Noel Power <noel.power at suse.com>
Date:   Thu Oct 4 15:45:36 2012 +0100

    xlsx fix import/export of column widths fdo#55623
    
    column widths were never imported or exported correctly in xlsx.
    
    Change-Id: I92d469ce52495fe77281cb22341e9c5127e6b506

diff --git a/sc/source/filter/excel/xetable.cxx b/sc/source/filter/excel/xetable.cxx
index 89d4e01..d3f6028 100644
--- a/sc/source/filter/excel/xetable.cxx
+++ b/sc/source/filter/excel/xetable.cxx
@@ -1484,6 +1484,7 @@ XclExpColinfo::XclExpColinfo( const XclExpRoot& rRoot,
     XclExpRecord( EXC_ID_COLINFO, 12 ),
     XclExpRoot( rRoot ),
     mnWidth( 0 ),
+    mnScWidth( 0 ),
     mnFlags( 0 ),
     mnFirstXclCol( static_cast< sal_uInt16 >( nScCol ) ),
     mnLastXclCol( static_cast< sal_uInt16 >( nScCol ) )
@@ -1498,7 +1499,7 @@ XclExpColinfo::XclExpColinfo( const XclExpRoot& rRoot,
     // column width
     sal_uInt16 nScWidth = rDoc.GetColWidth( nScCol, nScTab );
     mnWidth = XclTools::GetXclColumnWidth( nScWidth, GetCharWidth() );
-
+    mnScWidth =  sc::TwipsToHMM( nScWidth );
     // column flags
     ::set_flag( mnFlags, EXC_COLINFO_HIDDEN, rDoc.ColHidden(nScCol, nScTab) );
 
@@ -1564,7 +1565,7 @@ void XclExpColinfo::SaveXml( XclExpXmlStream& rStrm )
             // OOXTODO: XML_outlineLevel,
             // OOXTODO: XML_phonetic,
             XML_style,          lcl_GetStyleId( rStrm, maXFId.mnXFIndex ).getStr(),
-            XML_width,          OString::valueOf( (double) (mnWidth / 255.0) ).getStr(),
+            XML_width,          OString::valueOf( (double) (mnScWidth / (double)sc::TwipsToHMM( GetCharWidth() )) ).getStr(),
             FSEND );
 }
 
diff --git a/sc/source/filter/inc/xetable.hxx b/sc/source/filter/inc/xetable.hxx
index 598dcde..bbf04fd 100644
--- a/sc/source/filter/inc/xetable.hxx
+++ b/sc/source/filter/inc/xetable.hxx
@@ -783,6 +783,7 @@ private:
 private:
     XclExpXFId          maXFId;             /// The XF identifier for column default format.
     sal_uInt16          mnWidth;            /// Excel width of the column.
+    sal_uInt16          mnScWidth;          /// Calc width of the column.
     sal_uInt16          mnFlags;            /// Additional column flags.
     sal_uInt16          mnFirstXclCol;      /// Index to first column.
     sal_uInt16          mnLastXclCol;       /// Index to last column.
diff --git a/sc/source/filter/oox/unitconverter.cxx b/sc/source/filter/oox/unitconverter.cxx
index e2feb87..2d0431b 100644
--- a/sc/source/filter/oox/unitconverter.cxx
+++ b/sc/source/filter/oox/unitconverter.cxx
@@ -149,18 +149,17 @@ void UnitConverter::finalizeImport()
         {
             // XDevice expects pixels in font descriptor, but font contains twips
             FontDescriptor aDesc = pDefFont->getFontDescriptor();
-            aDesc.Height = static_cast< sal_Int16 >( scaleValue( aDesc.Height, UNIT_TWIP, UNIT_REFDEVX ) + 0.5 );
             Reference< XFont > xFont = xDevice->getFont( aDesc );
             if( xFont.is() )
             {
                 // get maximum width of all digits
                 sal_Int32 nDigitWidth = 0;
                 for( sal_Unicode cChar = '0'; cChar <= '9'; ++cChar )
-                    nDigitWidth = ::std::max( nDigitWidth, scaleToMm100( xFont->getCharWidth( cChar ), UNIT_REFDEVX ) );
+                    nDigitWidth = ::std::max( nDigitWidth, scaleToMm100( xFont->getCharWidth( cChar ), UNIT_TWIP ) );
                 if( nDigitWidth > 0 )
                     maCoeffs[ UNIT_DIGIT ] = nDigitWidth;
                 // get width of space character
-                sal_Int32 nSpaceWidth = scaleToMm100( xFont->getCharWidth( ' ' ), UNIT_REFDEVX );
+                sal_Int32 nSpaceWidth = scaleToMm100( xFont->getCharWidth( ' ' ), UNIT_TWIP );
                 if( nSpaceWidth > 0 )
                     maCoeffs[ UNIT_SPACE ] = nSpaceWidth;
             }


More information about the Libreoffice-commits mailing list