LCOV - code coverage report
Current view: top level - xmloff/source/style - xmlbahdl.cxx (source / functions) Hit Total Coverage
Test: commit c8344322a7af75b84dd3ca8f78b05543a976dfd5 Lines: 349 406 86.0 %
Date: 2015-06-13 12:38:46 Functions: 87 94 92.6 %
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 <xmlbahdl.hxx>
      21             : 
      22             : #include <tools/debug.hxx>
      23             : #include <sax/tools/converter.hxx>
      24             : #include <xmloff/xmluconv.hxx>
      25             : #include <com/sun/star/uno/Any.hxx>
      26             : #include <xmloff/xmltoken.hxx>
      27             : 
      28             : using namespace ::com::sun::star::uno;
      29             : using namespace ::xmloff::token;
      30             : 
      31       40181 : static void lcl_xmloff_setAny( Any& rValue, sal_Int32 nValue, sal_Int8 nBytes )
      32             : {
      33       40181 :     switch( nBytes )
      34             :     {
      35             :     case 1:
      36         230 :         if( nValue < SCHAR_MIN )
      37           0 :             nValue = SCHAR_MIN;
      38         230 :         else if( nValue > SCHAR_MAX )
      39           0 :             nValue = SCHAR_MAX;
      40         230 :         rValue <<= (sal_Int8)nValue;
      41         230 :         break;
      42             :     case 2:
      43       10479 :         if( nValue < SHRT_MIN )
      44           0 :             nValue = SHRT_MIN;
      45       10479 :         else if( nValue > SHRT_MAX )
      46           0 :             nValue = SHRT_MAX;
      47       10479 :         rValue <<= (sal_Int16)nValue;
      48       10479 :         break;
      49             :     case 4:
      50       29472 :         rValue <<= nValue;
      51       29472 :         break;
      52             :     }
      53       40181 : }
      54             : 
      55        7305 : static bool lcl_xmloff_getAny( const Any& rValue, sal_Int32& nValue,
      56             :                             sal_Int8 nBytes )
      57             : {
      58        7305 :     bool bRet = false;
      59             : 
      60        7305 :     switch( nBytes )
      61             :     {
      62             :     case 1:
      63             :         {
      64          69 :             sal_Int8 nValue8 = 0;
      65          69 :             bRet = rValue >>= nValue8;
      66          69 :             nValue = nValue8;
      67             :         }
      68          69 :         break;
      69             :     case 2:
      70             :         {
      71         452 :             sal_Int16 nValue16 = 0;
      72         452 :             bRet = rValue >>= nValue16;
      73         452 :             nValue = nValue16;
      74             :         }
      75         452 :         break;
      76             :     case 4:
      77        6784 :         bRet = rValue >>= nValue;
      78        6784 :         break;
      79             :     }
      80             : 
      81        7305 :     return bRet;
      82             : }
      83             : 
      84             : // class XMLNumberPropHdl
      85             : 
      86       78166 : XMLNumberPropHdl::~XMLNumberPropHdl()
      87             : {
      88             :     // nothing to do
      89       78166 : }
      90             : 
      91        1291 : bool XMLNumberPropHdl::importXML( const OUString& rStrImpValue, Any& rValue, const SvXMLUnitConverter& ) const
      92             : {
      93        1291 :     sal_Int32 nValue = 0;
      94        1291 :     bool bRet = ::sax::Converter::convertNumber( nValue, rStrImpValue );
      95        1291 :     lcl_xmloff_setAny( rValue, nValue, nBytes );
      96             : 
      97        1291 :     return bRet;
      98             : }
      99             : 
     100        1526 : bool XMLNumberPropHdl::exportXML( OUString& rStrExpValue, const Any& rValue, const SvXMLUnitConverter& ) const
     101             : {
     102        1526 :     bool bRet = false;
     103             :     sal_Int32 nValue;
     104        1526 :       OUStringBuffer aOut;
     105             : 
     106        1526 :     if( lcl_xmloff_getAny( rValue, nValue, nBytes ) )
     107             :     {
     108         535 :         ::sax::Converter::convertNumber( aOut, nValue );
     109         535 :         rStrExpValue = aOut.makeStringAndClear();
     110             : 
     111         535 :         bRet = true;
     112             :     }
     113             : 
     114        1526 :     return bRet;
     115             : }
     116             : 
     117             : // class XMLNumberNonePropHdl
     118             : 
     119        7570 : XMLNumberNonePropHdl::XMLNumberNonePropHdl( sal_Int8 nB ) :
     120        7570 :     sZeroStr( GetXMLToken(XML_NO_LIMIT) ),
     121       15140 :     nBytes( nB )
     122             : {
     123        7570 : }
     124             : 
     125         678 : XMLNumberNonePropHdl::XMLNumberNonePropHdl( enum XMLTokenEnum eZeroString, sal_Int8 nB ) :
     126         678 :     sZeroStr( GetXMLToken( eZeroString ) ),
     127        1356 :     nBytes( nB )
     128             : {
     129         678 : }
     130             : 
     131       16486 : XMLNumberNonePropHdl::~XMLNumberNonePropHdl()
     132             : {
     133             :     // nothing to do
     134       16486 : }
     135             : 
     136         327 : bool XMLNumberNonePropHdl::importXML( const OUString& rStrImpValue, Any& rValue, const SvXMLUnitConverter& ) const
     137             : {
     138         327 :     bool bRet = false;
     139             : 
     140         327 :     sal_Int32 nValue = 0;
     141         327 :     if( rStrImpValue == sZeroStr )
     142             :     {
     143         321 :         bRet = true;
     144             :     }
     145             :     else
     146             :     {
     147           6 :         bRet = ::sax::Converter::convertNumber( nValue, rStrImpValue );
     148             :     }
     149         327 :     lcl_xmloff_setAny( rValue, nValue, nBytes );
     150             : 
     151         327 :     return bRet;
     152             : }
     153             : 
     154          85 : bool XMLNumberNonePropHdl::exportXML( OUString& rStrExpValue, const Any& rValue, const SvXMLUnitConverter& ) const
     155             : {
     156          85 :     bool bRet = false;
     157             :     sal_Int32 nValue;
     158             : 
     159          85 :     if( lcl_xmloff_getAny( rValue, nValue, nBytes ) )
     160             :     {
     161          85 :           OUStringBuffer aOut;
     162             : 
     163          85 :         if( nValue == 0 )
     164             :         {
     165          85 :             aOut.append( sZeroStr );
     166             :         }
     167             :         else
     168             :         {
     169           0 :             ::sax::Converter::convertNumber( aOut, nValue );
     170             :         }
     171             : 
     172          85 :         rStrExpValue = aOut.makeStringAndClear();
     173             : 
     174          85 :         bRet = true;
     175             :     }
     176             : 
     177          85 :     return bRet;
     178             : }
     179             : 
     180             : // class XMLMeasurePropHdl
     181             : 
     182       52004 : XMLMeasurePropHdl::~XMLMeasurePropHdl()
     183             : {
     184             :     // nothing to do
     185       52004 : }
     186             : 
     187       26853 : bool XMLMeasurePropHdl::importXML( const OUString& rStrImpValue, Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const
     188             : {
     189       26853 :     sal_Int32 nValue = 0;
     190       26853 :     bool bRet = rUnitConverter.convertMeasureToCore( nValue, rStrImpValue );
     191       26853 :     lcl_xmloff_setAny( rValue, nValue, nBytes );
     192       26853 :     return bRet;
     193             : }
     194             : 
     195        5309 : bool XMLMeasurePropHdl::exportXML( OUString& rStrExpValue, const Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const
     196             : {
     197        5309 :     bool bRet = false;
     198             :     sal_Int32 nValue;
     199        5309 :       OUStringBuffer aOut;
     200             : 
     201        5309 :     if( lcl_xmloff_getAny( rValue, nValue, nBytes ) )
     202             :     {
     203        5305 :         rUnitConverter.convertMeasureToXML( aOut, nValue );
     204        5305 :         rStrExpValue = aOut.makeStringAndClear();
     205             : 
     206        5305 :         bRet = true;
     207             :     }
     208             : 
     209        5309 :     return bRet;
     210             : }
     211             : 
     212             : // class XMLBoolFalsePropHdl
     213             : 
     214           4 : XMLBoolFalsePropHdl::~XMLBoolFalsePropHdl()
     215             : {
     216             :     // nothing to do
     217           4 : }
     218             : 
     219           0 : bool XMLBoolFalsePropHdl::importXML( const OUString&, Any&, const SvXMLUnitConverter& ) const
     220             : {
     221           0 :     return false;
     222             : }
     223             : 
     224           1 : bool XMLBoolFalsePropHdl::exportXML( OUString& rStrExpValue, const Any& /*rValue*/, const SvXMLUnitConverter& rCnv) const
     225             : {
     226           1 :     return XMLBoolPropHdl::exportXML( rStrExpValue, makeAny( sal_False ), rCnv );
     227             : }
     228             : 
     229             : // class XMLBoolPropHdl
     230             : 
     231       51370 : XMLBoolPropHdl::~XMLBoolPropHdl()
     232             : {
     233             :     // nothing to do
     234       51370 : }
     235             : 
     236        9731 : bool XMLBoolPropHdl::importXML( const OUString& rStrImpValue, Any& rValue, const SvXMLUnitConverter& ) const
     237             : {
     238        9731 :     bool bValue(false);
     239        9731 :     bool const bRet = ::sax::Converter::convertBool( bValue, rStrImpValue );
     240        9731 :     rValue <<= bValue;
     241             : 
     242        9731 :     return bRet;
     243             : }
     244             : 
     245        7574 : bool XMLBoolPropHdl::exportXML( OUString& rStrExpValue, const Any& rValue, const SvXMLUnitConverter& ) const
     246             : {
     247        7574 :     bool bRet = false;
     248             :     bool bValue;
     249             : 
     250        7574 :     if (rValue >>= bValue)
     251             :     {
     252        7292 :         OUStringBuffer aOut;
     253        7292 :         ::sax::Converter::convertBool( aOut, bValue );
     254        7292 :         rStrExpValue = aOut.makeStringAndClear();
     255             : 
     256        7292 :         bRet = true;
     257             :     }
     258             : 
     259        7574 :     return bRet;
     260             : }
     261             : 
     262             : // class XMLNBoolPropHdl
     263             : 
     264         248 : XMLNBoolPropHdl::~XMLNBoolPropHdl()
     265             : {
     266             :     // nothing to do
     267         248 : }
     268             : 
     269           0 : bool XMLNBoolPropHdl::importXML( const OUString& rStrImpValue, Any& rValue, const SvXMLUnitConverter& ) const
     270             : {
     271           0 :     bool bValue(false);
     272           0 :     bool const bRet = ::sax::Converter::convertBool( bValue, rStrImpValue );
     273           0 :     rValue <<= !bValue;
     274             : 
     275           0 :     return bRet;
     276             : }
     277             : 
     278           0 : bool XMLNBoolPropHdl::exportXML( OUString& rStrExpValue, const Any& rValue, const SvXMLUnitConverter& ) const
     279             : {
     280           0 :     bool bRet = false;
     281             :     bool bValue;
     282             : 
     283           0 :     if (rValue >>= bValue)
     284             :     {
     285           0 :         OUStringBuffer aOut;
     286           0 :         ::sax::Converter::convertBool( aOut, !bValue );
     287           0 :         rStrExpValue = aOut.makeStringAndClear();
     288             : 
     289           0 :         bRet = true;
     290             :     }
     291             : 
     292           0 :     return bRet;
     293             : }
     294             : 
     295             : // class XMLPercentPropHdl
     296             : 
     297       81644 : XMLPercentPropHdl::~XMLPercentPropHdl()
     298             : {
     299             :     // nothing to do
     300       81644 : }
     301             : 
     302       10755 : bool XMLPercentPropHdl::importXML( const OUString& rStrImpValue, Any& rValue, const SvXMLUnitConverter& ) const
     303             : {
     304       10755 :     sal_Int32 nValue = 0;
     305       10755 :     bool const bRet = ::sax::Converter::convertPercent( nValue, rStrImpValue );
     306       10755 :     lcl_xmloff_setAny( rValue, nValue, nBytes );
     307             : 
     308       10755 :     return bRet;
     309             : }
     310             : 
     311         119 : bool XMLPercentPropHdl::exportXML( OUString& rStrExpValue, const Any& rValue, const SvXMLUnitConverter& ) const
     312             : {
     313         119 :     bool bRet = false;
     314             :     sal_Int32 nValue;
     315         119 :       OUStringBuffer aOut;
     316             : 
     317         119 :     if( lcl_xmloff_getAny( rValue, nValue, nBytes ) )
     318             :     {
     319         115 :         ::sax::Converter::convertPercent( aOut, nValue );
     320         115 :         rStrExpValue = aOut.makeStringAndClear();
     321             : 
     322         115 :         bRet = true;
     323             :     }
     324             : 
     325         119 :     return bRet;
     326             : }
     327             : 
     328             : // class XMLDoublePercentPropHdl
     329             : 
     330         113 : bool XMLDoublePercentPropHdl::importXML( const OUString& rStrImpValue, Any& rValue, const SvXMLUnitConverter& ) const
     331             : {
     332         113 :     bool bRet = false;
     333             : 
     334         113 :     double fValue = 1.0;
     335             : 
     336         113 :     if( rStrImpValue.indexOf( (sal_Unicode)'%' ) == -1 )
     337             :     {
     338           0 :         fValue = rStrImpValue.toDouble();
     339             :     }
     340             :     else
     341             :     {
     342         113 :         sal_Int32 nValue = 0;
     343         113 :         bRet = ::sax::Converter::convertPercent( nValue, rStrImpValue );
     344         113 :         fValue = ((double)nValue) / 100.0;
     345             :     }
     346         113 :     rValue <<= fValue;
     347             : 
     348         113 :     return bRet;
     349             : }
     350             : 
     351          16 : bool XMLDoublePercentPropHdl::exportXML( OUString& rStrExpValue, const Any& rValue, const SvXMLUnitConverter& ) const
     352             : {
     353          16 :     bool bRet = false;
     354          16 :     double fValue = 0;
     355             : 
     356          16 :     if( rValue >>= fValue )
     357             :     {
     358          16 :         fValue *= 100.0;
     359          16 :         if( fValue > 0 ) fValue += 0.5; else    fValue -= 0.5;
     360             : 
     361          16 :         sal_Int32 nValue = (sal_Int32)fValue;
     362             : 
     363          16 :         OUStringBuffer aOut;
     364          16 :         ::sax::Converter::convertPercent( aOut, nValue );
     365          16 :         rStrExpValue = aOut.makeStringAndClear();
     366             : 
     367          16 :         bRet = true;
     368             :     }
     369             : 
     370          16 :     return bRet;
     371             : }
     372             : 
     373             : // class XMLNegPercentPropHdl
     374             : 
     375       39496 : XMLNegPercentPropHdl::~XMLNegPercentPropHdl()
     376             : {
     377             :     // nothing to do
     378       39496 : }
     379             : 
     380         354 : bool XMLNegPercentPropHdl::importXML( const OUString& rStrImpValue, Any& rValue, const SvXMLUnitConverter& ) const
     381             : {
     382         354 :     sal_Int32 nValue = 0;
     383         354 :     bool const bRet = ::sax::Converter::convertPercent( nValue, rStrImpValue );
     384         354 :     lcl_xmloff_setAny( rValue, 100-nValue, nBytes );
     385             : 
     386         354 :     return bRet;
     387             : }
     388             : 
     389          67 : bool XMLNegPercentPropHdl::exportXML( OUString& rStrExpValue, const Any& rValue, const SvXMLUnitConverter& ) const
     390             : {
     391          67 :     bool bRet = false;
     392             :     sal_Int32 nValue;
     393          67 :       OUStringBuffer aOut;
     394             : 
     395          67 :     if( lcl_xmloff_getAny( rValue, nValue, nBytes ) )
     396             :     {
     397          65 :         ::sax::Converter::convertPercent( aOut, 100-nValue );
     398          65 :         rStrExpValue = aOut.makeStringAndClear();
     399             : 
     400          65 :         bRet = true;
     401             :     }
     402             : 
     403          67 :     return bRet;
     404             : }
     405             : 
     406             : // class XMLMeasurePxPropHdl
     407       16192 : XMLMeasurePxPropHdl::~XMLMeasurePxPropHdl()
     408             : {
     409             :     // nothing to do
     410       16192 : }
     411             : 
     412           0 : bool XMLMeasurePxPropHdl::importXML( const OUString& rStrImpValue, Any& rValue, const SvXMLUnitConverter& ) const
     413             : {
     414           0 :     sal_Int32 nValue = 0;
     415           0 :     bool bRet = ::sax::Converter::convertMeasurePx( nValue, rStrImpValue );
     416           0 :     lcl_xmloff_setAny( rValue, nValue, nBytes );
     417           0 :     return bRet;
     418             : }
     419             : 
     420           0 : bool XMLMeasurePxPropHdl::exportXML( OUString& rStrExpValue, const Any& rValue, const SvXMLUnitConverter& ) const
     421             : {
     422           0 :     bool bRet = false;
     423             :     sal_Int32 nValue;
     424           0 :       OUStringBuffer aOut;
     425             : 
     426           0 :     if( lcl_xmloff_getAny( rValue, nValue, nBytes ) )
     427             :     {
     428           0 :         ::sax::Converter::convertMeasurePx( aOut, nValue );
     429           0 :         rStrExpValue = aOut.makeStringAndClear();
     430             : 
     431           0 :         bRet = true;
     432             :     }
     433             : 
     434           0 :     return bRet;
     435             : }
     436             : 
     437             : // class XMLColorPropHdl
     438             : 
     439       40932 : XMLColorPropHdl::~XMLColorPropHdl()
     440             : {
     441             :     // Nothing to do
     442       40932 : }
     443             : 
     444        3075 : bool XMLColorPropHdl::importXML( const OUString& rStrImpValue, Any& rValue, const SvXMLUnitConverter& ) const
     445             : {
     446        3075 :     bool bRet = false;
     447             : 
     448        3075 :     const OUString astrHSL( "hsl"  );
     449        3075 :     if( rStrImpValue.matchIgnoreAsciiCase( astrHSL ) )
     450             :     {
     451           0 :         sal_Int32 nOpen = rStrImpValue.indexOf( '(' );
     452           0 :         sal_Int32 nClose = rStrImpValue.lastIndexOf( ')' );
     453             : 
     454           0 :         if( (nOpen != -1) && (nClose > nOpen) )
     455             :         {
     456           0 :             const OUString aTmp( rStrImpValue.copy( nOpen+1, nClose - nOpen-1) );
     457             : 
     458           0 :             sal_Int32 nIndex = 0;
     459             : 
     460           0 :             Sequence< double > aHSL(3);
     461           0 :             aHSL[0] = aTmp.getToken( 0, ',', nIndex ).toDouble();
     462           0 :             aHSL[1] = aTmp.getToken( 0, ',', nIndex ).toDouble() / 100.0;
     463           0 :             aHSL[2] = aTmp.getToken( 0, ',', nIndex ).toDouble() / 100.0;
     464           0 :             rValue <<= aHSL;
     465           0 :             bRet = true;
     466             :         }
     467             :     }
     468             :     else
     469             :     {
     470        3075 :         sal_Int32 nColor(0);
     471        3075 :         bRet = ::sax::Converter::convertColor( nColor, rStrImpValue );
     472        3075 :         rValue <<= nColor;
     473             :     }
     474             : 
     475        3075 :     return bRet;
     476             : }
     477             : 
     478        3266 : bool XMLColorPropHdl::exportXML( OUString& rStrExpValue, const Any& rValue, const SvXMLUnitConverter& ) const
     479             : {
     480        3266 :     bool bRet = false;
     481        3266 :     sal_Int32 nColor = 0;
     482             : 
     483        3266 :     OUStringBuffer aOut;
     484        3266 :     if( rValue >>= nColor )
     485             :     {
     486        3262 :         ::sax::Converter::convertColor( aOut, nColor );
     487        3262 :         rStrExpValue = aOut.makeStringAndClear();
     488             : 
     489        3262 :         bRet = true;
     490             :     }
     491             :     else
     492             :     {
     493           4 :         Sequence< double > aHSL;
     494           4 :         if( (rValue >>= aHSL) && (aHSL.getLength() == 3) )
     495             :         {
     496           0 :             aOut.append( "hsl(" + OUString::number(aHSL[0]) + "," + OUString::number(aHSL[1] * 100.0) + "%," + OUString::number(aHSL[2] * 100.0) + "%)" );
     497           0 :             rStrExpValue = aOut.makeStringAndClear();
     498             : 
     499           0 :             bRet = true;
     500           4 :         }
     501             :     }
     502             : 
     503        3266 :     return bRet;
     504             : }
     505             : 
     506             : // class XMLHexPropHdl
     507             : 
     508       20932 : XMLHexPropHdl::~XMLHexPropHdl()
     509             : {
     510             :     // Nothing to do
     511       20932 : }
     512             : 
     513        1683 : bool XMLHexPropHdl::importXML( const OUString& rStrImpValue, Any& rValue, const SvXMLUnitConverter& ) const
     514             : {
     515        1683 :     bool bRet = false;
     516             :     sal_uInt32 nRsid;
     517             : 
     518        1683 :     bRet = SvXMLUnitConverter::convertHex( nRsid, rStrImpValue );
     519        1683 :     rValue <<= nRsid;
     520             : 
     521        1683 :     return bRet;
     522             : }
     523             : 
     524         142 : bool XMLHexPropHdl::exportXML( OUString& rStrExpValue, const Any& rValue, const SvXMLUnitConverter& ) const
     525             : {
     526         142 :     bool bRet = false;
     527         142 :     sal_uInt32 nRsid = 0;
     528             : 
     529         142 :     OUStringBuffer aOut;
     530         142 :     if( rValue >>= nRsid )
     531             :     {
     532         142 :         SvXMLUnitConverter::convertHex( aOut, nRsid );
     533         142 :         rStrExpValue = aOut.makeStringAndClear();
     534             : 
     535         142 :         bRet = true;
     536             :     }
     537             :     else
     538             :     {
     539           0 :         bRet = false;
     540             :     }
     541             : 
     542         142 :     return bRet;
     543             : }
     544             : 
     545             : // class XMLStringPropHdl
     546             : 
     547       64577 : XMLStringPropHdl::~XMLStringPropHdl()
     548             : {
     549             :     // Nothing to do
     550       64577 : }
     551             : 
     552         761 : bool XMLStringPropHdl::importXML( const OUString& rStrImpValue, Any& rValue, const SvXMLUnitConverter& ) const
     553             : {
     554         761 :     rValue <<= rStrImpValue;
     555         761 :     return true;
     556             : }
     557             : 
     558        1870 : bool XMLStringPropHdl::exportXML( OUString& rStrExpValue, const Any& rValue, const SvXMLUnitConverter& ) const
     559             : {
     560        1870 :     bool bRet = false;
     561             : 
     562        1870 :     if( rValue >>= rStrExpValue )
     563        1869 :         bRet = true;
     564             : 
     565        1870 :     return bRet;
     566             : }
     567             : 
     568             : // class XMLStyleNamePropHdl
     569             : 
     570       32678 : XMLStyleNamePropHdl::~XMLStyleNamePropHdl()
     571             : {
     572             :     // Nothing to do
     573       32678 : }
     574             : 
     575          89 : bool XMLStyleNamePropHdl::exportXML( OUString& rStrExpValue, const Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const
     576             : {
     577          89 :     bool bRet = false;
     578             : 
     579          89 :     if( rValue >>= rStrExpValue )
     580             :     {
     581          78 :         rStrExpValue = rUnitConverter.encodeStyleName( rStrExpValue );
     582          78 :         bRet = true;
     583             :     }
     584             : 
     585          89 :     return bRet;
     586             : }
     587             : 
     588             : // class XMLDoublePropHdl
     589             : 
     590        1798 : XMLDoublePropHdl::~XMLDoublePropHdl()
     591             : {
     592             :     // Nothing to do
     593        1798 : }
     594             : 
     595         107 : bool XMLDoublePropHdl::importXML( const OUString& rStrImpValue, Any& rValue, const SvXMLUnitConverter& ) const
     596             : {
     597         107 :     double fDblValue(0.0);
     598         107 :     bool const bRet = ::sax::Converter::convertDouble(fDblValue, rStrImpValue);
     599         107 :     rValue <<= fDblValue;
     600         107 :     return bRet;
     601             : }
     602             : 
     603          33 : bool XMLDoublePropHdl::exportXML( OUString& rStrExpValue, const Any& rValue, const SvXMLUnitConverter& ) const
     604             : {
     605          33 :     bool bRet = false;
     606             : 
     607          33 :     double fValue = 0;
     608             : 
     609          33 :     if( rValue >>= fValue )
     610             :     {
     611          33 :         OUStringBuffer aOut;
     612          33 :         ::sax::Converter::convertDouble( aOut, fValue );
     613          33 :         rStrExpValue = aOut.makeStringAndClear();
     614          33 :         bRet = true;
     615             :     }
     616             : 
     617          33 :     return bRet;
     618             : }
     619             : 
     620             : // class XMLColorTransparentPropHdl
     621             : 
     622       40648 : XMLColorTransparentPropHdl::XMLColorTransparentPropHdl(
     623             :     enum XMLTokenEnum eTransparent ) :
     624             :     sTransparent( GetXMLToken(
     625       40648 :         eTransparent != XML_TOKEN_INVALID ? eTransparent : XML_TRANSPARENT ) )
     626             : {
     627             :     // Nothing to do
     628       40648 : }
     629             : 
     630       81266 : XMLColorTransparentPropHdl::~XMLColorTransparentPropHdl()
     631             : {
     632             :     // Nothing to do
     633       81266 : }
     634             : 
     635        1465 : bool XMLColorTransparentPropHdl::importXML( const OUString& rStrImpValue, Any& rValue, const SvXMLUnitConverter& ) const
     636             : {
     637        1465 :     bool bRet = false;
     638             : 
     639        1465 :     if( rStrImpValue != sTransparent )
     640             :     {
     641         713 :         sal_Int32 nColor(0);
     642         713 :         bRet = ::sax::Converter::convertColor( nColor, rStrImpValue );
     643         713 :         rValue <<= nColor;
     644             :     }
     645             : 
     646        1465 :     return bRet;
     647             : }
     648             : 
     649         252 : bool XMLColorTransparentPropHdl::exportXML( OUString& rStrExpValue, const Any& rValue, const SvXMLUnitConverter& ) const
     650             : {
     651         252 :     bool bRet = false;
     652         252 :     sal_Int32 nColor = 0;
     653             : 
     654         252 :     if( rStrExpValue == sTransparent )
     655           0 :         bRet = false;
     656         252 :     else if( rValue >>= nColor )
     657             :     {
     658         252 :         OUStringBuffer aOut;
     659         252 :         ::sax::Converter::convertColor( aOut, nColor );
     660         252 :         rStrExpValue = aOut.makeStringAndClear();
     661             : 
     662         252 :         bRet = true;
     663             :     }
     664             : 
     665         252 :     return bRet;
     666             : }
     667             : 
     668             : // class XMLIsTransparentPropHdl
     669             : 
     670       40524 : XMLIsTransparentPropHdl::XMLIsTransparentPropHdl(
     671             :     enum XMLTokenEnum eTransparent, bool bTransPropVal ) :
     672             :     sTransparent( GetXMLToken(
     673       40524 :         eTransparent != XML_TOKEN_INVALID ? eTransparent : XML_TRANSPARENT ) ),
     674       81048 :     bTransPropValue( bTransPropVal )
     675             : {
     676       40524 : }
     677             : 
     678       81018 : XMLIsTransparentPropHdl::~XMLIsTransparentPropHdl()
     679             : {
     680             :     // Nothing to do
     681       81018 : }
     682             : 
     683        1465 : bool XMLIsTransparentPropHdl::importXML( const OUString& rStrImpValue, Any& rValue, const SvXMLUnitConverter& ) const
     684             : {
     685        1465 :     bool bValue = ( (bool) (rStrImpValue == sTransparent) == bTransPropValue);
     686        1465 :     rValue <<= bValue;
     687             : 
     688        1465 :     return true;
     689             : }
     690             : 
     691         225 : bool XMLIsTransparentPropHdl::exportXML( OUString& rStrExpValue, const Any& rValue, const SvXMLUnitConverter& ) const
     692             : {
     693         225 :     bool bRet = false;
     694             : 
     695             :     // MIB: This looks a bit strange, because bTransPropValue == bValue should
     696             :     // do the same, but this only applies if 'true' is represented by the same
     697             :     // 8 bit value in bValue and bTransPropValue. Who will ensure this?
     698         225 :     bool bValue = *static_cast<sal_Bool const *>(rValue.getValue());
     699         225 :     bool bIsTrans = bTransPropValue ? bValue : !bValue;
     700             : 
     701         225 :     if( bIsTrans )
     702             :     {
     703         114 :         rStrExpValue = sTransparent;
     704         114 :         bRet = true;
     705             :     }
     706             : 
     707         225 :     return bRet;
     708             : }
     709             : 
     710             : // class XMLColorAutoPropHdl
     711             : 
     712       11252 : XMLColorAutoPropHdl::XMLColorAutoPropHdl()
     713             : {
     714             :     // Nothing to do
     715       11252 : }
     716             : 
     717       22494 : XMLColorAutoPropHdl::~XMLColorAutoPropHdl()
     718             : {
     719             :     // Nothing to do
     720       22494 : }
     721             : 
     722        1730 : bool XMLColorAutoPropHdl::importXML( const OUString& rStrImpValue, Any& rValue, const SvXMLUnitConverter& ) const
     723             : {
     724        1730 :     bool bRet = false;
     725             : 
     726             :     // This is a multi property: the value might be set to AUTO_COLOR
     727             :     // already by the XMLIsAutoColorPropHdl!
     728        1730 :     sal_Int32 nColor = 0;
     729        1730 :     if( !(rValue >>= nColor) || -1 != nColor )
     730             :     {
     731        1730 :         bRet = ::sax::Converter::convertColor( nColor, rStrImpValue );
     732        1730 :         if( bRet )
     733        1730 :             rValue <<= nColor;
     734             :     }
     735             : 
     736        1730 :     return bRet;
     737             : }
     738             : 
     739        1774 : bool XMLColorAutoPropHdl::exportXML( OUString& rStrExpValue, const Any& rValue, const SvXMLUnitConverter& ) const
     740             : {
     741        1774 :     bool bRet = false;
     742             : 
     743        1774 :     sal_Int32 nColor = 0;
     744        1774 :     if( (rValue >>= nColor) && -1 != nColor )
     745             :     {
     746        1526 :         OUStringBuffer aOut;
     747        1526 :         ::sax::Converter::convertColor( aOut, nColor );
     748        1526 :         rStrExpValue = aOut.makeStringAndClear();
     749             : 
     750        1526 :         bRet = true;
     751             :     }
     752             : 
     753        1774 :     return bRet;
     754             : }
     755             : 
     756             : // class XMLIsAutoColorPropHdl
     757             : 
     758       10471 : XMLIsAutoColorPropHdl::XMLIsAutoColorPropHdl()
     759             : {
     760       10471 : }
     761             : 
     762       20932 : XMLIsAutoColorPropHdl::~XMLIsAutoColorPropHdl()
     763             : {
     764             :     // Nothing to do
     765       20932 : }
     766             : 
     767        1024 : bool XMLIsAutoColorPropHdl::importXML( const OUString& rStrImpValue, Any& rValue, const SvXMLUnitConverter& ) const
     768             : {
     769             :     // An auto color overrides any other color set!
     770             :     bool bValue;
     771        1024 :     bool const bRet = ::sax::Converter::convertBool( bValue, rStrImpValue );
     772        1024 :     if( bRet && bValue )
     773        1024 :         rValue <<= (sal_Int32)-1;
     774             : 
     775        1024 :     return true;
     776             : }
     777             : 
     778        1745 : bool XMLIsAutoColorPropHdl::exportXML( OUString& rStrExpValue, const Any& rValue, const SvXMLUnitConverter& ) const
     779             : {
     780        1745 :     bool bRet = false;
     781        1745 :     sal_Int32 nColor = 0;
     782             : 
     783        1745 :     if( (rValue >>= nColor) && -1 == nColor )
     784             :     {
     785         219 :         OUStringBuffer aOut;
     786         219 :         ::sax::Converter::convertBool( aOut, true );
     787         219 :         rStrExpValue = aOut.makeStringAndClear();
     788             : 
     789         219 :         bRet = true;
     790             :     }
     791             : 
     792        1745 :     return bRet;
     793             : }
     794             : 
     795             : // class XMLCompareOnlyPropHdl
     796             : 
     797       39984 : XMLCompareOnlyPropHdl::~XMLCompareOnlyPropHdl()
     798             : {
     799             :     // Nothing to do
     800       39984 : }
     801             : 
     802           0 : bool XMLCompareOnlyPropHdl::importXML( const OUString&, Any&, const SvXMLUnitConverter& ) const
     803             : {
     804             :     DBG_ASSERT( false, "importXML called for compare-only-property" );
     805           0 :     return false;
     806             : }
     807             : 
     808           0 : bool XMLCompareOnlyPropHdl::exportXML( OUString&, const Any&, const SvXMLUnitConverter& ) const
     809             : {
     810             :     DBG_ASSERT( false, "exportXML called for compare-only-property" );
     811           0 :     return false;
     812             : }
     813             : 
     814             : // class XMLNumberWithoutZeroPropHdl
     815             : 
     816       15140 : XMLNumberWithoutZeroPropHdl::XMLNumberWithoutZeroPropHdl( sal_Int8 nB ) :
     817       15140 :     nBytes( nB )
     818             : {
     819       15140 : }
     820             : 
     821       22695 : XMLNumberWithoutZeroPropHdl::~XMLNumberWithoutZeroPropHdl()
     822             : {
     823       22695 : }
     824             : 
     825         597 : bool XMLNumberWithoutZeroPropHdl::importXML(
     826             :     const OUString& rStrImpValue,
     827             :     Any& rValue,
     828             :     const SvXMLUnitConverter& ) const
     829             : {
     830         597 :     sal_Int32 nValue = 0;
     831         597 :     bool const bRet = ::sax::Converter::convertNumber( nValue, rStrImpValue );
     832         597 :     if( bRet )
     833         597 :         lcl_xmloff_setAny( rValue, nValue, nBytes );
     834         597 :     return bRet;
     835             : }
     836             : 
     837         158 : bool XMLNumberWithoutZeroPropHdl::exportXML( OUString& rStrExpValue, const Any& rValue, const SvXMLUnitConverter& ) const
     838             : {
     839             : 
     840         158 :     sal_Int32 nValue = 0;
     841         158 :     bool bRet = lcl_xmloff_getAny( rValue, nValue, nBytes );
     842         158 :     bRet &= nValue != 0;
     843             : 
     844         158 :     if( bRet )
     845             :     {
     846         157 :           OUStringBuffer aBuffer;
     847         157 :         ::sax::Converter::convertNumber( aBuffer, nValue );
     848         157 :         rStrExpValue = aBuffer.makeStringAndClear();
     849             :     }
     850             : 
     851         158 :     return bRet;
     852             : }
     853             : 
     854             : // class XMLNumberWithAutoInsteadZeroPropHdl
     855             : 
     856       15130 : XMLNumberWithAutoInsteadZeroPropHdl::~XMLNumberWithAutoInsteadZeroPropHdl()
     857             : {
     858       15130 : }
     859             : 
     860         234 : bool XMLNumberWithAutoInsteadZeroPropHdl::importXML(
     861             :     const OUString& rStrImpValue,
     862             :     Any& rValue,
     863             :     const SvXMLUnitConverter& ) const
     864             : {
     865         234 :     sal_Int32 nValue = 0;
     866         234 :     bool bRet = ::sax::Converter::convertNumber( nValue, rStrImpValue );
     867         234 :     if( bRet )
     868           4 :         lcl_xmloff_setAny( rValue, nValue, 2 );
     869         230 :     else if( rStrImpValue == GetXMLToken( XML_AUTO ) )
     870             :     {
     871         230 :         rValue.clear(); // void
     872         230 :         bRet = true;
     873             :     }
     874         234 :     return bRet;
     875             : }
     876             : 
     877          41 : bool XMLNumberWithAutoInsteadZeroPropHdl::exportXML( OUString& rStrExpValue, const Any& rValue, const SvXMLUnitConverter& ) const
     878             : {
     879             : 
     880          41 :     sal_Int32 nValue = 0;
     881          41 :     bool bRet = lcl_xmloff_getAny( rValue, nValue, 2 );
     882          41 :     bRet &= nValue != 0;
     883             : 
     884             :     // FIXME: 0 is not a valid value - write "auto" instead
     885          41 :     if (!bRet)
     886          41 :         rStrExpValue = GetXMLToken( XML_AUTO );
     887             :     else
     888             :     {
     889           0 :         OUStringBuffer aBuffer;
     890           0 :         ::sax::Converter::convertNumber( aBuffer, nValue );
     891           0 :         rStrExpValue = aBuffer.makeStringAndClear();
     892             :     }
     893             : 
     894          41 :     return true;
     895             : }
     896             : 
     897             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.11