LCOV - code coverage report
Current view: top level - sw/source/filter/xml - xmlimpit.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 158 417 37.9 %
Date: 2012-08-25 Functions: 5 9 55.6 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 158 659 24.0 %

           Branch data     Line data    Source code
       1                 :            : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2                 :            : /*************************************************************************
       3                 :            :  *
       4                 :            :  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       5                 :            :  *
       6                 :            :  * Copyright 2000, 2010 Oracle and/or its affiliates.
       7                 :            :  *
       8                 :            :  * OpenOffice.org - a multi-platform office productivity suite
       9                 :            :  *
      10                 :            :  * This file is part of OpenOffice.org.
      11                 :            :  *
      12                 :            :  * OpenOffice.org is free software: you can redistribute it and/or modify
      13                 :            :  * it under the terms of the GNU Lesser General Public License version 3
      14                 :            :  * only, as published by the Free Software Foundation.
      15                 :            :  *
      16                 :            :  * OpenOffice.org is distributed in the hope that it will be useful,
      17                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      18                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      19                 :            :  * GNU Lesser General Public License version 3 for more details
      20                 :            :  * (a copy is included in the LICENSE file that accompanied this code).
      21                 :            :  *
      22                 :            :  * You should have received a copy of the GNU Lesser General Public License
      23                 :            :  * version 3 along with OpenOffice.org.  If not, see
      24                 :            :  * <http://www.openoffice.org/license.html>
      25                 :            :  * for a copy of the LGPLv3 License.
      26                 :            :  *
      27                 :            :  ************************************************************************/
      28                 :            : 
      29                 :            : 
      30                 :            : #include "xmlimpit.hxx"
      31                 :            : 
      32                 :            : #include <sax/tools/converter.hxx>
      33                 :            : #include <xmloff/xmluconv.hxx>
      34                 :            : #include <svl/itempool.hxx>
      35                 :            : #include <svl/poolitem.hxx>
      36                 :            : #include <svl/itemset.hxx>
      37                 :            : #include <xmloff/attrlist.hxx>
      38                 :            : #include <xmloff/nmspmap.hxx>
      39                 :            : #include <xmloff/xmlnmspe.hxx>
      40                 :            : #include <editeng/xmlcnitm.hxx>
      41                 :            : #include <editeng/memberids.hrc>
      42                 :            : 
      43                 :            : 
      44                 :            : #include "hintids.hxx"
      45                 :            : #include "unomid.h"
      46                 :            : #include <svx/unomid.hxx>
      47                 :            : #include <editeng/lrspitem.hxx>
      48                 :            : #include <editeng/ulspitem.hxx>
      49                 :            : #include <editeng/shaditem.hxx>
      50                 :            : #include <editeng/boxitem.hxx>
      51                 :            : #include <editeng/brkitem.hxx>
      52                 :            : #include <editeng/keepitem.hxx>
      53                 :            : #include <editeng/brshitem.hxx>
      54                 :            : #include "fmtpdsc.hxx"
      55                 :            : #include "fmtornt.hxx"
      56                 :            : #include "fmtfsize.hxx"
      57                 :            : 
      58                 :            : #include "fmtlsplt.hxx"
      59                 :            : #include <xmloff/prhdlfac.hxx>
      60                 :            : #include <xmloff/xmltypes.hxx>
      61                 :            : #include "xmlithlp.hxx"
      62                 :            : #include <com/sun/star/uno/Any.hxx>
      63                 :            : 
      64                 :            : using ::editeng::SvxBorderLine;
      65                 :            : using ::rtl::OUString;
      66                 :            : using namespace ::com::sun::star;
      67                 :            : using namespace ::xmloff::token;
      68                 :            : using uno::Any;
      69                 :            : 
      70                 :        266 : SvXMLImportItemMapper::SvXMLImportItemMapper(
      71                 :            :                                 SvXMLItemMapEntriesRef rMapEntries,
      72                 :            :                                 sal_uInt16 nUnknWhich ) :
      73                 :            :     mrMapEntries( rMapEntries ),
      74                 :        266 :     nUnknownWhich( nUnknWhich )
      75                 :            : {
      76                 :        266 : }
      77                 :            : 
      78                 :        266 : SvXMLImportItemMapper::~SvXMLImportItemMapper()
      79                 :            : {
      80         [ -  + ]:        266 : }
      81                 :            : 
      82                 :            : void
      83                 :         57 : SvXMLImportItemMapper::setMapEntries( SvXMLItemMapEntriesRef rMapEntries )
      84                 :            : {
      85                 :         57 :     mrMapEntries = rMapEntries;
      86                 :         57 : }
      87                 :            : 
      88                 :            : /** fills the given itemset with the attributes in the given list */
      89                 :         57 : void SvXMLImportItemMapper::importXML( SfxItemSet& rSet,
      90                 :            :                                       uno::Reference< xml::sax::XAttributeList > xAttrList,
      91                 :            :                                       const SvXMLUnitConverter& rUnitConverter,
      92                 :            :                                       const SvXMLNamespaceMap& rNamespaceMap )
      93                 :            : {
      94                 :         57 :     sal_Int16 nAttr = xAttrList->getLength();
      95                 :            : 
      96                 :         57 :     SvXMLAttrContainerItem *pUnknownItem = 0;
      97         [ +  + ]:        207 :     for( sal_Int16 i=0; i < nAttr; i++ )
      98                 :            :     {
      99 [ +  - ][ +  - ]:        150 :         const OUString& rAttrName = xAttrList->getNameByIndex( i );
     100                 :        150 :         OUString aLocalName, aPrefix, aNamespace;
     101                 :            :         sal_uInt16 nPrefix =
     102                 :            :             rNamespaceMap.GetKeyByAttrName( rAttrName, &aPrefix, &aLocalName,
     103         [ +  - ]:        150 :                                             &aNamespace );
     104         [ -  + ]:        150 :         if( XML_NAMESPACE_XMLNS == nPrefix )
     105                 :          0 :             continue;
     106                 :            : 
     107 [ +  - ][ +  - ]:        150 :         const OUString& rValue = xAttrList->getValueByIndex( i );
     108                 :            : 
     109                 :            :         // find a map entry for this attribute
     110         [ +  - ]:        150 :         SvXMLItemMapEntry* pEntry = mrMapEntries->getByName( nPrefix, aLocalName );
     111                 :            : 
     112         [ +  - ]:        150 :         if( pEntry )
     113                 :            :         {
     114                 :            :             // we have a valid map entry here, so lets use it...
     115         [ +  - ]:        150 :             if( 0 == (pEntry->nMemberId & (MID_SW_FLAG_NO_ITEM_IMPORT|
     116                 :            :                                        MID_SW_FLAG_ELEMENT_ITEM_IMPORT)) )
     117                 :            :             {
     118                 :            :                 // first get item from itemset
     119                 :        150 :                 const SfxPoolItem* pItem = 0;
     120                 :            :                 SfxItemState eState = rSet.GetItemState( pEntry->nWhichId, sal_True,
     121         [ +  - ]:        150 :                                                          &pItem );
     122                 :            : 
     123                 :            :                 // if its not set, try the pool
     124 [ +  + ][ +  - ]:        150 :                 if(SFX_ITEM_SET != eState && SFX_WHICH_MAX > pEntry->nWhichId )
     125         [ +  - ]:         63 :                     pItem = &rSet.GetPool()->GetDefaultItem(pEntry->nWhichId);
     126                 :            : 
     127                 :            :                 // do we have an item?
     128 [ +  - ][ +  - ]:        150 :                 if(eState >= SFX_ITEM_DEFAULT && pItem)
     129                 :            :                 {
     130         [ +  - ]:        150 :                     SfxPoolItem *pNewItem = pItem->Clone();
     131                 :        150 :                     sal_Bool bPut = sal_False;
     132                 :            : 
     133         [ +  + ]:        150 :                     if( 0 == (pEntry->nMemberId&MID_SW_FLAG_SPECIAL_ITEM_IMPORT) )
     134                 :            :                     {
     135                 :            :                         bPut = PutXMLValue( *pNewItem, rValue,
     136                 :            :                                             static_cast<sal_uInt16>( pEntry->nMemberId & MID_SW_FLAG_MASK ),
     137         [ +  - ]:        147 :                                             rUnitConverter );
     138                 :            : 
     139                 :            :                     }
     140                 :            :                     else
     141                 :            :                     {
     142                 :            :                         bPut = handleSpecialItem( *pEntry, *pNewItem, rSet,
     143                 :            :                                                   rValue, rUnitConverter,
     144         [ +  - ]:          3 :                                                   rNamespaceMap );
     145                 :            :                     }
     146                 :            : 
     147         [ +  + ]:        150 :                     if( bPut )
     148         [ +  - ]:        147 :                         rSet.Put( *pNewItem );
     149                 :            : 
     150 [ +  - ][ +  - ]:        150 :                     delete pNewItem;
     151                 :            :                 }
     152                 :            :                 else
     153                 :            :                 {
     154                 :            :                     OSL_FAIL( "Could not get a needed item for xml import!" );
     155                 :            :                 }
     156                 :            :             }
     157         [ #  # ]:          0 :             else if( 0 != (pEntry->nMemberId & MID_SW_FLAG_NO_ITEM_IMPORT) )
     158                 :            :             {
     159                 :            :                 handleNoItem( *pEntry, rSet, rValue, rUnitConverter,
     160         [ #  # ]:          0 :                               rNamespaceMap );
     161                 :            :             }
     162                 :            :         }
     163         [ #  # ]:          0 :         else if( USHRT_MAX != nUnknownWhich )
     164                 :            :         {
     165         [ #  # ]:          0 :             if( !pUnknownItem )
     166                 :            :             {
     167                 :          0 :                 const SfxPoolItem* pItem = 0;
     168         [ #  # ]:          0 :                 if( SFX_ITEM_SET == rSet.GetItemState( nUnknownWhich, sal_True,
     169         [ #  # ]:          0 :                                                        &pItem ) )
     170                 :            :                 {
     171         [ #  # ]:          0 :                     SfxPoolItem *pNew = pItem->Clone();
     172 [ #  # ][ #  # ]:          0 :                     pUnknownItem = PTR_CAST( SvXMLAttrContainerItem, pNew );
         [ #  # ][ #  # ]
     173                 :            :                     OSL_ENSURE( pUnknownItem,
     174                 :            :                                 "SvXMLAttrContainerItem expected" );
     175         [ #  # ]:          0 :                     if( !pUnknownItem )
     176 [ #  # ][ #  # ]:          0 :                         delete pNew;
     177                 :            :                 }
     178                 :            :                 else
     179                 :            :                 {
     180 [ #  # ][ #  # ]:          0 :                     pUnknownItem = new SvXMLAttrContainerItem( nUnknownWhich );
     181                 :            :                 }
     182                 :            :             }
     183         [ #  # ]:          0 :             if( pUnknownItem )
     184                 :            :             {
     185         [ #  # ]:          0 :                 if( XML_NAMESPACE_NONE == nPrefix )
     186         [ #  # ]:          0 :                     pUnknownItem->AddAttr( aLocalName, rValue );
     187                 :            :                 else
     188                 :            :                     pUnknownItem->AddAttr( aPrefix, aNamespace, aLocalName,
     189         [ #  # ]:          0 :                                            rValue );
     190                 :            :             }
     191                 :            :         }
     192 [ -  + ][ -  + ]:        150 :     }
         [ -  + ][ +  - ]
     193                 :            : 
     194         [ -  + ]:         57 :     if( pUnknownItem )
     195                 :            :     {
     196                 :          0 :         rSet.Put( *pUnknownItem );
     197         [ #  # ]:          0 :         delete pUnknownItem;
     198                 :            :     }
     199                 :            : 
     200                 :         57 :     finished(rSet, rUnitConverter);
     201                 :         57 : }
     202                 :            : 
     203                 :            : /** this method is called for every item that has the
     204                 :            :     MID_SW_FLAG_SPECIAL_ITEM_IMPORT flag set */
     205                 :            : sal_Bool
     206                 :          0 : SvXMLImportItemMapper::handleSpecialItem(  const SvXMLItemMapEntry& /*rEntry*/,
     207                 :            :                                             SfxPoolItem& /*rItem*/,
     208                 :            :                                             SfxItemSet& /*rSet*/,
     209                 :            :                                             const OUString& /*rValue*/,
     210                 :            :                                             const SvXMLUnitConverter& /*rUnitConverter*/,
     211                 :            :                                             const SvXMLNamespaceMap& /*rNamespaceMap*/ )
     212                 :            : {
     213                 :            :     OSL_FAIL( "unsuported special item in xml import" );
     214                 :          0 :     return sal_False;
     215                 :            : }
     216                 :            : 
     217                 :            : /** this method is called for every item that has the
     218                 :            :     MID_SW_FLAG_NO_ITEM_IMPORT flag set */
     219                 :          0 : sal_Bool SvXMLImportItemMapper::handleNoItem( const SvXMLItemMapEntry& /*rEntry*/,
     220                 :            :                                            SfxItemSet& /*rSet*/,
     221                 :            :                                            const OUString& /*rValue*/,
     222                 :            :                                            const SvXMLUnitConverter& /*rUnitConverter*/,
     223                 :            :                                            const SvXMLNamespaceMap& /*rNamespaceMap*/ )
     224                 :            : {
     225                 :            :     OSL_FAIL( "unsuported no item in xml import" );
     226                 :          0 :     return sal_False;
     227                 :            : }
     228                 :            : 
     229                 :            : void
     230                 :          0 : SvXMLImportItemMapper::finished(SfxItemSet &, SvXMLUnitConverter const&) const
     231                 :            : {
     232                 :            :     // nothing to do here
     233                 :          0 : }
     234                 :            : 
     235                 :            : 
     236                 :            : 
     237                 :            : // put an XML-string value into an item
     238                 :        150 : sal_Bool SvXMLImportItemMapper::PutXMLValue(
     239                 :            :     SfxPoolItem& rItem,
     240                 :            :     const ::rtl::OUString& rValue,
     241                 :            :     sal_uInt16 nMemberId,
     242                 :            :     const SvXMLUnitConverter& rUnitConverter )
     243                 :            : {
     244                 :        150 :     sal_Bool bOk = sal_False;
     245                 :            : 
     246   [ -  -  +  +  :        150 :     switch (rItem.Which())
          -  -  -  -  -  
          +  -  +  -  -  
                      - ]
     247                 :            :         {
     248                 :            :         case RES_LR_SPACE:
     249                 :            :         {
     250 [ #  # ][ #  # ]:          0 :             SvxLRSpaceItem* pLRSpace = PTR_CAST(SvxLRSpaceItem, &rItem);
     251                 :            :             OSL_ENSURE( pLRSpace != NULL, "Wrong Which-ID!" );
     252                 :            : 
     253   [ #  #  #  # ]:          0 :             switch( nMemberId )
     254                 :            :             {
     255                 :            :                 case MID_L_MARGIN:
     256                 :            :                 case MID_R_MARGIN:
     257                 :            :                 {
     258                 :          0 :                     sal_Int32 nProp = 100;
     259                 :          0 :                     sal_Int32 nAbs = 0;
     260                 :            : 
     261         [ #  # ]:          0 :                     if( rValue.indexOf( sal_Unicode('%') ) != -1 )
     262         [ #  # ]:          0 :                         bOk = ::sax::Converter::convertPercent(nProp, rValue);
     263                 :            :                     else
     264         [ #  # ]:          0 :                         bOk = rUnitConverter.convertMeasureToCore(nAbs, rValue);
     265                 :            : 
     266         [ #  # ]:          0 :                     if( bOk )
     267                 :            :                     {
     268      [ #  #  # ]:          0 :                         switch( nMemberId )
     269                 :            :                         {
     270                 :            :                             case MID_L_MARGIN:
     271         [ #  # ]:          0 :                                 pLRSpace->SetTxtLeft( (sal_Int32)nAbs, (sal_uInt16)nProp );
     272                 :          0 :                                 break;
     273                 :            :                             case MID_R_MARGIN:
     274                 :          0 :                                 pLRSpace->SetRight( (sal_Int32)nAbs, (sal_uInt16)nProp );
     275                 :          0 :                                 break;
     276                 :            :                         }
     277                 :            :                     }
     278                 :            :                 }
     279                 :          0 :                 break;
     280                 :            :                 case MID_FIRST_LINE_INDENT:
     281                 :            :                 {
     282                 :          0 :                     sal_Int32 nProp = 100;
     283                 :          0 :                     sal_Int32 nAbs = 0;
     284                 :            : 
     285         [ #  # ]:          0 :                     if( rValue.indexOf( sal_Unicode('%') ) != -1 )
     286         [ #  # ]:          0 :                         bOk = ::sax::Converter::convertPercent(nProp, rValue);
     287                 :            :                     else
     288                 :            :                         bOk = rUnitConverter.convertMeasureToCore(nAbs, rValue,
     289         [ #  # ]:          0 :                                                              -0x7fff, 0x7fff );
     290                 :            : 
     291         [ #  # ]:          0 :                     pLRSpace->SetTxtFirstLineOfst( (short)nAbs, (sal_uInt16)nProp );
     292                 :            :                 }
     293                 :            : 
     294                 :            :                 case MID_FIRST_AUTO:
     295                 :            :                 {
     296                 :          0 :                     bool bAutoFirst(false);
     297         [ #  # ]:          0 :                     bOk = ::sax::Converter::convertBool( bAutoFirst, rValue );
     298         [ #  # ]:          0 :                     if( bOk )
     299                 :          0 :                         pLRSpace->SetAutoFirst( bAutoFirst );
     300                 :            :                 }
     301                 :          0 :                 break;
     302                 :            : 
     303                 :            :                 default:
     304                 :            :                     OSL_FAIL( "unknown member id!");
     305                 :            :             }
     306                 :            :         }
     307                 :          0 :         break;
     308                 :            : 
     309                 :            :         case RES_UL_SPACE:
     310                 :            :         {
     311 [ #  # ][ #  # ]:          0 :             SvxULSpaceItem* pULSpace = PTR_CAST(SvxULSpaceItem, &rItem);
         [ #  # ][ #  # ]
     312                 :            :             OSL_ENSURE( pULSpace != NULL, "Wrong Which-ID!" );
     313                 :            : 
     314                 :          0 :             sal_Int32 nProp = 100;
     315                 :          0 :             sal_Int32 nAbs = 0;
     316                 :            : 
     317         [ #  # ]:          0 :             if( rValue.indexOf( sal_Unicode('%') ) != -1 )
     318         [ #  # ]:          0 :                 bOk = ::sax::Converter::convertPercent( nProp, rValue );
     319                 :            :             else
     320         [ #  # ]:          0 :                 bOk = rUnitConverter.convertMeasureToCore( nAbs, rValue );
     321                 :            : 
     322      [ #  #  # ]:          0 :             switch( nMemberId )
     323                 :            :             {
     324                 :            :                 case MID_UP_MARGIN:
     325                 :          0 :                     pULSpace->SetUpper( (sal_uInt16)nAbs, (sal_uInt16)nProp );
     326                 :          0 :                     break;
     327                 :            :                 case MID_LO_MARGIN:
     328                 :          0 :                     pULSpace->SetLower( (sal_uInt16)nAbs, (sal_uInt16)nProp );
     329                 :          0 :                     break;
     330                 :            :                 default:
     331                 :            :                     OSL_FAIL("unknown MemberId");
     332                 :            :             }
     333                 :            :         }
     334                 :          0 :         break;
     335                 :            : 
     336                 :            :         case RES_SHADOW:
     337                 :            :         {
     338 [ +  - ][ +  - ]:          3 :             SvxShadowItem* pShadow = PTR_CAST(SvxShadowItem, &rItem);
         [ +  - ][ +  - ]
     339                 :            :             OSL_ENSURE( pShadow != NULL, "Wrong Which-ID" );
     340                 :            : 
     341                 :          3 :             sal_Bool bColorFound = sal_False;
     342                 :          3 :             sal_Bool bOffsetFound = sal_False;
     343                 :            : 
     344         [ +  - ]:          3 :             SvXMLTokenEnumerator aTokenEnum( rValue );
     345                 :            : 
     346                 :          3 :             Color aColor( 128,128, 128 );
     347                 :          3 :             pShadow->SetLocation( SVX_SHADOW_BOTTOMRIGHT );
     348                 :            : 
     349                 :          3 :             OUString aToken;
     350 [ +  - ][ +  + ]:          6 :             while( aTokenEnum.getNextToken( aToken ) )
     351                 :            :             {
     352 [ +  - ][ +  - ]:          3 :                 if( IsXMLToken( aToken, XML_NONE ) )
     353                 :            :                 {
     354                 :          3 :                     pShadow->SetLocation( SVX_SHADOW_NONE );
     355                 :          3 :                     bOk = sal_True;
     356                 :            :                 }
     357 [ #  # ][ #  # ]:          0 :                 else if( !bColorFound && aToken.compareToAscii( "#", 1 ) == 0 )
                 [ #  # ]
     358                 :            :                 {
     359                 :          0 :                     sal_Int32 nColor(0);
     360         [ #  # ]:          0 :                     bOk = ::sax::Converter::convertColor( nColor, aToken );
     361         [ #  # ]:          0 :                     if( !bOk )
     362                 :          0 :                         return sal_False;
     363                 :            : 
     364                 :          0 :                     aColor.SetColor(nColor);
     365                 :          0 :                     bColorFound = sal_True;
     366                 :            :                 }
     367         [ #  # ]:          0 :                 else if( !bOffsetFound )
     368                 :            :                 {
     369                 :          0 :                     sal_Int32 nX = 0, nY = 0;
     370                 :            : 
     371         [ #  # ]:          0 :                     bOk = rUnitConverter.convertMeasureToCore( nX, aToken );
     372 [ #  # ][ #  # ]:          0 :                     if( bOk && aTokenEnum.getNextToken( aToken ) )
         [ #  # ][ #  # ]
     373         [ #  # ]:          0 :                         bOk = rUnitConverter.convertMeasureToCore( nY, aToken );
     374                 :            : 
     375         [ #  # ]:          0 :                     if( bOk )
     376                 :            :                     {
     377         [ #  # ]:          0 :                         if( nX < 0 )
     378                 :            :                         {
     379         [ #  # ]:          0 :                             if( nY < 0 )
     380                 :            :                             {
     381                 :          0 :                                 pShadow->SetLocation( SVX_SHADOW_TOPLEFT );
     382                 :            :                             }
     383                 :            :                             else
     384                 :            :                             {
     385                 :          0 :                                 pShadow->SetLocation( SVX_SHADOW_BOTTOMLEFT );
     386                 :            :                             }
     387                 :            :                         }
     388                 :            :                         else
     389                 :            :                         {
     390         [ #  # ]:          0 :                             if( nY < 0 )
     391                 :            :                             {
     392                 :          0 :                                 pShadow->SetLocation( SVX_SHADOW_TOPRIGHT );
     393                 :            :                             }
     394                 :            :                             else
     395                 :            :                             {
     396                 :          0 :                                 pShadow->SetLocation( SVX_SHADOW_BOTTOMRIGHT );
     397                 :            :                             }
     398                 :            :                         }
     399                 :            : 
     400         [ #  # ]:          0 :                         if( nX < 0 ) nX *= -1;
     401         [ #  # ]:          0 :                         if( nY < 0 ) nY *= -1;
     402                 :            : 
     403                 :          0 :                         pShadow->SetWidth( static_cast< sal_uInt16 >( (nX + nY) >> 1 ) );
     404                 :            :                     }
     405                 :            :                 }
     406                 :            :             }
     407                 :            : 
     408 [ +  - ][ +  - ]:          3 :             if( bOk && ( bColorFound || bOffsetFound ) )
                 [ -  + ]
     409                 :            :             {
     410                 :          0 :                 pShadow->SetColor( aColor );
     411                 :            :             }
     412                 :            :             else
     413         [ +  - ]:          3 :                 bOk = sal_False;
     414                 :            :         }
     415                 :          3 :         break;
     416                 :            : 
     417                 :            :         case RES_BOX:
     418                 :            :         {
     419 [ +  - ][ +  - ]:        135 :             SvxBoxItem* pBox = PTR_CAST(SvxBoxItem, &rItem);
         [ +  - ][ +  - ]
     420                 :            :             OSL_ENSURE( pBox != NULL, "Wrong WHich-ID" );
     421                 :            : 
     422                 :            :             /** copy SvxBorderLines */
     423                 :        135 :             SvxBorderLine* pTop    = pBox->GetTop() == NULL ?
     424 [ +  - ][ +  - ]:        135 :                                 NULL : new SvxBorderLine( *pBox->GetTop() );
                 [ +  + ]
     425                 :        135 :             SvxBorderLine* pBottom = pBox->GetBottom() == NULL ?
     426 [ +  - ][ +  - ]:        135 :                                 NULL : new SvxBorderLine( *pBox->GetBottom() );
                 [ +  + ]
     427                 :        135 :             SvxBorderLine* pLeft   = pBox->GetLeft() == NULL ?
     428 [ +  - ][ +  - ]:        135 :                                 NULL : new SvxBorderLine( *pBox->GetLeft() );
                 [ +  + ]
     429                 :        135 :             SvxBorderLine* pRight  = pBox->GetRight() == NULL ?
     430 [ +  - ][ +  - ]:        135 :                                 NULL : new SvxBorderLine( *pBox->GetRight() );
                 [ +  + ]
     431                 :            : 
     432                 :            :             sal_Int32 nTemp;
     433                 :            : 
     434   [ +  +  +  - ]:        135 :             switch( nMemberId )
     435                 :            :             {
     436                 :            :                 case ALL_BORDER_PADDING:
     437                 :            :                 case LEFT_BORDER_PADDING:
     438                 :            :                 case RIGHT_BORDER_PADDING:
     439                 :            :                 case TOP_BORDER_PADDING:
     440                 :            :                 case BOTTOM_BORDER_PADDING:
     441         [ -  + ]:         51 :                     if (!rUnitConverter.convertMeasureToCore( nTemp, rValue,
     442         [ +  - ]:         51 :                                 0, 0xffff ))
     443                 :            :                     {
     444                 :          0 :                         return sal_False;
     445                 :            :                     }
     446                 :            : 
     447 [ +  - ][ +  - ]:         51 :                     if( nMemberId == LEFT_BORDER_PADDING ||
     448                 :            :                         nMemberId == ALL_BORDER_PADDING )
     449         [ +  - ]:         51 :                         pBox->SetDistance( (sal_uInt16)nTemp, BOX_LINE_LEFT );
     450 [ +  - ][ +  - ]:         51 :                     if( nMemberId == RIGHT_BORDER_PADDING ||
     451                 :            :                         nMemberId == ALL_BORDER_PADDING )
     452         [ +  - ]:         51 :                         pBox->SetDistance( (sal_uInt16)nTemp, BOX_LINE_RIGHT );
     453 [ +  - ][ +  - ]:         51 :                     if( nMemberId == TOP_BORDER_PADDING ||
     454                 :            :                         nMemberId == ALL_BORDER_PADDING )
     455         [ +  - ]:         51 :                         pBox->SetDistance( (sal_uInt16)nTemp, BOX_LINE_TOP );
     456 [ +  - ][ +  - ]:         51 :                     if( nMemberId == BOTTOM_BORDER_PADDING ||
     457                 :            :                         nMemberId == ALL_BORDER_PADDING )
     458         [ +  - ]:         51 :                         pBox->SetDistance( (sal_uInt16)nTemp, BOX_LINE_BOTTOM);
     459                 :         51 :                     break;
     460                 :            : 
     461                 :            :                 case ALL_BORDER:
     462                 :            :                 case LEFT_BORDER:
     463                 :            :                 case RIGHT_BORDER:
     464                 :            :                 case TOP_BORDER:
     465                 :            :                 case BOTTOM_BORDER:
     466                 :            :                 {
     467                 :         51 :                     sal_Bool bHasStyle = sal_False;
     468                 :         51 :                     sal_Bool bHasWidth = sal_False;
     469                 :         51 :                     sal_Bool bHasColor = sal_False;
     470                 :            : 
     471                 :         51 :                     sal_uInt16 nStyle = USHRT_MAX;
     472                 :         51 :                     sal_uInt16 nWidth = 0;
     473                 :         51 :                     sal_uInt16 nNamedWidth = USHRT_MAX;
     474                 :            : 
     475                 :         51 :                     Color aColor( COL_BLACK );
     476                 :            : 
     477         [ -  + ]:         51 :                     if( !lcl_frmitems_parseXMLBorder( rValue, rUnitConverter,
     478                 :            :                                                       bHasStyle, nStyle,
     479                 :            :                                                       bHasWidth, nWidth, nNamedWidth,
     480         [ +  - ]:         51 :                                                       bHasColor, aColor ) )
     481                 :          0 :                         return sal_False;
     482                 :            : 
     483 [ +  - ][ +  - ]:         51 :                     if( TOP_BORDER == nMemberId || ALL_BORDER == nMemberId )
     484                 :            :                         lcl_frmitems_setXMLBorder( pTop,
     485                 :            :                                                    bHasStyle, nStyle,
     486                 :            :                                                    bHasWidth, nWidth, nNamedWidth,
     487         [ +  - ]:         51 :                                                    bHasColor, aColor );
     488                 :            : 
     489 [ +  - ][ +  - ]:         51 :                     if( BOTTOM_BORDER == nMemberId || ALL_BORDER == nMemberId )
     490                 :            :                         lcl_frmitems_setXMLBorder( pBottom,
     491                 :            :                                                    bHasStyle, nStyle,
     492                 :            :                                                    bHasWidth, nWidth, nNamedWidth,
     493         [ +  - ]:         51 :                                                    bHasColor, aColor );
     494                 :            : 
     495 [ +  - ][ +  - ]:         51 :                     if( LEFT_BORDER == nMemberId || ALL_BORDER == nMemberId )
     496                 :            :                         lcl_frmitems_setXMLBorder( pLeft,
     497                 :            :                                                    bHasStyle, nStyle,
     498                 :            :                                                    bHasWidth, nWidth, nNamedWidth,
     499         [ +  - ]:         51 :                                                    bHasColor, aColor );
     500                 :            : 
     501 [ +  - ][ +  - ]:         51 :                     if( RIGHT_BORDER == nMemberId || ALL_BORDER == nMemberId )
     502                 :            :                         lcl_frmitems_setXMLBorder( pRight,
     503                 :            :                                                    bHasStyle, nStyle,
     504                 :            :                                                    bHasWidth, nWidth, nNamedWidth,
     505         [ +  - ]:         51 :                                                    bHasColor, aColor );
     506                 :            :                 }
     507                 :         51 :                 break;
     508                 :            :                 case ALL_BORDER_LINE_WIDTH:
     509                 :            :                 case LEFT_BORDER_LINE_WIDTH:
     510                 :            :                 case RIGHT_BORDER_LINE_WIDTH:
     511                 :            :                 case TOP_BORDER_LINE_WIDTH:
     512                 :            :                 case BOTTOM_BORDER_LINE_WIDTH:
     513                 :            :                 {
     514         [ +  - ]:         33 :                     SvXMLTokenEnumerator aTokenEnum( rValue );
     515                 :            : 
     516                 :            :                     sal_Int32 nInWidth, nDistance, nOutWidth;
     517                 :            : 
     518                 :         33 :                     OUString aToken;
     519 [ -  + ][ +  - ]:         33 :                     if( !aTokenEnum.getNextToken( aToken ) )
     520                 :          0 :                         return sal_False;
     521                 :            : 
     522 [ +  - ][ -  + ]:         33 :                     if (!rUnitConverter.convertMeasureToCore(nInWidth, aToken))
     523                 :          0 :                         return sal_False;
     524                 :            : 
     525 [ +  - ][ -  + ]:         33 :                     if( !aTokenEnum.getNextToken( aToken ) )
     526                 :          0 :                         return sal_False;
     527                 :            : 
     528 [ +  - ][ -  + ]:         33 :                     if (!rUnitConverter.convertMeasureToCore(nDistance, aToken))
     529                 :          0 :                         return sal_False;
     530                 :            : 
     531 [ +  - ][ -  + ]:         33 :                     if( !aTokenEnum.getNextToken( aToken ) )
     532                 :          0 :                         return sal_False;
     533                 :            : 
     534 [ +  - ][ -  + ]:         33 :                     if (!rUnitConverter.convertMeasureToCore(nOutWidth, aToken))
     535                 :          0 :                         return sal_False;
     536                 :            : 
     537                 :            :                     // #i61946: accept line style even it's not part of our "normal" set of line styles
     538                 :         33 :                     sal_uInt16 nWidth = 0;
     539                 :            : 
     540 [ +  - ][ +  - ]:         33 :                     if( TOP_BORDER_LINE_WIDTH == nMemberId ||
     541                 :            :                         ALL_BORDER_LINE_WIDTH == nMemberId )
     542                 :            :                         lcl_frmitems_setXMLBorder( pTop, nWidth,
     543                 :            :                                 static_cast< sal_uInt16 >( nOutWidth ),
     544                 :            :                                 static_cast< sal_uInt16 >( nInWidth ),
     545         [ +  - ]:         33 :                                 static_cast< sal_uInt16 >( nDistance ) );
     546                 :            : 
     547 [ +  - ][ +  - ]:         33 :                     if( BOTTOM_BORDER_LINE_WIDTH == nMemberId ||
     548                 :            :                         ALL_BORDER_LINE_WIDTH == nMemberId )
     549                 :            :                         lcl_frmitems_setXMLBorder( pBottom, nWidth,
     550                 :            :                                 static_cast< sal_uInt16 >( nOutWidth ),
     551                 :            :                                 static_cast< sal_uInt16 >( nInWidth ),
     552         [ +  - ]:         33 :                                 static_cast< sal_uInt16 >( nDistance ) );
     553                 :            : 
     554 [ +  - ][ +  - ]:         33 :                     if( LEFT_BORDER_LINE_WIDTH == nMemberId ||
     555                 :            :                         ALL_BORDER_LINE_WIDTH == nMemberId )
     556                 :            :                         lcl_frmitems_setXMLBorder( pLeft, nWidth,
     557                 :            :                                 static_cast< sal_uInt16 >( nOutWidth ),
     558                 :            :                                 static_cast< sal_uInt16 >( nInWidth ),
     559         [ +  - ]:         33 :                                 static_cast< sal_uInt16 >( nDistance ) );
     560                 :            : 
     561 [ +  - ][ +  - ]:         33 :                     if( RIGHT_BORDER_LINE_WIDTH == nMemberId ||
     562                 :            :                         ALL_BORDER_LINE_WIDTH == nMemberId )
     563                 :            :                         lcl_frmitems_setXMLBorder( pRight, nWidth,
     564                 :            :                                 static_cast< sal_uInt16 >( nOutWidth ),
     565                 :            :                                 static_cast< sal_uInt16 >( nInWidth ),
     566 [ +  - ][ +  - ]:         33 :                                 static_cast< sal_uInt16 >( nDistance ) );
     567                 :            :                 }
     568                 :         33 :                 break;
     569                 :            :             }
     570                 :            : 
     571         [ +  - ]:        135 :             pBox->SetLine( pTop,    BOX_LINE_TOP    );
     572         [ +  - ]:        135 :             pBox->SetLine( pBottom, BOX_LINE_BOTTOM );
     573         [ +  - ]:        135 :             pBox->SetLine( pLeft,   BOX_LINE_LEFT   );
     574         [ +  - ]:        135 :             pBox->SetLine( pRight,  BOX_LINE_RIGHT  );
     575                 :            : 
     576                 :        135 :             delete pTop;
     577                 :        135 :             delete pBottom;
     578                 :        135 :             delete pLeft;
     579                 :        135 :             delete pRight;
     580                 :            : 
     581                 :        135 :             bOk = sal_True;
     582                 :            :         }
     583                 :        135 :         break;
     584                 :            : 
     585                 :            :         case RES_BREAK:
     586                 :            :         {
     587 [ #  # ][ #  # ]:          0 :             SvxFmtBreakItem* pFmtBreak = PTR_CAST(SvxFmtBreakItem, &rItem);
         [ #  # ][ #  # ]
     588                 :            :             OSL_ENSURE( pFmtBreak != NULL, "Wrong Which-ID" );
     589                 :            : 
     590                 :            :             sal_uInt16 eEnum;
     591                 :            : 
     592 [ #  # ][ #  # ]:          0 :             if( !rUnitConverter.convertEnum( eEnum, rValue, psXML_BreakType ) )
     593                 :          0 :                 return sal_False;
     594                 :            : 
     595         [ #  # ]:          0 :             if( eEnum == 0 )
     596                 :            :             {
     597                 :          0 :                 pFmtBreak->SetValue( SVX_BREAK_NONE );
     598                 :          0 :                 bOk = sal_True;
     599                 :            :             }
     600                 :            :             else
     601                 :            :             {
     602      [ #  #  # ]:          0 :                 switch( nMemberId )
     603                 :            :                 {
     604                 :            :                     case MID_BREAK_BEFORE:
     605                 :            :                         pFmtBreak->SetValue( static_cast< sal_uInt16 >((eEnum == 1) ?
     606                 :            :                                              SVX_BREAK_COLUMN_BEFORE :
     607         [ #  # ]:          0 :                                              SVX_BREAK_PAGE_BEFORE) );
     608                 :          0 :                         break;
     609                 :            :                     case MID_BREAK_AFTER:
     610                 :            :                         pFmtBreak->SetValue( static_cast< sal_uInt16 >((eEnum == 1) ?
     611                 :            :                                              SVX_BREAK_COLUMN_AFTER :
     612         [ #  # ]:          0 :                                              SVX_BREAK_PAGE_AFTER) );
     613                 :          0 :                         break;
     614                 :            :                 }
     615                 :          0 :                 bOk = sal_True;
     616                 :            :             }
     617                 :            :         }
     618                 :          0 :         break;
     619                 :            : 
     620                 :            :         case RES_KEEP:
     621                 :            :         {
     622 [ #  # ][ #  # ]:          0 :             SvxFmtKeepItem* pFmtKeep = PTR_CAST(SvxFmtKeepItem, &rItem);
     623                 :            :             OSL_ENSURE( pFmtKeep != NULL, "Wrong Which-ID" );
     624                 :            : 
     625   [ #  #  #  # ]:          0 :             if( IsXMLToken( rValue, XML_ALWAYS ) ||
                 [ #  # ]
     626                 :          0 :                  IsXMLToken( rValue, XML_TRUE ) )
     627                 :            :             {
     628                 :          0 :                 pFmtKeep->SetValue( sal_True );
     629                 :          0 :                 bOk = sal_True;
     630                 :            :             }
     631   [ #  #  #  # ]:          0 :             else if( IsXMLToken( rValue, XML_AUTO ) ||
                 [ #  # ]
     632                 :          0 :                      IsXMLToken( rValue, XML_FALSE ) )
     633                 :            :             {
     634                 :          0 :                 pFmtKeep->SetValue( sal_False );
     635                 :          0 :                 bOk = sal_True;
     636                 :            :             }
     637                 :            :         }
     638                 :          0 :         break;
     639                 :            : 
     640                 :            :         case RES_BACKGROUND:
     641                 :            :         {
     642 [ #  # ][ #  # ]:          0 :             SvxBrushItem* pBrush = PTR_CAST(SvxBrushItem, &rItem);
         [ #  # ][ #  # ]
     643                 :            :             OSL_ENSURE( pBrush != NULL, "Wrong Which-ID" );
     644                 :            : 
     645                 :          0 :             sal_Int32 nTempColor(0);
     646   [ #  #  #  #  :          0 :             switch( nMemberId )
                   #  # ]
     647                 :            :                 {
     648                 :            :                 case MID_BACK_COLOR:
     649 [ #  # ][ #  # ]:          0 :                     if( IsXMLToken( rValue, XML_TRANSPARENT ) )
     650                 :            :                     {
     651         [ #  # ]:          0 :                         pBrush->GetColor().SetTransparency(0xff);
     652                 :          0 :                         bOk = sal_True;
     653                 :            :                     }
     654 [ #  # ][ #  # ]:          0 :                     else if (::sax::Converter::convertColor(nTempColor, rValue))
     655                 :            :                     {
     656                 :          0 :                         Color aTempColor(nTempColor);
     657         [ #  # ]:          0 :                         aTempColor.SetTransparency(0);
     658                 :          0 :                         pBrush->SetColor( aTempColor );
     659                 :          0 :                         bOk = sal_True;
     660                 :            :                     }
     661                 :          0 :                     break;
     662                 :            : 
     663                 :            :                 case MID_GRAPHIC_LINK:
     664                 :            :                 {
     665                 :          0 :                     SvxGraphicPosition eOldGraphicPos = pBrush->GetGraphicPos();
     666                 :          0 :                     uno::Any aAny;
     667         [ #  # ]:          0 :                     aAny <<= rValue;
     668         [ #  # ]:          0 :                     pBrush->PutValue( aAny, MID_GRAPHIC_URL );
     669   [ #  #  #  # ]:          0 :                     if( GPOS_NONE == eOldGraphicPos &&
                 [ #  # ]
     670                 :          0 :                         GPOS_NONE != pBrush->GetGraphicPos() )
     671         [ #  # ]:          0 :                         pBrush->SetGraphicPos( GPOS_TILED );
     672                 :          0 :                     bOk = sal_True  ;
     673                 :            :                 }
     674                 :          0 :                 break;
     675                 :            : 
     676                 :            :                 case MID_GRAPHIC_REPEAT:
     677                 :            :                 {
     678                 :          0 :                     SvxGraphicPosition eGraphicPos = pBrush->GetGraphicPos();
     679                 :          0 :                     sal_uInt16 nPos = GPOS_NONE;
     680         [ #  # ]:          0 :                     if( rUnitConverter.convertEnum( nPos, rValue,
     681         [ #  # ]:          0 :                                                     psXML_BrushRepeat ) )
     682                 :            :                     {
     683 [ #  # ][ #  # ]:          0 :                         if( GPOS_MM != nPos || GPOS_NONE == eGraphicPos ||
         [ #  # ][ #  # ]
     684                 :            :                             GPOS_AREA == eGraphicPos || GPOS_TILED == eGraphicPos )
     685         [ #  # ]:          0 :                             pBrush->SetGraphicPos( (SvxGraphicPosition)nPos );
     686                 :          0 :                         bOk = sal_True;
     687                 :            :                     }
     688                 :            :                 }
     689                 :          0 :                 break;
     690                 :            : 
     691                 :            :                 case MID_GRAPHIC_POSITION:
     692                 :            :                 {
     693                 :          0 :                     SvxGraphicPosition ePos = GPOS_NONE, eTmp;
     694                 :            :                     sal_uInt16 nTmp;
     695         [ #  # ]:          0 :                     SvXMLTokenEnumerator aTokenEnum( rValue );
     696                 :          0 :                     OUString aToken;
     697                 :          0 :                     sal_Bool bHori = sal_False, bVert = sal_False;
     698                 :          0 :                     bOk = sal_True;
     699 [ #  # ][ #  # ]:          0 :                     while( bOk && aTokenEnum.getNextToken( aToken ) )
         [ #  # ][ #  # ]
     700                 :            :                     {
     701 [ #  # ][ #  # ]:          0 :                         if( bHori && bVert )
     702                 :            :                         {
     703                 :          0 :                             bOk = sal_False;
     704                 :            :                         }
     705         [ #  # ]:          0 :                         else if( -1 != aToken.indexOf( sal_Unicode('%') ) )
     706                 :            :                         {
     707                 :          0 :                             sal_Int32 nPrc = 50;
     708 [ #  # ][ #  # ]:          0 :                             if (::sax::Converter::convertPercent(nPrc, aToken))
     709                 :            :                             {
     710         [ #  # ]:          0 :                                 if( !bHori )
     711                 :            :                                 {
     712                 :            :                                     ePos = nPrc < 25 ? GPOS_LT :
     713 [ #  # ][ #  # ]:          0 :                                                (nPrc < 75 ? GPOS_MM : GPOS_RB);
     714                 :          0 :                                     bHori = sal_True;
     715                 :            :                                 }
     716                 :            :                                 else
     717                 :            :                                 {
     718                 :            :                                     eTmp = nPrc < 25 ? GPOS_LT:
     719 [ #  # ][ #  # ]:          0 :                                                (nPrc < 75 ? GPOS_LM : GPOS_LB);
     720         [ #  # ]:          0 :                                     lcl_frmitems_MergeXMLVertPos( ePos, eTmp );
     721                 :          0 :                                     bVert = sal_True;
     722                 :            :                                 }
     723                 :            :                             }
     724                 :            :                             else
     725                 :            :                             {
     726                 :            :                                 // wrong percentage
     727                 :          0 :                                 bOk = sal_False;
     728                 :            :                             }
     729                 :            :                         }
     730 [ #  # ][ #  # ]:          0 :                         else if( IsXMLToken( aToken, XML_CENTER ) )
     731                 :            :                         {
     732         [ #  # ]:          0 :                             if( bHori )
     733         [ #  # ]:          0 :                                 lcl_frmitems_MergeXMLVertPos( ePos, GPOS_MM );
     734         [ #  # ]:          0 :                             else if ( bVert )
     735         [ #  # ]:          0 :                                 lcl_frmitems_MergeXMLHoriPos( ePos, GPOS_MM );
     736                 :            :                             else
     737                 :          0 :                                 ePos = GPOS_MM;
     738                 :            :                         }
     739         [ #  # ]:          0 :                         else if( rUnitConverter.convertEnum( nTmp, aToken,
     740         [ #  # ]:          0 :                                                          psXML_BrushHoriPos ) )
     741                 :            :                         {
     742         [ #  # ]:          0 :                             if( bVert )
     743                 :            :                                 lcl_frmitems_MergeXMLHoriPos(
     744         [ #  # ]:          0 :                                     ePos, (SvxGraphicPosition)nTmp );
     745         [ #  # ]:          0 :                             else if( !bHori )
     746                 :          0 :                                 ePos = (SvxGraphicPosition)nTmp;
     747                 :            :                             else
     748                 :          0 :                                 bOk = sal_False;
     749                 :          0 :                             bHori = sal_True;
     750                 :            :                         }
     751         [ #  # ]:          0 :                         else if( rUnitConverter.convertEnum( nTmp, aToken,
     752         [ #  # ]:          0 :                                                          psXML_BrushVertPos ) )
     753                 :            :                         {
     754         [ #  # ]:          0 :                             if( bHori )
     755                 :            :                                 lcl_frmitems_MergeXMLVertPos(
     756         [ #  # ]:          0 :                                     ePos, (SvxGraphicPosition)nTmp );
     757         [ #  # ]:          0 :                             else if( !bVert )
     758                 :          0 :                                 ePos = (SvxGraphicPosition)nTmp;
     759                 :            :                             else
     760                 :          0 :                                 bOk = sal_False;
     761                 :          0 :                             bVert = sal_True;
     762                 :            :                         }
     763                 :            :                         else
     764                 :            :                         {
     765                 :          0 :                             bOk = sal_False;
     766                 :            :                         }
     767                 :            :                     }
     768                 :            : 
     769                 :          0 :                     bOk &= GPOS_NONE != ePos;
     770         [ #  # ]:          0 :                     if( bOk )
     771         [ #  # ]:          0 :                         pBrush->SetGraphicPos( ePos );
     772                 :            :                 }
     773                 :          0 :                 break;
     774                 :            : 
     775                 :            :                 case MID_GRAPHIC_FILTER:
     776 [ #  # ][ #  # ]:          0 :                     pBrush->SetGraphicFilter( rValue );
                 [ #  # ]
     777                 :          0 :                     bOk = sal_True;
     778                 :          0 :                     break;
     779                 :            :                 }
     780                 :            :         }
     781                 :          0 :         break;
     782                 :            : 
     783                 :            :         case RES_PAGEDESC:
     784                 :            :         {
     785 [ #  # ][ #  # ]:          0 :             SwFmtPageDesc* pPageDesc = PTR_CAST(SwFmtPageDesc, &rItem);
     786                 :            :             OSL_ENSURE( pPageDesc != NULL, "Wrong Which-ID" );
     787                 :            : 
     788         [ #  # ]:          0 :             if( MID_PAGEDESC_PAGENUMOFFSET==nMemberId )
     789                 :            :             {
     790                 :            :                 sal_Int32 nVal;
     791                 :            :                 bOk = ::sax::Converter::convertNumber(
     792         [ #  # ]:          0 :                         nVal, rValue, 0, USHRT_MAX);
     793         [ #  # ]:          0 :                 if( bOk )
     794                 :          0 :                     pPageDesc->SetNumOffset( (sal_uInt16)nVal );
     795                 :            :             }
     796                 :            :         }
     797                 :          0 :         break;
     798                 :            : 
     799                 :            :         case RES_LAYOUT_SPLIT:
     800                 :            :         case RES_ROW_SPLIT:
     801                 :            :         {
     802 [ #  # ][ #  # ]:          0 :             SfxBoolItem* pSplit = PTR_CAST(SfxBoolItem, &rItem);
     803                 :            :             OSL_ENSURE( pSplit != NULL, "Wrong Which-ID" );
     804                 :            : 
     805   [ #  #  #  # ]:          0 :             if( IsXMLToken( rValue, XML_AUTO ) ||
                 [ #  # ]
     806                 :          0 :                  IsXMLToken( rValue, XML_TRUE ) )
     807                 :            :             {
     808                 :          0 :                 pSplit->SetValue( sal_True );
     809                 :          0 :                 bOk = sal_True;
     810                 :            :             }
     811   [ #  #  #  # ]:          0 :             else if( IsXMLToken( rValue, XML_ALWAYS ) ||
                 [ #  # ]
     812                 :          0 :                      IsXMLToken( rValue, XML_FALSE ) )
     813                 :            :             {
     814                 :          0 :                 pSplit->SetValue( sal_False );
     815                 :          0 :                 bOk = sal_True;
     816                 :            :             }
     817                 :            :         }
     818                 :          0 :         break;
     819                 :            : 
     820                 :            :         case RES_HORI_ORIENT:
     821                 :            :         {
     822 [ +  - ][ +  - ]:          3 :             SwFmtHoriOrient* pHoriOrient = PTR_CAST(SwFmtHoriOrient, &rItem);
         [ +  - ][ +  - ]
     823                 :            :             OSL_ENSURE( pHoriOrient != NULL, "Wrong Which-ID" );
     824                 :            : 
     825                 :            :             sal_uInt16 nValue;
     826                 :            :             bOk = rUnitConverter.convertEnum( nValue, rValue,
     827         [ +  - ]:          3 :                                               aXMLTableAlignMap );
     828         [ +  - ]:          3 :             if( bOk )
     829                 :          3 :                 pHoriOrient->SetHoriOrient( nValue );
     830                 :            :         }
     831                 :          3 :         break;
     832                 :            : 
     833                 :            :         case RES_VERT_ORIENT:
     834                 :            :         {
     835 [ #  # ][ #  # ]:          0 :             SwFmtVertOrient* pVertOrient = PTR_CAST(SwFmtVertOrient, &rItem);
         [ #  # ][ #  # ]
     836                 :            :             OSL_ENSURE( pVertOrient != NULL, "Wrong Which-ID" );
     837                 :            : 
     838                 :            :             sal_uInt16 nValue;
     839                 :            :             bOk = rUnitConverter.convertEnum( nValue, rValue,
     840         [ #  # ]:          0 :                                               aXMLTableVAlignMap );
     841         [ #  # ]:          0 :             if( bOk )
     842                 :          0 :                 pVertOrient->SetVertOrient( nValue );
     843                 :            :             //#i8855# text::VertOrientation::NONE is stored as empty string and should be applied here
     844         [ #  # ]:          0 :             else if(rValue.isEmpty())
     845                 :            :             {
     846                 :          0 :                 pVertOrient->SetVertOrient( text::VertOrientation::NONE );
     847                 :          0 :                 bOk = sal_True;
     848                 :            :             }
     849                 :            :         }
     850                 :          0 :         break;
     851                 :            : 
     852                 :            :         case RES_FRM_SIZE:
     853                 :            :         {
     854 [ +  - ][ +  - ]:          9 :             SwFmtFrmSize* pFrmSize = PTR_CAST(SwFmtFrmSize, &rItem);
         [ +  - ][ +  - ]
     855                 :            :             OSL_ENSURE( pFrmSize != NULL, "Wrong Which-ID" );
     856                 :            : 
     857                 :          9 :             sal_Bool bSetHeight = sal_False;
     858                 :          9 :             sal_Bool bSetWidth = sal_False;
     859                 :          9 :             sal_Bool bSetSizeType = sal_False;
     860                 :          9 :             SwFrmSize eSizeType = ATT_VAR_SIZE;
     861                 :          9 :             sal_Int32 nMin = MINLAY;
     862                 :            : 
     863   [ -  +  -  -  :          9 :             switch( nMemberId )
                +  +  - ]
     864                 :            :                 {
     865                 :            :                 case MID_FRMSIZE_REL_WIDTH:
     866                 :            :                 {
     867                 :            :                     sal_Int32 nValue;
     868         [ #  # ]:          0 :                     bOk = ::sax::Converter::convertPercent( nValue, rValue );
     869         [ #  # ]:          0 :                     if( bOk )
     870                 :            :                     {
     871         [ #  # ]:          0 :                         if( nValue < 1 )
     872                 :          0 :                             nValue = 1;
     873         [ #  # ]:          0 :                         else if( nValue > 100 )
     874                 :          0 :                             nValue = 100;
     875                 :            : 
     876                 :          0 :                         pFrmSize->SetWidthPercent( (sal_Int8)nValue );
     877                 :            :                     }
     878                 :            :                 }
     879                 :          0 :                 break;
     880                 :            :                 case MID_FRMSIZE_WIDTH:
     881                 :          3 :                     bSetWidth = sal_True;
     882                 :          3 :                     break;
     883                 :            :                 case MID_FRMSIZE_MIN_HEIGHT:
     884                 :          0 :                     eSizeType = ATT_MIN_SIZE;
     885                 :          0 :                     bSetHeight = sal_True;
     886                 :          0 :                     nMin = 1;
     887                 :          0 :                     bSetSizeType = sal_True;
     888                 :          0 :                     break;
     889                 :            :                 case MID_FRMSIZE_FIX_HEIGHT:
     890                 :          0 :                     eSizeType = ATT_FIX_SIZE;
     891                 :          0 :                     bSetHeight = sal_True;
     892                 :          0 :                     nMin = 1;
     893                 :          0 :                     bSetSizeType = sal_True;
     894                 :          0 :                     break;
     895                 :            :                 case MID_FRMSIZE_COL_WIDTH:
     896                 :          3 :                     eSizeType = ATT_FIX_SIZE;
     897                 :          3 :                     bSetWidth = sal_True;
     898                 :          3 :                     bSetSizeType = sal_True;
     899                 :          3 :                     break;
     900                 :            :                 case MID_FRMSIZE_REL_COL_WIDTH:
     901                 :            :                 {
     902                 :          3 :                     sal_Int32 nPos = rValue.indexOf( (sal_Unicode)'*' );
     903         [ +  - ]:          3 :                     if( -1L != nPos )
     904                 :            :                     {
     905                 :          3 :                         sal_Int32 nValue = rValue.toInt32();
     906         [ -  + ]:          3 :                         if( nValue < MINLAY )
     907                 :          0 :                             nValue = MINLAY;
     908         [ -  + ]:          3 :                         else if( nValue > USHRT_MAX )
     909                 :          0 :                             nValue = USHRT_MAX;
     910                 :            : 
     911                 :          3 :                         pFrmSize->SetWidth( (sal_uInt16)nValue );
     912                 :          3 :                         pFrmSize->SetHeightSizeType( ATT_VAR_SIZE );
     913                 :          3 :                         bOk = sal_True;
     914                 :            :                     }
     915                 :            :                 }
     916                 :          3 :                 break;
     917                 :            :                 }
     918                 :            : 
     919                 :            :             sal_Int32 nValue;
     920 [ +  - ][ +  + ]:          9 :             if( bSetHeight || bSetWidth )
     921                 :            :             {
     922                 :            :                 bOk = rUnitConverter.convertMeasureToCore(nValue, rValue, nMin,
     923         [ +  - ]:          6 :                                                      USHRT_MAX );
     924         [ +  - ]:          6 :                 if( bOk )
     925                 :            :                 {
     926         [ +  - ]:          6 :                     if( bSetWidth )
     927                 :          6 :                         pFrmSize->SetWidth( (sal_uInt16)nValue );
     928         [ -  + ]:          6 :                     if( bSetHeight )
     929                 :          0 :                         pFrmSize->SetHeight( (sal_uInt16)nValue );
     930         [ +  + ]:          6 :                     if( bSetSizeType )
     931                 :          3 :                         pFrmSize->SetHeightSizeType( eSizeType );
     932                 :            :                 }
     933                 :            :             }
     934                 :            :         }
     935                 :          9 :         break;
     936                 :            : 
     937                 :            :         case RES_FRAMEDIR:
     938                 :            :         {
     939                 :            :             const XMLPropertyHandler* pWritingModeHandler =
     940                 :            :                 XMLPropertyHandlerFactory::CreatePropertyHandler(
     941                 :          0 :                     XML_TYPE_TEXT_WRITING_MODE_WITH_DEFAULT );
     942         [ #  # ]:          0 :             if( pWritingModeHandler != NULL )
     943                 :            :             {
     944                 :          0 :                 Any aAny;
     945                 :            :                 bOk = pWritingModeHandler->importXML( rValue, aAny,
     946         [ #  # ]:          0 :                                                       rUnitConverter );
     947         [ #  # ]:          0 :                 if( bOk )
     948         [ #  # ]:          0 :                     bOk = rItem.PutValue( aAny );
     949                 :            : 
     950 [ #  # ][ #  # ]:          0 :                 delete pWritingModeHandler;
     951                 :            :             }
     952                 :            :         }
     953                 :          0 :         break;
     954                 :            : 
     955                 :            :         case RES_COLLAPSING_BORDERS:
     956                 :            :         {
     957 [ #  # ][ #  # ]:          0 :             SfxBoolItem* pBorders = PTR_CAST(SfxBoolItem, &rItem);
     958                 :            :             OSL_ENSURE( pBorders != NULL, "Wrong Which-ID" );
     959                 :            : 
     960         [ #  # ]:          0 :             if( IsXMLToken( rValue, XML_COLLAPSING ) )
     961                 :            :             {
     962                 :          0 :                 pBorders->SetValue( sal_True );
     963                 :          0 :                 bOk = sal_True;
     964                 :            :             }
     965         [ #  # ]:          0 :             else if( IsXMLToken( rValue, XML_SEPARATING ) )
     966                 :            :             {
     967                 :          0 :                 pBorders->SetValue( sal_False );
     968                 :          0 :                 bOk = sal_True;
     969                 :            :             }
     970                 :            :             else
     971                 :          0 :                 bOk = sal_False;
     972                 :            :         }
     973                 :          0 :         break;
     974                 :            : 
     975                 :            :         default:
     976                 :            :             OSL_FAIL("Item not implemented!");
     977                 :          0 :         break;
     978                 :            :    }
     979                 :            : 
     980                 :        150 :     return bOk;
     981                 :            : }
     982                 :            : 
     983                 :            : 
     984                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10