LCOV - code coverage report
Current view: top level - xmloff/source/text - XMLTextColumnsContext.cxx (source / functions) Hit Total Coverage
Test: commit 0e63ca4fde4e446f346e35849c756a30ca294aab Lines: 110 181 60.8 %
Date: 2014-04-11 Functions: 11 34 32.4 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include <com/sun/star/text/XTextColumns.hpp>
      21             : #include <com/sun/star/text/TextColumn.hpp>
      22             : #include <com/sun/star/lang/XMultiServiceFactory.hpp>
      23             : #include <com/sun/star/style/VerticalAlignment.hpp>
      24             : #include <com/sun/star/beans/XPropertySet.hpp>
      25             : #include <sax/tools/converter.hxx>
      26             : #include <xmloff/xmltkmap.hxx>
      27             : #include <xmloff/xmluconv.hxx>
      28             : #include <xmloff/nmspmap.hxx>
      29             : #include <xmloff/xmlnmspe.hxx>
      30             : #include <xmloff/xmlimp.hxx>
      31             : #include <xmloff/xmltoken.hxx>
      32             : #include "XMLTextColumnsContext.hxx"
      33             : 
      34             : using namespace ::com::sun::star;
      35             : using namespace ::com::sun::star::uno;
      36             : using namespace ::com::sun::star::lang;
      37             : using namespace ::com::sun::star::text;
      38             : using namespace ::com::sun::star::style;
      39             : using namespace ::com::sun::star::beans;
      40             : using namespace ::xmloff::token;
      41             : 
      42             : enum SvXMLTokenMapAttrs
      43             : {
      44             :     XML_TOK_COLUMN_WIDTH,
      45             :     XML_TOK_COLUMN_MARGIN_LEFT,
      46             :     XML_TOK_COLUMN_MARGIN_RIGHT,
      47             :     XML_TOK_COLUMN_END=XML_TOK_UNKNOWN
      48             : };
      49             : 
      50             : enum SvXMLSepTokenMapAttrs
      51             : {
      52             :     XML_TOK_COLUMN_SEP_WIDTH,
      53             :     XML_TOK_COLUMN_SEP_HEIGHT,
      54             :     XML_TOK_COLUMN_SEP_COLOR,
      55             :     XML_TOK_COLUMN_SEP_ALIGN,
      56             :     XML_TOK_COLUMN_SEP_STYLE,
      57             :     XML_TOK_COLUMN_SEP_END=XML_TOK_UNKNOWN
      58             : };
      59             : 
      60             : static const SvXMLTokenMapEntry aColAttrTokenMap[] =
      61             : {
      62             :     { XML_NAMESPACE_STYLE,  XML_REL_WIDTH,      XML_TOK_COLUMN_WIDTH },
      63             :     { XML_NAMESPACE_FO,     XML_START_INDENT,   XML_TOK_COLUMN_MARGIN_LEFT },
      64             :     { XML_NAMESPACE_FO,     XML_END_INDENT,     XML_TOK_COLUMN_MARGIN_RIGHT },
      65             :     XML_TOKEN_MAP_END
      66             : };
      67             : 
      68             : static const SvXMLTokenMapEntry aColSepAttrTokenMap[] =
      69             : {
      70             :     { XML_NAMESPACE_STYLE,  XML_WIDTH,          XML_TOK_COLUMN_SEP_WIDTH },
      71             :     { XML_NAMESPACE_STYLE,  XML_COLOR,          XML_TOK_COLUMN_SEP_COLOR },
      72             :     { XML_NAMESPACE_STYLE,  XML_HEIGHT,         XML_TOK_COLUMN_SEP_HEIGHT },
      73             :     { XML_NAMESPACE_STYLE,  XML_VERTICAL_ALIGN, XML_TOK_COLUMN_SEP_ALIGN },
      74             :     { XML_NAMESPACE_STYLE,  XML_STYLE,          XML_TOK_COLUMN_SEP_STYLE },
      75             :     XML_TOKEN_MAP_END
      76             : };
      77             : 
      78             : static SvXMLEnumMapEntry const pXML_Sep_Style_Enum[] =
      79             : {
      80             :     { XML_NONE,          0 },
      81             :     { XML_SOLID,         1 },
      82             :     { XML_DOTTED,        2 },
      83             :     { XML_DASHED,        3 },
      84             :     { XML_TOKEN_INVALID, 0 }
      85             : };
      86             : 
      87             : static SvXMLEnumMapEntry const pXML_Sep_Align_Enum[] =
      88             : {
      89             :     { XML_TOP,          VerticalAlignment_TOP   },
      90             :     { XML_MIDDLE,       VerticalAlignment_MIDDLE },
      91             :     { XML_BOTTOM,       VerticalAlignment_BOTTOM },
      92             :     { XML_TOKEN_INVALID, 0 }
      93             : };
      94             : 
      95             : class XMLTextColumnContext_Impl: public SvXMLImportContext
      96             : {
      97             :     text::TextColumn aColumn;
      98             : 
      99             : public:
     100             :     TYPEINFO_OVERRIDE();
     101             : 
     102             :     XMLTextColumnContext_Impl( SvXMLImport& rImport, sal_uInt16 nPrfx,
     103             :                                const OUString& rLName,
     104             :                                const uno::Reference<
     105             :                                        xml::sax::XAttributeList > & xAttrList,
     106             :                                const SvXMLTokenMap& rTokenMap );
     107             : 
     108             :     virtual ~XMLTextColumnContext_Impl();
     109             : 
     110          38 :     text::TextColumn& getTextColumn() { return aColumn; }
     111             : };
     112             : 
     113           0 : TYPEINIT1( XMLTextColumnContext_Impl, SvXMLImportContext );
     114             : 
     115          35 : XMLTextColumnContext_Impl::XMLTextColumnContext_Impl(
     116             :                                SvXMLImport& rImport, sal_uInt16 nPrfx,
     117             :                                const OUString& rLName,
     118             :                                const uno::Reference<
     119             :                                        xml::sax::XAttributeList > & xAttrList,
     120             :                                const SvXMLTokenMap& rTokenMap ) :
     121          35 :     SvXMLImportContext( rImport, nPrfx, rLName )
     122             : {
     123          35 :     aColumn.Width = 0;
     124          35 :     aColumn.LeftMargin = 0;
     125          35 :     aColumn.RightMargin = 0;
     126             : 
     127          35 :     sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
     128         140 :     for( sal_Int16 i=0; i < nAttrCount; i++ )
     129             :     {
     130         105 :         const OUString& rAttrName = xAttrList->getNameByIndex( i );
     131         210 :         OUString aLocalName;
     132             :         sal_uInt16 nPrefix =
     133         105 :             GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName,
     134         105 :                                                             &aLocalName );
     135         210 :         const OUString& rValue = xAttrList->getValueByIndex( i );
     136             : 
     137             :         sal_Int32 nVal;
     138         105 :         switch( rTokenMap.Get( nPrefix, aLocalName ) )
     139             :         {
     140             :         case XML_TOK_COLUMN_WIDTH:
     141             :             {
     142          35 :                 sal_Int32 nPos = rValue.indexOf( (sal_Unicode)'*' );
     143          35 :                 if( nPos != -1 && nPos+1 == rValue.getLength() )
     144             :                 {
     145          35 :                     OUString sTmp( rValue.copy( 0, nPos ) );
     146          35 :                     if (::sax::Converter::convertNumber(
     147             :                                 nVal, sTmp, 0, USHRT_MAX))
     148          35 :                     aColumn.Width = nVal;
     149             :                 }
     150             :             }
     151          35 :             break;
     152             :         case XML_TOK_COLUMN_MARGIN_LEFT:
     153          35 :             if( GetImport().GetMM100UnitConverter().
     154             :                                 convertMeasureToCore( nVal, rValue ) )
     155          35 :                 aColumn.LeftMargin = nVal;
     156          35 :             break;
     157             :         case XML_TOK_COLUMN_MARGIN_RIGHT:
     158             : 
     159          35 :             if( GetImport().GetMM100UnitConverter().
     160             :                                 convertMeasureToCore( nVal, rValue ) )
     161          35 :                 aColumn.RightMargin = nVal;
     162          35 :             break;
     163             :         default:
     164           0 :             break;
     165             :         }
     166         105 :     }
     167          35 : }
     168             : 
     169          70 : XMLTextColumnContext_Impl::~XMLTextColumnContext_Impl()
     170             : {
     171          70 : }
     172             : 
     173             : class XMLTextColumnSepContext_Impl: public SvXMLImportContext
     174             : {
     175             :     sal_Int32 nWidth;
     176             :     sal_Int32 nColor;
     177             :     sal_Int8 nHeight;
     178             :     sal_Int8 nStyle;
     179             :     VerticalAlignment eVertAlign;
     180             : 
     181             : public:
     182             :     TYPEINFO_OVERRIDE();
     183             : 
     184             :     XMLTextColumnSepContext_Impl( SvXMLImport& rImport, sal_uInt16 nPrfx,
     185             :                                const OUString& rLName,
     186             :                                const uno::Reference<
     187             :                                        xml::sax::XAttributeList > & xAttrList,
     188             :                                const SvXMLTokenMap& rTokenMap );
     189             : 
     190             :     virtual ~XMLTextColumnSepContext_Impl();
     191             : 
     192           0 :     sal_Int32 GetWidth() const { return nWidth; }
     193           0 :     sal_Int32 GetColor() const { return  nColor; }
     194           0 :     sal_Int8 GetHeight() const { return nHeight; }
     195           0 :     sal_Int8 GetStyle() const { return nStyle; }
     196           0 :     VerticalAlignment GetVertAlign() const { return eVertAlign; }
     197             : };
     198             : 
     199           0 : TYPEINIT1( XMLTextColumnSepContext_Impl, SvXMLImportContext );
     200             : 
     201           0 : XMLTextColumnSepContext_Impl::XMLTextColumnSepContext_Impl(
     202             :                                SvXMLImport& rImport, sal_uInt16 nPrfx,
     203             :                                const OUString& rLName,
     204             :                                const uno::Reference<
     205             :                                        xml::sax::XAttributeList > & xAttrList,
     206             :                                const SvXMLTokenMap& rTokenMap ) :
     207             :     SvXMLImportContext( rImport, nPrfx, rLName ),
     208             :     nWidth( 2 ),
     209             :     nColor( 0 ),
     210             :     nHeight( 100 ),
     211             :     nStyle( 1 ),
     212           0 :     eVertAlign( VerticalAlignment_TOP )
     213             : {
     214           0 :     sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
     215           0 :     for( sal_Int16 i=0; i < nAttrCount; i++ )
     216             :     {
     217           0 :         const OUString& rAttrName = xAttrList->getNameByIndex( i );
     218           0 :         OUString aLocalName;
     219             :         sal_uInt16 nPrefix =
     220           0 :             GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName,
     221           0 :                                                             &aLocalName );
     222           0 :         const OUString& rValue = xAttrList->getValueByIndex( i );
     223             : 
     224             :         sal_Int32 nVal;
     225           0 :         switch( rTokenMap.Get( nPrefix, aLocalName ) )
     226             :         {
     227             :         case XML_TOK_COLUMN_SEP_WIDTH:
     228           0 :             if( GetImport().GetMM100UnitConverter().
     229             :                                 convertMeasureToCore( nVal, rValue ) )
     230           0 :                 nWidth = nVal;
     231           0 :             break;
     232             :         case XML_TOK_COLUMN_SEP_HEIGHT:
     233           0 :             if (::sax::Converter::convertPercent( nVal, rValue ) &&
     234           0 :                  nVal >=1 && nVal <= 100 )
     235           0 :                 nHeight = (sal_Int8)nVal;
     236           0 :             break;
     237             :         case XML_TOK_COLUMN_SEP_COLOR:
     238             :             {
     239           0 :                 ::sax::Converter::convertColor( nColor, rValue );
     240             :             }
     241           0 :             break;
     242             :         case XML_TOK_COLUMN_SEP_ALIGN:
     243             :             {
     244             :                 sal_uInt16 nAlign;
     245           0 :                 if( GetImport().GetMM100UnitConverter().
     246             :                                         convertEnum( nAlign, rValue,
     247             :                                                        pXML_Sep_Align_Enum ) )
     248           0 :                     eVertAlign = (VerticalAlignment)nAlign;
     249             :             }
     250           0 :             break;
     251             :         case XML_TOK_COLUMN_SEP_STYLE:
     252             :             {
     253             :                 sal_uInt16 nStyleVal;
     254           0 :                 if( GetImport().GetMM100UnitConverter().
     255             :                                         convertEnum( nStyleVal, rValue,
     256             :                                                        pXML_Sep_Style_Enum ) )
     257           0 :                     nStyle = (sal_Int8)nStyleVal;
     258             :             }
     259           0 :             break;
     260             :         }
     261           0 :     }
     262           0 : }
     263             : 
     264           0 : XMLTextColumnSepContext_Impl::~XMLTextColumnSepContext_Impl()
     265             : {
     266           0 : }
     267             : 
     268          30 : class XMLTextColumnsArray_Impl : public std::vector<XMLTextColumnContext_Impl *> {};
     269             : 
     270           0 : TYPEINIT1( XMLTextColumnsContext, XMLElementPropertyContext );
     271             : 
     272          27 : XMLTextColumnsContext::XMLTextColumnsContext(
     273             :                                 SvXMLImport& rImport, sal_uInt16 nPrfx,
     274             :                                 const OUString& rLName,
     275             :                                 const Reference< xml::sax::XAttributeList >&
     276             :                                     xAttrList,
     277             :                                 const XMLPropertyState& rProp,
     278             :                                  ::std::vector< XMLPropertyState > &rProps )
     279             : :   XMLElementPropertyContext( rImport, nPrfx, rLName, rProp, rProps )
     280             : ,   sSeparatorLineIsOn("SeparatorLineIsOn")
     281             : ,   sSeparatorLineWidth("SeparatorLineWidth")
     282             : ,   sSeparatorLineColor("SeparatorLineColor")
     283             : ,   sSeparatorLineRelativeHeight("SeparatorLineRelativeHeight")
     284             : ,   sSeparatorLineVerticalAlignment("SeparatorLineVerticalAlignment")
     285             : ,   sIsAutomatic("IsAutomatic")
     286             : ,   sAutomaticDistance("AutomaticDistance")
     287             : ,   sSeparatorLineStyle("SeparatorLineStyle")
     288             : ,   pColumns( 0 )
     289             : ,   pColumnSep( 0 )
     290          27 : ,   pColumnAttrTokenMap( new SvXMLTokenMap(aColAttrTokenMap) )
     291          27 : ,   pColumnSepAttrTokenMap( new SvXMLTokenMap(aColSepAttrTokenMap) )
     292             : ,   nCount( 0 )
     293             : ,   bAutomatic( sal_False )
     294          81 : ,   nAutomaticDistance( 0 )
     295             : {
     296          27 :     sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
     297             :     sal_Int32 nVal;
     298          72 :     for( sal_Int16 i=0; i < nAttrCount; i++ )
     299             :     {
     300          45 :         const OUString& rAttrName = xAttrList->getNameByIndex( i );
     301          90 :         OUString aLocalName;
     302             :         sal_uInt16 nPrefix =
     303          45 :             GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName,
     304          45 :                                                             &aLocalName );
     305          90 :         const OUString& rValue = xAttrList->getValueByIndex( i );
     306          45 :         if( XML_NAMESPACE_FO == nPrefix )
     307             :         {
     308          72 :             if( IsXMLToken( aLocalName, XML_COLUMN_COUNT ) &&
     309          27 :                 ::sax::Converter::convertNumber( nVal, rValue, 0, SHRT_MAX ))
     310             :             {
     311          27 :                 nCount = (sal_Int16)nVal;
     312             :             }
     313          18 :             else if( IsXMLToken( aLocalName, XML_COLUMN_GAP ) )
     314             :             {
     315          18 :                 bAutomatic = GetImport().GetMM100UnitConverter().
     316          36 :                     convertMeasureToCore( nAutomaticDistance, rValue );
     317             :             }
     318             :         }
     319          45 :     }
     320          27 : }
     321             : 
     322          81 : XMLTextColumnsContext::~XMLTextColumnsContext()
     323             : {
     324          27 :     if( pColumns )
     325             :     {
     326         150 :         for (XMLTextColumnsArray_Impl::iterator it = pColumns->begin();
     327         100 :                 it != pColumns->end(); ++it)
     328             :         {
     329          35 :            (*it)->ReleaseRef();
     330             :         }
     331             :     }
     332          27 :     if( pColumnSep )
     333           0 :         pColumnSep->ReleaseRef();
     334             : 
     335          27 :     delete pColumns;
     336          27 :     delete pColumnAttrTokenMap;
     337          27 :     delete pColumnSepAttrTokenMap;
     338          54 : }
     339             : 
     340          35 : SvXMLImportContext *XMLTextColumnsContext::CreateChildContext(
     341             :     sal_uInt16 nPrefix,
     342             :     const OUString& rLocalName,
     343             :     const uno::Reference< xml::sax::XAttributeList > & xAttrList )
     344             : {
     345          35 :     SvXMLImportContext *pContext = 0;
     346             : 
     347          70 :     if( XML_NAMESPACE_STYLE == nPrefix &&
     348          35 :         IsXMLToken( rLocalName, XML_COLUMN ) )
     349             :     {
     350             :         XMLTextColumnContext_Impl *pColumn =
     351          35 :             new XMLTextColumnContext_Impl( GetImport(), nPrefix, rLocalName,
     352          35 :                                            xAttrList, *pColumnAttrTokenMap );
     353             : 
     354             :         // add new tabstop to array of tabstops
     355          35 :         if( !pColumns )
     356          15 :             pColumns = new XMLTextColumnsArray_Impl;
     357             : 
     358          35 :         pColumns->push_back( pColumn );
     359          35 :         pColumn->AddRef();
     360             : 
     361          35 :         pContext = pColumn;
     362             :     }
     363           0 :     else if( XML_NAMESPACE_STYLE == nPrefix &&
     364           0 :              IsXMLToken( rLocalName, XML_COLUMN_SEP ) )
     365             :     {
     366             :         pColumnSep =
     367           0 :             new XMLTextColumnSepContext_Impl( GetImport(), nPrefix, rLocalName,
     368           0 :                                            xAttrList, *pColumnSepAttrTokenMap );
     369           0 :         pColumnSep->AddRef();
     370             : 
     371           0 :         pContext = pColumnSep;
     372             :     }
     373             :     else
     374             :     {
     375           0 :         pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName );
     376             :     }
     377             : 
     378          35 :     return pContext;
     379             : }
     380             : 
     381          27 : void XMLTextColumnsContext::EndElement( )
     382             : {
     383          27 :     Reference<XMultiServiceFactory> xFactory(GetImport().GetModel(),UNO_QUERY);
     384          27 :     if( !xFactory.is() )
     385           0 :         return;
     386             : 
     387          54 :     Reference<XInterface> xIfc = xFactory->createInstance("com.sun.star.text.TextColumns");
     388          27 :     if( !xIfc.is() )
     389           0 :         return;
     390             : 
     391          54 :     Reference< XTextColumns > xColumns( xIfc, UNO_QUERY );
     392          27 :     if ( 0 == nCount )
     393             :     {
     394             :         // zero columns = no columns -> 1 column
     395           0 :         xColumns->setColumnCount( 1 );
     396             :     }
     397          36 :     else if( !bAutomatic && pColumns &&
     398           9 :              pColumns->size() == (sal_uInt16)nCount )
     399             :     {
     400             :         // if we have column descriptions, one per column, and we don't use
     401             :         // automatic width, then set the column widths
     402             : 
     403           9 :         sal_Int32 nRelWidth = 0;
     404           9 :         sal_uInt16 nColumnsWithWidth = 0;
     405             :         sal_Int16 i;
     406             : 
     407          28 :         for( i = 0; i < nCount; i++ )
     408             :         {
     409             :             const TextColumn& rColumn =
     410          19 :                 (*pColumns)[(sal_uInt16)i]->getTextColumn();
     411          19 :             if( rColumn.Width > 0 )
     412             :             {
     413          19 :                 nRelWidth += rColumn.Width;
     414          19 :                 nColumnsWithWidth++;
     415             :             }
     416             :         }
     417           9 :         if( nColumnsWithWidth < nCount )
     418             :         {
     419             :             sal_Int32 nColWidth = 0==nRelWidth
     420             :                                         ? USHRT_MAX / nCount
     421           0 :                                         : nRelWidth / nColumnsWithWidth;
     422             : 
     423           0 :             for( i=0; i < nCount; i++ )
     424             :             {
     425             :                 TextColumn& rColumn =
     426           0 :                     (*pColumns)[(sal_uInt16)i]->getTextColumn();
     427           0 :                 if( rColumn.Width == 0 )
     428             :                 {
     429           0 :                     rColumn.Width = nColWidth;
     430           0 :                     nRelWidth += rColumn.Width;
     431           0 :                     if( 0 == --nColumnsWithWidth )
     432           0 :                         break;
     433             :                 }
     434             :             }
     435             :         }
     436             : 
     437           9 :         Sequence< TextColumn > aColumns( (sal_Int32)nCount );
     438           9 :         TextColumn *pTextColumns = aColumns.getArray();
     439          28 :         for( i=0; i < nCount; i++ )
     440          19 :             *pTextColumns++ = (*pColumns)[(sal_uInt16)i]->getTextColumn();
     441             : 
     442           9 :         xColumns->setColumns( aColumns );
     443             :     }
     444             :     else
     445             :     {
     446             :         // only set column count (and let the columns be distributed
     447             :         // automatically)
     448             : 
     449          18 :         xColumns->setColumnCount( nCount );
     450             :     }
     451             : 
     452          54 :     Reference < XPropertySet > xPropSet( xColumns, UNO_QUERY );
     453          27 :     if( xPropSet.is() )
     454             :     {
     455          27 :         Any aAny;
     456          27 :         sal_Bool bOn = pColumnSep != 0;
     457             : 
     458          27 :         aAny.setValue( &bOn, ::getBooleanCppuType() );
     459          27 :         xPropSet->setPropertyValue( sSeparatorLineIsOn, aAny );
     460             : 
     461          27 :         if( pColumnSep )
     462             :         {
     463           0 :             if( pColumnSep->GetWidth() )
     464             :             {
     465           0 :                 aAny <<= pColumnSep->GetWidth();
     466           0 :                 xPropSet->setPropertyValue( sSeparatorLineWidth, aAny );
     467             :             }
     468           0 :             if( pColumnSep->GetHeight() )
     469             :             {
     470           0 :                 aAny <<= pColumnSep->GetHeight();
     471           0 :                 xPropSet->setPropertyValue( sSeparatorLineRelativeHeight,
     472           0 :                                             aAny );
     473             :             }
     474           0 :             if ( pColumnSep->GetStyle() )
     475             :             {
     476           0 :                 aAny <<= pColumnSep->GetStyle();
     477           0 :                 xPropSet->setPropertyValue( sSeparatorLineStyle, aAny );
     478             :             }
     479             : 
     480           0 :             aAny <<= pColumnSep->GetColor();
     481           0 :             xPropSet->setPropertyValue( sSeparatorLineColor, aAny );
     482             : 
     483           0 :             aAny <<= pColumnSep->GetVertAlign();
     484           0 :             xPropSet->setPropertyValue( sSeparatorLineVerticalAlignment, aAny );
     485             :         }
     486             : 
     487             :         // handle 'automatic columns': column distance
     488          27 :         if( bAutomatic )
     489             :         {
     490          18 :             aAny <<= nAutomaticDistance;
     491          18 :             xPropSet->setPropertyValue( sAutomaticDistance, aAny );
     492          27 :         }
     493             :     }
     494             : 
     495          27 :     aProp.maValue <<= xColumns;
     496             : 
     497          27 :     SetInsert( sal_True );
     498          54 :     XMLElementPropertyContext::EndElement();
     499             : 
     500             : }
     501             : 
     502             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10