LCOV - code coverage report
Current view: top level - libreoffice/sd/source/filter/eppt - pptx-stylesheet.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 0 303 0.0 %
Date: 2012-12-27 Functions: 0 12 0.0 %
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 <epptbase.hxx>
      21             : #include <epptdef.hxx>
      22             : #include <text.hxx>
      23             : #include <tools/color.hxx>
      24             : #include <editeng/svxenum.hxx>
      25             : 
      26             : using namespace ::com::sun::star;
      27             : 
      28           0 : PPTExCharSheet::PPTExCharSheet( int nInstance )
      29             : {
      30           0 :     sal_uInt16 nFontHeight = 24;
      31             : 
      32           0 :     for ( int nDepth = 0; nDepth < 5; nDepth++ )
      33             :     {
      34           0 :         PPTExCharLevel& rLev = maCharLevel[ nDepth ];
      35           0 :         switch ( nInstance )
      36             :         {
      37             :             case EPP_TEXTTYPE_Title :
      38             :             case EPP_TEXTTYPE_CenterTitle :
      39           0 :                 nFontHeight = 44;
      40           0 :             break;
      41             :             case EPP_TEXTTYPE_Body :
      42             :             case EPP_TEXTTYPE_CenterBody :
      43             :             case EPP_TEXTTYPE_HalfBody :
      44             :             case EPP_TEXTTYPE_QuarterBody :
      45             :             {
      46           0 :                 switch ( nDepth )
      47             :                 {
      48           0 :                     case 0 : nFontHeight = 32; break;
      49           0 :                     case 1 : nFontHeight = 28; break;
      50           0 :                     case 2 : nFontHeight = 24; break;
      51           0 :                     default :nFontHeight = 20; break;
      52             :                 }
      53             :             }
      54           0 :             break;
      55             :             case EPP_TEXTTYPE_Notes :
      56           0 :                 nFontHeight = 12;
      57           0 :             break;
      58             :             case EPP_TEXTTYPE_notUsed :
      59             :             case EPP_TEXTTYPE_Other :
      60           0 :                 nFontHeight = 24;
      61           0 :             break;
      62             :         }
      63           0 :         rLev.mnFlags = 0;
      64           0 :         rLev.mnFont = 0;
      65           0 :         rLev.mnAsianOrComplexFont = 0xffff;
      66           0 :         rLev.mnFontHeight = nFontHeight;
      67           0 :         rLev.mnFontColor = 0;
      68           0 :         rLev.mnEscapement = 0;
      69             :     }
      70           0 : }
      71             : 
      72             : 
      73           0 : void PPTExCharSheet::SetStyleSheet( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet,
      74             :                                     FontCollection& rFontCollection, int nLevel )
      75             : {
      76           0 :     PortionObj  aPortionObj( rXPropSet, rFontCollection );
      77             : 
      78           0 :     PPTExCharLevel& rLev = maCharLevel[ nLevel ];
      79             : 
      80           0 :     if ( aPortionObj.meCharColor == ::com::sun::star::beans::PropertyState_DIRECT_VALUE )
      81           0 :         rLev.mnFontColor = aPortionObj.mnCharColor;
      82           0 :     if ( aPortionObj.meCharEscapement == ::com::sun::star::beans::PropertyState_DIRECT_VALUE )
      83           0 :         rLev.mnEscapement = aPortionObj.mnCharEscapement;
      84           0 :     if ( aPortionObj.meCharHeight == ::com::sun::star::beans::PropertyState_DIRECT_VALUE )
      85           0 :         rLev.mnFontHeight = aPortionObj.mnCharHeight;
      86           0 :     if ( aPortionObj.meFontName == ::com::sun::star::beans::PropertyState_DIRECT_VALUE )
      87           0 :         rLev.mnFont = aPortionObj.mnFont;
      88           0 :     if ( aPortionObj.meAsianOrComplexFont == ::com::sun::star::beans::PropertyState_DIRECT_VALUE )
      89           0 :         rLev.mnAsianOrComplexFont = aPortionObj.mnAsianOrComplexFont;
      90           0 :     rLev.mnFlags = aPortionObj.mnCharAttr;
      91           0 : }
      92             : 
      93           0 : void PPTExCharSheet::Write( SvStream& rSt, PptEscherEx*, sal_uInt16 nLev, sal_Bool, sal_Bool bSimpleText,
      94             :     const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rPagePropSet )
      95             : {
      96           0 :     const PPTExCharLevel& rLev = maCharLevel[ nLev ];
      97             : 
      98           0 :     sal_uInt32 nCharFlags = 0xefffff;
      99           0 :     if ( bSimpleText )
     100           0 :         nCharFlags = 0x7ffff;
     101             : 
     102           0 :     rSt << nCharFlags
     103           0 :         << rLev.mnFlags
     104           0 :         << rLev.mnFont;
     105             : 
     106           0 :     sal_uInt32 nFontColor = rLev.mnFontColor;
     107           0 :     if ( nFontColor == COL_AUTO )
     108             :     {
     109           0 :         sal_Bool bIsDark = sal_False;
     110           0 :         ::com::sun::star::uno::Any aAny;
     111           0 :         if ( PropValue::GetPropertyValue( aAny, rPagePropSet, rtl::OUString( "IsBackgroundDark" ), sal_True ) )
     112           0 :             aAny >>= bIsDark;
     113           0 :         nFontColor = bIsDark ? 0xffffff : 0x000000;
     114             :     }
     115           0 :     nFontColor &= 0xffffff;
     116           0 :     nFontColor |= 0xfe000000;
     117           0 :     if ( bSimpleText )
     118             :     {
     119           0 :         rSt << rLev.mnFontHeight
     120           0 :             << nFontColor;
     121             :     }
     122             :     else
     123             :     {
     124           0 :         rSt << rLev.mnAsianOrComplexFont
     125           0 :             << (sal_uInt16)0xffff       // unbekannt
     126           0 :             << (sal_uInt16)0xffff       // unbekannt
     127           0 :             << rLev.mnFontHeight
     128           0 :             << nFontColor
     129           0 :             << rLev.mnEscapement;
     130             :     }
     131           0 : }
     132             : 
     133           0 : PPTExParaSheet::PPTExParaSheet( int nInstance, sal_uInt16 nDefaultTab, PPTExBulletProvider& rProv ) :
     134             :     rBuProv     ( rProv ),
     135           0 :     mnInstance  ( nInstance )
     136             : {
     137           0 :     sal_Bool bHasBullet = sal_False;
     138             : 
     139           0 :     sal_uInt16 nUpperDist = 0;
     140           0 :     sal_uInt16 nBulletChar = 0x2022;
     141           0 :     sal_uInt16 nBulletOfs = 0;
     142           0 :     sal_uInt16 nTextOfs = 0;
     143             : 
     144           0 :     for ( int nDepth = 0; nDepth < 5; nDepth++ )
     145             :     {
     146           0 :         PPTExParaLevel& rLev = maParaLevel[ nDepth ];
     147           0 :         switch ( nInstance )
     148             :         {
     149             :             case EPP_TEXTTYPE_Title :
     150             :             case EPP_TEXTTYPE_CenterTitle :
     151           0 :             break;
     152             :             case EPP_TEXTTYPE_Body :
     153             :             case EPP_TEXTTYPE_CenterBody :
     154             :             case EPP_TEXTTYPE_HalfBody :
     155             :             case EPP_TEXTTYPE_QuarterBody :
     156             :             {
     157           0 :                 bHasBullet = sal_True;
     158           0 :                 nUpperDist = 0x14;
     159             :             }
     160           0 :             break;
     161             :             case EPP_TEXTTYPE_Notes :
     162           0 :                 nUpperDist = 0x1e;
     163           0 :             break;
     164             : 
     165             :         }
     166           0 :         switch ( nDepth )
     167             :         {
     168             :             case 0 :
     169             :             {
     170           0 :                 nBulletChar = 0x2022;
     171           0 :                 nBulletOfs = 0;
     172           0 :                 nTextOfs = ( bHasBullet ) ? 0xd8 : 0;
     173             :             }
     174           0 :             break;
     175             :             case 1 :
     176             :             {
     177           0 :                 nBulletChar = 0x2013;
     178           0 :                 nBulletOfs = 0x120;
     179           0 :                 nTextOfs = 0x1d4;
     180             :             }
     181           0 :             break;
     182             :             case 2 :
     183             :             {
     184           0 :                 nBulletChar = 0x2022;
     185           0 :                 nBulletOfs = 0x240;
     186           0 :                 nTextOfs = 0x2d0;
     187             :             }
     188           0 :             break;
     189             :             case 3 :
     190             :             {
     191           0 :                 nBulletChar = 0x2013;
     192           0 :                 nBulletOfs = 0x360;
     193           0 :                 nTextOfs = 0x3f0;
     194             :             }
     195           0 :             break;
     196             :             case 4 :
     197             :             {
     198           0 :                 nBulletChar = 0xbb;
     199           0 :                 nBulletOfs = 0x480;
     200           0 :                 nTextOfs = 0x510;
     201             :             }
     202           0 :             break;
     203             :         }
     204           0 :         rLev.mbIsBullet = bHasBullet;
     205           0 :         rLev.mnBulletChar = nBulletChar;
     206           0 :         rLev.mnBulletFont = 0;
     207           0 :         rLev.mnBulletHeight = 100;
     208           0 :         rLev.mnBulletColor = 0;
     209           0 :         rLev.mnAdjust = 0;
     210           0 :         rLev.mnLineFeed = 100;
     211           0 :         rLev.mnLowerDist = 0;
     212           0 :         rLev.mnUpperDist = nUpperDist;
     213           0 :         rLev.mnTextOfs = nTextOfs;
     214           0 :         rLev.mnBulletOfs = nBulletOfs;
     215           0 :         rLev.mnDefaultTab = nDefaultTab;
     216           0 :         rLev.mnAsianSettings = 2;
     217           0 :         rLev.mnBiDi = 0;
     218             : 
     219           0 :         rLev.mbExtendedBulletsUsed = sal_False;
     220           0 :         rLev.mnBulletId = 0xffff;
     221           0 :         rLev.mnBulletStart = 0;
     222           0 :         rLev.mnMappedNumType = 0;
     223           0 :         rLev.mnNumberingType = 0;
     224             :     }
     225           0 : }
     226             : 
     227           0 : void PPTExParaSheet::SetStyleSheet( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet,
     228             :                                         FontCollection& rFontCollection, int nLevel, const PPTExCharLevel& rCharLevel )
     229             : {
     230           0 :     ParagraphObj aParagraphObj( rXPropSet, rBuProv );
     231           0 :     aParagraphObj.CalculateGraphicBulletSize( rCharLevel.mnFontHeight );
     232           0 :     PPTExParaLevel& rLev = maParaLevel[ nLevel ];
     233             : 
     234           0 :     if ( aParagraphObj.meTextAdjust == ::com::sun::star::beans::PropertyState_DIRECT_VALUE )
     235           0 :         rLev.mnAdjust = aParagraphObj.mnTextAdjust;
     236           0 :     if ( aParagraphObj.meLineSpacing == ::com::sun::star::beans::PropertyState_DIRECT_VALUE )
     237             :     {
     238           0 :         sal_Int16 nLineSpacing = aParagraphObj.mnLineSpacing;
     239           0 :         if ( nLineSpacing > 0 ) // if nLinespacing is < 0 the linespacing is an absolute spacing
     240             :         {
     241           0 :             sal_Bool bFixedLineSpacing = sal_False;
     242           0 :             uno::Any aAny = rXPropSet->getPropertyValue( ::rtl::OUString( "FontIndependentLineSpacing" ) );
     243           0 :             if( !(aAny >>= bFixedLineSpacing) || !bFixedLineSpacing )
     244             :             {
     245           0 :                 const FontCollectionEntry* pDesc = rFontCollection.GetById( rCharLevel.mnFont );
     246           0 :                 if ( pDesc )
     247           0 :                     nLineSpacing = (sal_Int16)( (double)nLineSpacing * pDesc->Scaling + 0.5 );
     248           0 :             }
     249             :         }
     250             :         else
     251             :         {
     252           0 :             if ( rCharLevel.mnFontHeight > (sal_uInt16)( ((double)-nLineSpacing) * 0.001 * 72.0 / 2.54 ) ) // 1/100mm to point
     253             :             {
     254           0 :                 const FontCollectionEntry* pDesc = rFontCollection.GetById( rCharLevel.mnFont );
     255           0 :                 if ( pDesc )
     256           0 :                      nLineSpacing = (sal_Int16)( (double)100.0 * pDesc->Scaling + 0.5 );
     257             :                 else
     258           0 :                     nLineSpacing = 100;
     259             :             }
     260             :             else
     261           0 :                 nLineSpacing = (sal_Int16)( (double)nLineSpacing / 4.40972 );
     262             :         }
     263           0 :         rLev.mnLineFeed = nLineSpacing;
     264             :     }
     265           0 :     if ( aParagraphObj.meLineSpacingBottom == ::com::sun::star::beans::PropertyState_DIRECT_VALUE )
     266           0 :         rLev.mnLowerDist = aParagraphObj.mnLineSpacingBottom;
     267           0 :     if ( aParagraphObj.meLineSpacingTop == ::com::sun::star::beans::PropertyState_DIRECT_VALUE )
     268           0 :         rLev.mnUpperDist = aParagraphObj.mnLineSpacingTop;
     269           0 :     if ( aParagraphObj.meForbiddenRules == ::com::sun::star::beans::PropertyState_DIRECT_VALUE )
     270             :     {
     271           0 :         rLev.mnAsianSettings &=~1;
     272           0 :         if ( aParagraphObj.mbForbiddenRules )
     273           0 :             rLev.mnAsianSettings |= 1;
     274             :     }
     275           0 :     if ( aParagraphObj.meParagraphPunctation == ::com::sun::star::beans::PropertyState_DIRECT_VALUE )
     276             :     {
     277           0 :         rLev.mnAsianSettings &=~4;
     278           0 :         if ( aParagraphObj.mbParagraphPunctation )
     279           0 :             rLev.mnAsianSettings |= 4;
     280             :     }
     281             : 
     282           0 :     if ( aParagraphObj.meBiDi == ::com::sun::star::beans::PropertyState_DIRECT_VALUE )
     283           0 :         rLev.mnBiDi = aParagraphObj.mnBiDi;
     284             : 
     285           0 :     rLev.mbIsBullet = aParagraphObj.mbIsBullet; //( ( aParagraphObj.nBulletFlags & 1 ) != 0 );
     286             : 
     287           0 :     if ( !nLevel )
     288             :     {
     289           0 :         if ( ( aParagraphObj.meBullet ==  ::com::sun::star::beans::PropertyState_DIRECT_VALUE )
     290             :                     && aParagraphObj.bExtendedParameters )
     291             :         {
     292           0 :             for ( sal_Int16 i = 0; i < 5; i++ )
     293             :             {
     294           0 :                 PPTExParaLevel& rLevel = maParaLevel[ i ];
     295           0 :                 if ( i )
     296           0 :                     aParagraphObj.ImplGetNumberingLevel( rBuProv, i, sal_False );
     297           0 :                 rLevel.mnTextOfs = aParagraphObj.nTextOfs;
     298           0 :                 rLevel.mnBulletOfs = (sal_uInt16)aParagraphObj.nBulletOfs;
     299           0 :                 rLevel.mnBulletChar = aParagraphObj.cBulletId;
     300             :                 FontCollectionEntry aFontDescEntry( aParagraphObj.aFontDesc.Name, aParagraphObj.aFontDesc.Family,
     301           0 :                                                         aParagraphObj.aFontDesc.Pitch, aParagraphObj.aFontDesc.CharSet );
     302           0 :                 rLevel.mnBulletFont = (sal_uInt16)rFontCollection.GetId( aFontDescEntry );
     303           0 :                 rLevel.mnBulletHeight = aParagraphObj.nBulletRealSize;
     304           0 :                 rLevel.mnBulletColor = aParagraphObj.nBulletColor;
     305             : 
     306           0 :                 rLevel.mbExtendedBulletsUsed = aParagraphObj.bExtendedBulletsUsed;
     307           0 :                 rLevel.mnBulletId = aParagraphObj.nBulletId;
     308           0 :                 rLevel.mnNumberingType = aParagraphObj.nNumberingType;
     309           0 :                 rLevel.mnBulletStart = aParagraphObj.nStartWith;
     310           0 :                 rLevel.mnMappedNumType = aParagraphObj.nMappedNumType;
     311           0 :             }
     312             :         }
     313           0 :     }
     314           0 : }
     315             : 
     316           0 : void PPTExParaSheet::Write( SvStream& rSt, PptEscherEx*, sal_uInt16 nLev, sal_Bool, sal_Bool bSimpleText,
     317             :     const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rPagePropSet )
     318             : {
     319           0 :     const PPTExParaLevel& rLev = maParaLevel[ nLev ];
     320             : 
     321           0 :     if ( maParaLevel[ 0 ].mbExtendedBulletsUsed || maParaLevel[ 1 ].mbExtendedBulletsUsed ||
     322             :             maParaLevel[ 2 ].mbExtendedBulletsUsed || maParaLevel[ 3 ].mbExtendedBulletsUsed ||
     323             :                 maParaLevel[ 4 ].mbExtendedBulletsUsed )
     324             :     {
     325           0 :         SvStream& rOut = rBuProv.aBuExMasterStream;
     326           0 :         if ( !nLev )
     327             :         {
     328           0 :             rOut << (sal_uInt32)( ( EPP_PST_ExtendedParagraphMasterAtom << 16 ) | ( mnInstance << 4 ) )
     329           0 :                  << (sal_uInt32)( 5 * 16 + 2 )
     330           0 :                  << (sal_uInt16)5;              // depth
     331             :         }
     332           0 :         sal_uInt16 nBulletId = rLev.mnBulletId;
     333           0 :         if ( rLev.mnNumberingType != SVX_NUM_BITMAP )
     334           0 :             nBulletId = 0xffff;
     335           0 :         rOut << (sal_uInt32)0x03800000
     336           0 :              << (sal_uInt16)nBulletId
     337           0 :              << (sal_uInt32)rLev.mnMappedNumType
     338           0 :              << (sal_uInt16)rLev.mnBulletStart
     339           0 :              << (sal_uInt32)0;
     340             :     }
     341             : 
     342           0 :     sal_uInt32 nParaFlags = 0x3ffdff;
     343           0 :     sal_uInt16 nBulletFlags = ( rLev.mbIsBullet ) ? 0xf : 0xe;
     344             : 
     345           0 :     if ( nLev )
     346           0 :         nParaFlags &= 0x207fff;
     347           0 :     if ( bSimpleText )
     348           0 :         nParaFlags &= 0x7fff;
     349           0 :     sal_uInt32 nBulletColor = rLev.mnBulletColor;
     350           0 :     if ( nBulletColor == COL_AUTO )
     351             :     {
     352           0 :         sal_Bool bIsDark = sal_False;
     353           0 :         ::com::sun::star::uno::Any aAny;
     354           0 :         if ( PropValue::GetPropertyValue( aAny, rPagePropSet, rtl::OUString( "IsBackgroundDark" ), sal_True ) )
     355           0 :             aAny >>= bIsDark;
     356           0 :         nBulletColor = bIsDark ? 0xffffff : 0x000000;
     357             :     }
     358           0 :     nBulletColor &= 0xffffff;
     359           0 :     nBulletColor |= 0xfe000000;
     360           0 :     rSt << nParaFlags
     361           0 :         << nBulletFlags
     362           0 :         << rLev.mnBulletChar
     363           0 :         << rLev.mnBulletFont
     364           0 :         << rLev.mnBulletHeight
     365           0 :         << nBulletColor
     366           0 :         << rLev.mnAdjust
     367           0 :         << rLev.mnLineFeed
     368           0 :         << rLev.mnUpperDist
     369           0 :         << rLev.mnLowerDist
     370           0 :         << rLev.mnTextOfs
     371           0 :         << rLev.mnBulletOfs;
     372             : 
     373           0 :     if ( bSimpleText || nLev )
     374             :     {
     375           0 :         if ( nParaFlags & 0x200000 )
     376           0 :             rSt << rLev.mnBiDi;
     377             :     }
     378             :     else
     379             :     {
     380           0 :         rSt << rLev.mnDefaultTab
     381           0 :             << (sal_uInt16)0
     382           0 :             << (sal_uInt16)0
     383           0 :             << rLev.mnAsianSettings
     384           0 :             << rLev.mnBiDi;
     385             :     }
     386           0 : }
     387             : 
     388             : 
     389           0 : PPTExStyleSheet::PPTExStyleSheet( sal_uInt16 nDefaultTab, PPTExBulletProvider& rBuProv )
     390             : {
     391           0 :     for ( int nInstance = EPP_TEXTTYPE_Title; nInstance <= EPP_TEXTTYPE_QuarterBody; nInstance++ )
     392             :     {
     393           0 :         mpParaSheet[ nInstance ] = ( nInstance == EPP_TEXTTYPE_notUsed ) ? NULL : new PPTExParaSheet( nInstance, nDefaultTab, rBuProv );
     394           0 :         mpCharSheet[ nInstance ] = ( nInstance == EPP_TEXTTYPE_notUsed ) ? NULL : new PPTExCharSheet( nInstance );
     395             :     }
     396           0 : }
     397             : 
     398           0 : PPTExStyleSheet::~PPTExStyleSheet()
     399             : {
     400           0 :     for ( int nInstance = EPP_TEXTTYPE_Title; nInstance <= EPP_TEXTTYPE_QuarterBody; nInstance++ )
     401             :     {
     402           0 :         if ( nInstance == EPP_TEXTTYPE_notUsed )
     403           0 :             continue;
     404             : 
     405           0 :         delete mpParaSheet[ nInstance ];
     406           0 :         delete mpCharSheet[ nInstance ];
     407             :     }
     408           0 : }
     409             : 
     410           0 : void PPTExStyleSheet::SetStyleSheet( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rXPropSet,
     411             :                                         FontCollection& rFontCollection, int nInstance, int nLevel )
     412             : {
     413           0 :     if ( nInstance == EPP_TEXTTYPE_notUsed )
     414           0 :         return;
     415           0 :     mpCharSheet[ nInstance ]->SetStyleSheet( rXPropSet, rFontCollection, nLevel );
     416           0 :     mpParaSheet[ nInstance ]->SetStyleSheet( rXPropSet, rFontCollection, nLevel, mpCharSheet[ nInstance ]->maCharLevel[ nLevel ] );
     417             : }
     418             : 
     419           0 : sal_Bool PPTExStyleSheet::IsHardAttribute( sal_uInt32 nInstance, sal_uInt32 nLevel, PPTExTextAttr eAttr, sal_uInt32 nValue )
     420             : {
     421           0 :     const PPTExParaLevel& rPara = mpParaSheet[ nInstance ]->maParaLevel[ nLevel ];
     422           0 :     const PPTExCharLevel& rChar = mpCharSheet[ nInstance ]->maCharLevel[ nLevel ];
     423             : 
     424           0 :     sal_uInt32 nFlag = 0;
     425             : 
     426           0 :     switch ( eAttr )
     427             :     {
     428           0 :         case ParaAttr_BulletOn : return ( rPara.mbIsBullet ) ? ( nValue ) ? sal_False : sal_True : ( nValue ) ? sal_True : sal_False;
     429             :         case ParaAttr_BuHardFont :
     430           0 :         case ParaAttr_BulletFont : return ( rPara.mnBulletFont != nValue );
     431             :         case ParaAttr_BuHardColor :
     432           0 :         case ParaAttr_BulletColor : return ( rPara.mnBulletColor != nValue );
     433             :         case ParaAttr_BuHardHeight :
     434           0 :         case ParaAttr_BulletHeight : return ( rPara.mnBulletHeight != nValue );
     435           0 :         case ParaAttr_BulletChar : return ( rPara.mnBulletChar != nValue );
     436           0 :         case ParaAttr_Adjust : return ( rPara.mnAdjust != nValue );
     437           0 :         case ParaAttr_LineFeed : return ( rPara.mnLineFeed != nValue );
     438           0 :         case ParaAttr_UpperDist : return ( rPara.mnUpperDist != nValue );
     439           0 :         case ParaAttr_LowerDist : return ( rPara.mnLowerDist != nValue );
     440           0 :         case ParaAttr_TextOfs : return ( rPara.mnTextOfs != nValue );
     441           0 :         case ParaAttr_BulletOfs : return ( rPara.mnBulletOfs != nValue );
     442           0 :         case ParaAttr_DefaultTab : return ( rPara.mnDefaultTab != nValue );
     443           0 :         case ParaAttr_BiDi : return ( rPara.mnBiDi != nValue );
     444           0 :         case CharAttr_Bold : nFlag = 1; break;
     445           0 :         case CharAttr_Italic : nFlag = 2; break;
     446           0 :         case CharAttr_Underline : nFlag = 4; break;
     447           0 :         case CharAttr_Shadow : nFlag = 16; break;
     448           0 :         case CharAttr_Strikeout : nFlag = 256; break;
     449           0 :         case CharAttr_Embossed : nFlag = 512; break;
     450           0 :         case CharAttr_Font : return ( rChar.mnFont != nValue );
     451           0 :         case CharAttr_AsianOrComplexFont : return ( rChar.mnAsianOrComplexFont != nValue );
     452           0 :         case CharAttr_Symbol : return sal_True;
     453           0 :         case CharAttr_FontHeight : return ( rChar.mnFontHeight != nValue );
     454           0 :         case CharAttr_FontColor : return ( rChar.mnFontColor != nValue );
     455           0 :         case CharAttr_Escapement : return ( rChar.mnEscapement != nValue );
     456             :         default:
     457           0 :             break;
     458             :     };
     459           0 :     if ( nFlag )
     460             :     {
     461           0 :         if ( rChar.mnFlags & nFlag )
     462           0 :             return ( ( nValue & nFlag ) == 0 );
     463             :         else
     464           0 :             return ( ( nValue & nFlag ) != 0 );
     465             :     }
     466           0 :     return sal_True;
     467             : }
     468             : 
     469           0 : sal_uInt32 PPTExStyleSheet::SizeOfTxCFStyleAtom() const
     470             : {
     471           0 :     return 24;
     472             : }
     473             : 
     474             : // the TxCFStyleAtom stores the text properties that are used
     475             : // when creating new objects in PowerPoint.
     476             : 
     477           0 : void PPTExStyleSheet::WriteTxCFStyleAtom( SvStream& rSt )
     478             : {
     479           0 :     const PPTExCharLevel& rCharStyle = mpCharSheet[ EPP_TEXTTYPE_Other ]->maCharLevel[ 0 ];
     480             : 
     481             :     sal_uInt16 nFlags = 0x60        // ??
     482             :                       | 0x02        // fontsize;
     483           0 :                       | 0x04;       // fontcolor
     484             : 
     485           0 :     sal_uInt32 nCharFlags = rCharStyle.mnFlags;
     486           0 :     nCharFlags &= CharAttr_Italic | CharAttr_Bold | CharAttr_Underline | CharAttr_Shadow;
     487             : 
     488           0 :     rSt << (sal_uInt32)( EPP_TxCFStyleAtom << 16 )  // recordheader
     489           0 :         << SizeOfTxCFStyleAtom() - 8
     490           0 :         << (sal_uInt16)( 0x80 | nCharFlags )
     491           0 :         << (sal_uInt16)nFlags
     492           0 :         << (sal_uInt16)nCharFlags
     493           0 :         << (sal_Int32)-1                            // ?
     494           0 :         << rCharStyle.mnFontHeight
     495           0 :         << rCharStyle.mnFontColor;
     496           0 : }
     497             : 
     498             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10