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

Generated by: LCOV version 1.10