LCOV - code coverage report
Current view: top level - chart2/source/controller/itemsetwrapper - GraphicPropertyItemConverter.cxx (source / functions) Hit Total Coverage
Test: commit e02a6cb2c3e2b23b203b422e4e0680877f232636 Lines: 0 334 0.0 %
Date: 2014-04-14 Functions: 0 14 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 "GraphicPropertyItemConverter.hxx"
      21             : #include "SchWhichPairs.hxx"
      22             : #include "macros.hxx"
      23             : #include "ItemPropertyMap.hxx"
      24             : #include "PropertyHelper.hxx"
      25             : #include "CommonConverters.hxx"
      26             : #include <editeng/memberids.hrc>
      27             : #include <svx/xflclit.hxx>
      28             : #include <svx/xlnclit.hxx>
      29             : #include <svx/xflbmtit.hxx>
      30             : #include <svx/xflbstit.hxx>
      31             : #include <svx/xbtmpit.hxx>
      32             : #include <svx/xflftrit.hxx>
      33             : #include <svx/xlndsit.hxx>
      34             : #include <svx/xflhtit.hxx>
      35             : #include <svx/xflgrit.hxx>
      36             : #include <svx/xfltrit.hxx>
      37             : #include <svx/xlntrit.hxx>
      38             : #include <editeng/eeitem.hxx>
      39             : // for SfxBoolItem
      40             : #include <svl/eitem.hxx>
      41             : // for XFillGradientStepCountItem
      42             : #include <svx/xgrscit.hxx>
      43             : #include <com/sun/star/beans/XPropertyState.hpp>
      44             : #include <com/sun/star/chart2/FillBitmap.hpp>
      45             : #include <com/sun/star/awt/Gradient.hpp>
      46             : #include <com/sun/star/container/XNameAccess.hpp>
      47             : 
      48             : using namespace ::com::sun::star;
      49             : 
      50             : namespace
      51             : {
      52           0 : ::comphelper::ItemPropertyMapType & lcl_GetDataPointFilledPropertyMap()
      53             : {
      54             :     static ::comphelper::ItemPropertyMapType aDataPointPropertyFilledMap(
      55             :         ::comphelper::MakeItemPropertyMap
      56             :         IPM_MAP_ENTRY( XATTR_FILLSTYLE, "FillStyle", 0 )
      57           0 :         IPM_MAP_ENTRY( XATTR_FILLCOLOR, "Color", 0 )
      58           0 :         IPM_MAP_ENTRY( XATTR_LINECOLOR, "BorderColor", 0 )
      59           0 :         IPM_MAP_ENTRY( XATTR_LINESTYLE, "BorderStyle", 0 )
      60           0 :         IPM_MAP_ENTRY( XATTR_LINEWIDTH, "BorderWidth", 0 )
      61           0 :         IPM_MAP_ENTRY( XATTR_FILLBACKGROUND, "FillBackground", 0 )
      62           0 :         IPM_MAP_ENTRY( XATTR_FILLBMP_POS, "FillBitmapRectanglePoint", 0 )
      63           0 :         IPM_MAP_ENTRY( XATTR_FILLBMP_SIZEX, "FillBitmapSizeX", 0 )
      64           0 :         IPM_MAP_ENTRY( XATTR_FILLBMP_SIZEY, "FillBitmapSizeY", 0 )
      65           0 :         IPM_MAP_ENTRY( XATTR_FILLBMP_SIZELOG, "FillBitmapLogicalSize", 0 )
      66           0 :         IPM_MAP_ENTRY( XATTR_FILLBMP_TILEOFFSETX, "FillBitmapOffsetX", 0 )
      67           0 :         IPM_MAP_ENTRY( XATTR_FILLBMP_TILEOFFSETY, "FillBitmapOffsetY", 0 )
      68           0 :         IPM_MAP_ENTRY( XATTR_FILLBMP_POSOFFSETX, "FillBitmapPositionOffsetX", 0 )
      69           0 :         IPM_MAP_ENTRY( XATTR_FILLBMP_POSOFFSETY, "FillBitmapPositionOffsetY", 0 )
      70           0 :         );
      71             : 
      72           0 :     return aDataPointPropertyFilledMap;
      73             : }
      74           0 : ::comphelper::ItemPropertyMapType & lcl_GetDataPointLinePropertyMap()
      75             : {
      76             :     static ::comphelper::ItemPropertyMapType aDataPointPropertyLineMap(
      77             :         ::comphelper::MakeItemPropertyMap
      78             :         IPM_MAP_ENTRY( XATTR_LINECOLOR, "Color", 0 )
      79           0 :         IPM_MAP_ENTRY( XATTR_LINESTYLE, "LineStyle", 0 )
      80           0 :         IPM_MAP_ENTRY( XATTR_LINEWIDTH, "LineWidth", 0 )
      81           0 :         );
      82             : 
      83           0 :     return aDataPointPropertyLineMap;
      84             : }
      85           0 : ::comphelper::ItemPropertyMapType & lcl_GetLinePropertyMap()
      86             : {
      87             :     static ::comphelper::ItemPropertyMapType aLinePropertyMap(
      88             :         ::comphelper::MakeItemPropertyMap
      89             :         IPM_MAP_ENTRY( XATTR_LINESTYLE, "LineStyle", 0 )
      90           0 :         IPM_MAP_ENTRY( XATTR_LINEWIDTH, "LineWidth", 0 )
      91           0 :         IPM_MAP_ENTRY( XATTR_LINECOLOR, "LineColor", 0 )
      92           0 :         IPM_MAP_ENTRY( XATTR_LINEJOINT, "LineJoint", 0 )
      93           0 :         );
      94             : 
      95           0 :     return aLinePropertyMap;
      96             : }
      97           0 : ::comphelper::ItemPropertyMapType & lcl_GetFillPropertyMap()
      98             : {
      99             :     static ::comphelper::ItemPropertyMapType aFillPropertyMap(
     100             :         ::comphelper::MakeItemPropertyMap
     101             :         IPM_MAP_ENTRY( XATTR_FILLSTYLE, "FillStyle", 0 )
     102           0 :         IPM_MAP_ENTRY( XATTR_FILLCOLOR, "FillColor", 0 )
     103           0 :         IPM_MAP_ENTRY( XATTR_FILLBACKGROUND, "FillBackground", 0 )
     104           0 :         IPM_MAP_ENTRY( XATTR_FILLBMP_POS, "FillBitmapRectanglePoint", 0 )
     105           0 :         IPM_MAP_ENTRY( XATTR_FILLBMP_SIZEX, "FillBitmapSizeX", 0 )
     106           0 :         IPM_MAP_ENTRY( XATTR_FILLBMP_SIZEY, "FillBitmapSizeY", 0 )
     107           0 :         IPM_MAP_ENTRY( XATTR_FILLBMP_SIZELOG, "FillBitmapLogicalSize", 0 )
     108           0 :         IPM_MAP_ENTRY( XATTR_FILLBMP_TILEOFFSETX, "FillBitmapOffsetX", 0 )
     109           0 :         IPM_MAP_ENTRY( XATTR_FILLBMP_TILEOFFSETY, "FillBitmapOffsetY", 0 )
     110           0 :         IPM_MAP_ENTRY( XATTR_FILLBMP_POSOFFSETX, "FillBitmapPositionOffsetX", 0 )
     111           0 :         IPM_MAP_ENTRY( XATTR_FILLBMP_POSOFFSETY, "FillBitmapPositionOffsetY", 0 )
     112           0 :         );
     113             : 
     114           0 :     return aFillPropertyMap;
     115             : }
     116             : 
     117           0 : bool lcl_supportsFillProperties( ::chart::wrapper::GraphicPropertyItemConverter::eGraphicObjectType eType )
     118             : {
     119           0 :     return ( eType == ::chart::wrapper::GraphicPropertyItemConverter::FILLED_DATA_POINT ||
     120           0 :              eType == ::chart::wrapper::GraphicPropertyItemConverter::FILL_PROPERTIES ||
     121           0 :              eType == ::chart::wrapper::GraphicPropertyItemConverter::LINE_AND_FILL_PROPERTIES );
     122             : }
     123             : 
     124           0 : bool lcl_supportsLineProperties( ::chart::wrapper::GraphicPropertyItemConverter::eGraphicObjectType eType )
     125             : {
     126           0 :     return ( eType != ::chart::wrapper::GraphicPropertyItemConverter::FILL_PROPERTIES );
     127             : }
     128             : 
     129           0 : bool lcl_SetContentForNamedProperty(
     130             :     const uno::Reference< lang::XMultiServiceFactory > & xFactory,
     131             :     const OUString & rTableName,
     132             :     NameOrIndex & rItem, sal_uInt8 nMemberId )
     133             : {
     134           0 :     bool bResult = false;
     135           0 :     if( xFactory.is())
     136             :     {
     137           0 :         OUString aPropertyValue( rItem.GetName());
     138             :         uno::Reference< container::XNameAccess > xNameAcc(
     139           0 :             xFactory->createInstance( rTableName ),
     140           0 :             uno::UNO_QUERY );
     141           0 :         if( xNameAcc.is() &&
     142           0 :             xNameAcc->hasByName( aPropertyValue ))
     143             :         {
     144           0 :             rItem.PutValue( xNameAcc->getByName( aPropertyValue ), nMemberId );
     145           0 :             bResult = true;
     146           0 :         }
     147             :     }
     148           0 :     return bResult;
     149             : }
     150             : 
     151             : } // anonymous namespace
     152             : 
     153             : namespace chart
     154             : {
     155             : namespace wrapper
     156             : {
     157             : 
     158           0 : GraphicPropertyItemConverter::GraphicPropertyItemConverter(
     159             :     const uno::Reference<
     160             :     beans::XPropertySet > & rPropertySet,
     161             :     SfxItemPool& rItemPool,
     162             :     SdrModel& rDrawModel,
     163             :     const uno::Reference< lang::XMultiServiceFactory > & xNamedPropertyContainerFactory,
     164             :     eGraphicObjectType eObjectType /* = FILL_PROPERTIES */ ) :
     165             :         ItemConverter( rPropertySet, rItemPool ),
     166             :         m_eGraphicObjectType( eObjectType ),
     167             :         m_rDrawModel( rDrawModel ),
     168           0 :         m_xNamedPropertyTableFactory( xNamedPropertyContainerFactory )
     169           0 : {}
     170             : 
     171           0 : GraphicPropertyItemConverter::~GraphicPropertyItemConverter()
     172           0 : {}
     173             : 
     174           0 : const sal_uInt16 * GraphicPropertyItemConverter::GetWhichPairs() const
     175             : {
     176           0 :     const sal_uInt16 * pResult = NULL;
     177             : 
     178           0 :     switch( m_eGraphicObjectType )
     179             :     {
     180             :         case LINE_DATA_POINT:
     181             :         case FILLED_DATA_POINT:
     182           0 :             pResult = nRowWhichPairs; break;
     183             :         case LINE_PROPERTIES:
     184           0 :             pResult = nLinePropertyWhichPairs; break;
     185             :         case FILL_PROPERTIES:
     186           0 :             pResult = nFillPropertyWhichPairs; break;
     187             :         case LINE_AND_FILL_PROPERTIES:
     188           0 :             pResult = nLineAndFillPropertyWhichPairs; break;
     189             :     }
     190             : 
     191           0 :     return pResult;
     192             : }
     193             : 
     194           0 : bool GraphicPropertyItemConverter::GetItemProperty( tWhichIdType nWhichId, tPropertyNameWithMemberId & rOutProperty ) const
     195             : {
     196           0 :     ::comphelper::ItemPropertyMapType::const_iterator aEndIt;
     197           0 :     ::comphelper::ItemPropertyMapType::const_iterator aIt;
     198             : 
     199           0 :     switch( m_eGraphicObjectType )
     200             :     {
     201             :         case LINE_DATA_POINT:
     202           0 :             aEndIt = lcl_GetDataPointLinePropertyMap().end();
     203           0 :             aIt = lcl_GetDataPointLinePropertyMap().find( nWhichId );
     204           0 :             break;
     205             :         case FILLED_DATA_POINT:
     206           0 :             aEndIt = lcl_GetDataPointFilledPropertyMap().end();
     207           0 :             aIt = lcl_GetDataPointFilledPropertyMap().find( nWhichId );
     208           0 :             break;
     209             :         case LINE_PROPERTIES:
     210           0 :             aEndIt = lcl_GetLinePropertyMap().end();
     211           0 :             aIt = lcl_GetLinePropertyMap().find( nWhichId );
     212           0 :             break;
     213             : 
     214             :         case FILL_PROPERTIES:
     215           0 :             aEndIt = lcl_GetFillPropertyMap().end();
     216           0 :             aIt = lcl_GetFillPropertyMap().find( nWhichId );
     217           0 :             break;
     218             : 
     219             :         case LINE_AND_FILL_PROPERTIES:
     220             :             // line
     221           0 :             aEndIt = lcl_GetLinePropertyMap().end();
     222           0 :             aIt = lcl_GetLinePropertyMap().find( nWhichId );
     223             : 
     224             :             // not found => try fill
     225           0 :             if( aIt == aEndIt )
     226             :             {
     227           0 :                 aEndIt = lcl_GetFillPropertyMap().end();
     228           0 :                 aIt = lcl_GetFillPropertyMap().find( nWhichId );
     229             :             }
     230           0 :             break;
     231             :     }
     232             : 
     233           0 :     if( aIt == aEndIt )
     234           0 :         return false;
     235             : 
     236           0 :     rOutProperty =(*aIt).second;
     237           0 :     return true;
     238             : }
     239             : 
     240           0 : void GraphicPropertyItemConverter::FillSpecialItem(
     241             :     sal_uInt16 nWhichId, SfxItemSet & rOutItemSet ) const
     242             :     throw( uno::Exception )
     243             : {
     244           0 :     switch( nWhichId )
     245             :     {
     246             :         // bitmap property
     247             :         case XATTR_FILLBMP_TILE:
     248             :         case XATTR_FILLBMP_STRETCH:
     249             :         {
     250           0 :             drawing::BitmapMode aMode = drawing::BitmapMode_REPEAT;
     251           0 :             if( GetPropertySet()->getPropertyValue( "FillBitmapMode" ) >>= aMode )
     252             :             {
     253           0 :                 rOutItemSet.Put( XFillBmpTileItem( aMode == drawing::BitmapMode_REPEAT ));
     254           0 :                 rOutItemSet.Put( XFillBmpStretchItem( aMode == drawing::BitmapMode_STRETCH ));
     255             :             }
     256             :         }
     257           0 :         break;
     258             : 
     259             :         case XATTR_FILLFLOATTRANSPARENCE:
     260             :             try
     261             :             {
     262           0 :                 if( lcl_supportsFillProperties( m_eGraphicObjectType ))
     263             :                 {
     264             :                     OUString aPropName =
     265           0 :                           (m_eGraphicObjectType == FILLED_DATA_POINT)
     266             :                           ? OUString( "TransparencyGradientName" )
     267           0 :                           : OUString( "FillTransparenceGradientName" );
     268             : 
     269           0 :                     uno::Any aValue( GetPropertySet()->getPropertyValue( aPropName ));
     270           0 :                     if( aValue.hasValue())
     271             :                     {
     272           0 :                         XFillFloatTransparenceItem aItem;
     273           0 :                         aItem.PutValue( aValue, MID_NAME );
     274             : 
     275             :                         lcl_SetContentForNamedProperty(
     276             :                             m_xNamedPropertyTableFactory, "com.sun.star.drawing.TransparencyGradientTable" ,
     277           0 :                             aItem, MID_FILLGRADIENT );
     278             : 
     279             :                         // this is important to enable the item
     280           0 :                         OUString aName;
     281           0 :                         if( (aValue >>= aName) &&
     282           0 :                             !aName.isEmpty())
     283             :                         {
     284           0 :                             aItem.SetEnabled( true );
     285           0 :                             rOutItemSet.Put( aItem );
     286           0 :                         }
     287           0 :                     }
     288             :                 }
     289             :             }
     290           0 :             catch( const beans::UnknownPropertyException &ex )
     291             :             {
     292             :                 ASSERT_EXCEPTION( ex );
     293             :             }
     294           0 :         break;
     295             : 
     296             :         case XATTR_GRADIENTSTEPCOUNT:
     297           0 :             if( lcl_supportsFillProperties( m_eGraphicObjectType ))
     298             :             {
     299             :                 OUString aPropName =
     300           0 :                     (m_eGraphicObjectType == FILLED_DATA_POINT)
     301             :                     ? OUString( "GradientStepCount" )
     302           0 :                     : OUString( "FillGradientStepCount" );
     303             : 
     304           0 :                 uno::Any aValue( GetPropertySet()->getPropertyValue( aPropName ) );
     305           0 :                 if( hasLongOrShortValue(aValue) )
     306             :                 {
     307           0 :                     sal_Int16 nStepCount = getShortForLongAlso(aValue);
     308           0 :                     rOutItemSet.Put( XGradientStepCountItem( nStepCount ));
     309           0 :                 }
     310             :             }
     311           0 :         break;
     312             : 
     313             :         case XATTR_LINEDASH:
     314           0 :             if( lcl_supportsLineProperties( m_eGraphicObjectType ))
     315             :             {
     316             :                 OUString aPropName =
     317           0 :                     (m_eGraphicObjectType == FILLED_DATA_POINT)
     318             :                     ? OUString( "BorderDashName" )
     319           0 :                     : OUString( "LineDashName" );
     320             : 
     321           0 :                 XLineDashItem aItem;
     322           0 :                 aItem.PutValue( GetPropertySet()->getPropertyValue( aPropName ), MID_NAME );
     323             : 
     324             :                 lcl_SetContentForNamedProperty(
     325             :                     m_xNamedPropertyTableFactory, "com.sun.star.drawing.DashTable" ,
     326           0 :                     aItem, MID_LINEDASH );
     327             : 
     328             :                 // translate model name to UI-name for predefined entries, so
     329             :                 // that the correct entry is chosen in the list of UI-names
     330           0 :                 XLineDashItem * pItemToPut = aItem.checkForUniqueItem( & m_rDrawModel );
     331             : 
     332           0 :                 rOutItemSet.Put( * pItemToPut );
     333             :             }
     334           0 :         break;
     335             : 
     336             :         case XATTR_FILLGRADIENT:
     337           0 :             if( lcl_supportsFillProperties( m_eGraphicObjectType ))
     338             :             {
     339             :                 OUString aPropName =
     340           0 :                     (m_eGraphicObjectType == FILLED_DATA_POINT)
     341             :                     ? OUString( "GradientName" )
     342           0 :                     : OUString( "FillGradientName" );
     343             : 
     344           0 :                 XFillGradientItem aItem;
     345           0 :                 aItem.PutValue( GetPropertySet()->getPropertyValue( aPropName ), MID_NAME );
     346             : 
     347             :                 lcl_SetContentForNamedProperty(
     348             :                     m_xNamedPropertyTableFactory, "com.sun.star.drawing.GradientTable" ,
     349           0 :                     aItem, MID_FILLGRADIENT );
     350             : 
     351             :                 // translate model name to UI-name for predefined entries, so
     352             :                 // that the correct entry is chosen in the list of UI-names
     353           0 :                 XFillGradientItem * pItemToPut = aItem.checkForUniqueItem( & m_rDrawModel );
     354             : 
     355           0 :                 rOutItemSet.Put( * pItemToPut );
     356             :             }
     357           0 :         break;
     358             : 
     359             :         case XATTR_FILLHATCH:
     360           0 :             if( lcl_supportsFillProperties( m_eGraphicObjectType ))
     361             :             {
     362             :                 OUString aPropName =
     363           0 :                     (m_eGraphicObjectType == FILLED_DATA_POINT)
     364             :                     ? OUString( "HatchName" )
     365           0 :                     : OUString( "FillHatchName" );
     366             : 
     367           0 :                 XFillHatchItem aItem;
     368           0 :                 aItem.PutValue( GetPropertySet()->getPropertyValue( aPropName ), MID_NAME );
     369             : 
     370             :                 lcl_SetContentForNamedProperty(
     371             :                     m_xNamedPropertyTableFactory, "com.sun.star.drawing.HatchTable" ,
     372           0 :                     aItem, MID_FILLHATCH );
     373             : 
     374             :                 // translate model name to UI-name for predefined entries, so
     375             :                 // that the correct entry is chosen in the list of UI-names
     376           0 :                 XFillHatchItem * pItemToPut = aItem.checkForUniqueItem( & m_rDrawModel );
     377             : 
     378           0 :                 rOutItemSet.Put( * pItemToPut );
     379             :             }
     380           0 :         break;
     381             : 
     382             :         case XATTR_FILLBITMAP:
     383           0 :             if( lcl_supportsFillProperties( m_eGraphicObjectType ))
     384             :             {
     385           0 :                 XFillBitmapItem aItem;
     386           0 :                 aItem.PutValue( GetPropertySet()->getPropertyValue( "FillBitmapName" ), MID_NAME );
     387             : 
     388             :                 lcl_SetContentForNamedProperty(
     389             :                     m_xNamedPropertyTableFactory, "com.sun.star.drawing.BitmapTable" ,
     390           0 :                     aItem, MID_GRAFURL );
     391             : 
     392             :                 // translate model name to UI-name for predefined entries, so
     393             :                 // that the correct entry is chosen in the list of UI-names
     394           0 :                 XFillBitmapItem * pItemToPut = aItem.checkForUniqueItem( & m_rDrawModel );
     395             : 
     396           0 :                 rOutItemSet.Put( * pItemToPut );
     397             :             }
     398           0 :         break;
     399             : 
     400             :         // hack, because QueryValue of XLineTransparenceItem returns sal_Int32
     401             :         // instead of sal_Int16
     402             :         case XATTR_LINETRANSPARENCE:
     403           0 :             if( lcl_supportsLineProperties( m_eGraphicObjectType ))
     404             :             {
     405             :                 OUString aPropName =
     406           0 :                       (m_eGraphicObjectType == FILLED_DATA_POINT)
     407             :                       ? OUString( "BorderTransparency" )
     408           0 :                       : (m_eGraphicObjectType == LINE_DATA_POINT)
     409             :                       ? OUString( "Transparency" )
     410           0 :                       : OUString( "LineTransparence" );
     411             : 
     412           0 :                 XLineTransparenceItem aItem;
     413           0 :                 aItem.PutValue( GetPropertySet()->getPropertyValue( aPropName ) );
     414             : 
     415           0 :                 rOutItemSet.Put( aItem );
     416             :             }
     417           0 :             break;
     418             : 
     419             :         // hack, because QueryValue of XFillTransparenceItem returns sal_Int32
     420             :         // instead of sal_Int16
     421             :         case XATTR_FILLTRANSPARENCE:
     422           0 :             if( lcl_supportsFillProperties( m_eGraphicObjectType ))
     423             :             {
     424             :                 OUString aPropName =
     425           0 :                       (m_eGraphicObjectType == FILLED_DATA_POINT)
     426             :                       ? OUString( "Transparency" )
     427           0 :                       : OUString( "FillTransparence" );
     428             : 
     429           0 :                 XFillTransparenceItem aItem;
     430           0 :                 aItem.PutValue( GetPropertySet()->getPropertyValue( aPropName ) );
     431             : 
     432           0 :                 rOutItemSet.Put( aItem );
     433             :             }
     434           0 :             break;
     435             :     }
     436           0 : }
     437             : 
     438           0 : bool GraphicPropertyItemConverter::ApplySpecialItem(
     439             :     sal_uInt16 nWhichId, const SfxItemSet & rItemSet )
     440             :     throw( uno::Exception )
     441             : {
     442           0 :     bool bChanged = false;
     443           0 :     uno::Any aValue;
     444             : 
     445           0 :     switch( nWhichId )
     446             :     {
     447             :         // bitmap property
     448             :         case XATTR_FILLBMP_STRETCH:
     449           0 :             if( lcl_supportsFillProperties( m_eGraphicObjectType ))
     450             :             {
     451           0 :                 const OUString aModePropName("FillBitmapMode");
     452             :                 bool bStretched = static_cast< const XFillBmpStretchItem & >(
     453           0 :                     rItemSet.Get( XATTR_FILLBMP_STRETCH )).GetValue();
     454             :                 drawing::BitmapMode aMode =
     455           0 :                     (bStretched ? drawing::BitmapMode_STRETCH : drawing::BitmapMode_NO_REPEAT);
     456             : 
     457           0 :                 aValue <<= aMode;
     458           0 :                 if( aValue != GetPropertySet()->getPropertyValue( aModePropName ))
     459             :                 {
     460           0 :                     GetPropertySet()->setPropertyValue( aModePropName, aValue );
     461           0 :                     bChanged = true;
     462           0 :                 }
     463             :             }
     464           0 :             break;
     465             : 
     466             :         case XATTR_FILLBMP_TILE:
     467           0 :             if( lcl_supportsFillProperties( m_eGraphicObjectType ))
     468             :             {
     469           0 :                 const OUString aModePropName("FillBitmapMode");
     470             :                 bool bTiled = static_cast< const XFillBmpTileItem & >(
     471           0 :                     rItemSet.Get( XATTR_FILLBMP_TILE )).GetValue();
     472             :                 drawing::BitmapMode aMode =
     473           0 :                     (bTiled ? drawing::BitmapMode_REPEAT : drawing::BitmapMode_NO_REPEAT);
     474             : 
     475           0 :                 aValue <<= aMode;
     476           0 :                 if( aValue != GetPropertySet()->getPropertyValue( aModePropName ))
     477             :                 {
     478           0 :                     GetPropertySet()->setPropertyValue( aModePropName, aValue );
     479           0 :                     bChanged = true;
     480           0 :                 }
     481             :             }
     482           0 :             break;
     483             : 
     484             :         case XATTR_FILLFLOATTRANSPARENCE:
     485             :             try
     486             :             {
     487           0 :                 if( lcl_supportsFillProperties( m_eGraphicObjectType ))
     488             :                 {
     489             :                     OUString aPropName =
     490           0 :                           (m_eGraphicObjectType == FILLED_DATA_POINT)
     491             :                           ? OUString( "TransparencyGradientName" )
     492           0 :                           : OUString( "FillTransparenceGradientName" );
     493             : 
     494             :                     const XFillFloatTransparenceItem & rItem =
     495             :                         static_cast< const XFillFloatTransparenceItem & >(
     496           0 :                             rItemSet.Get( nWhichId ));
     497             : 
     498           0 :                     if( rItem.IsEnabled() &&
     499           0 :                         rItem.QueryValue( aValue, MID_NAME ))
     500             :                     {
     501           0 :                         uno::Any aGradient;
     502           0 :                         rItem.QueryValue( aGradient, MID_FILLGRADIENT );
     503             : 
     504             :                         // add TransparencyGradient to list if it does not already exist
     505           0 :                         OUString aPreferredName;
     506           0 :                         aValue >>= aPreferredName;
     507           0 :                         aValue <<= PropertyHelper::addTransparencyGradientUniqueNameToTable(
     508           0 :                             aGradient, m_xNamedPropertyTableFactory, aPreferredName );
     509             : 
     510           0 :                         if( aValue != GetPropertySet()->getPropertyValue( aPropName ))
     511             :                         {
     512           0 :                             GetPropertySet()->setPropertyValue( aPropName, aValue );
     513           0 :                             bChanged = true;
     514           0 :                         }
     515             :                     }
     516             :                     else
     517             :                     {
     518           0 :                         OUString aName;
     519           0 :                         if( ( GetPropertySet()->getPropertyValue( aPropName ) >>= aName )
     520           0 :                             && !aName.isEmpty() )
     521             :                         {
     522           0 :                             uno::Reference< beans::XPropertyState > xState( GetPropertySet(), uno::UNO_QUERY );
     523           0 :                             if( xState.is())
     524           0 :                                 xState->setPropertyToDefault( aPropName );
     525           0 :                             bChanged = true;
     526           0 :                         }
     527           0 :                     }
     528             :                 }
     529             :             }
     530           0 :             catch( const beans::UnknownPropertyException &ex )
     531             :             {
     532             :                 ASSERT_EXCEPTION( ex );
     533             :             }
     534           0 :         break;
     535             : 
     536             :         case XATTR_GRADIENTSTEPCOUNT:
     537             :         {
     538           0 :             if( lcl_supportsFillProperties( m_eGraphicObjectType ))
     539             :             {
     540             :                 OUString aPropName =
     541           0 :                     (m_eGraphicObjectType == FILLED_DATA_POINT)
     542             :                     ? OUString( "GradientStepCount" )
     543           0 :                     : OUString( "FillGradientStepCount" );
     544             : 
     545             :                 sal_Int16 nStepCount = ( static_cast< const XGradientStepCountItem & >(
     546           0 :                             rItemSet.Get( nWhichId ))).GetValue();
     547             : 
     548           0 :                 aValue <<= nStepCount;
     549           0 :                 if( aValue != GetPropertySet()->getPropertyValue( aPropName ))
     550             :                 {
     551           0 :                     GetPropertySet()->setPropertyValue( aPropName, aValue );
     552           0 :                     bChanged = true;
     553           0 :                 }
     554             :             }
     555             :         }
     556           0 :         break;
     557             : 
     558             :         case XATTR_LINEDASH:
     559             :         {
     560           0 :             if( lcl_supportsLineProperties( m_eGraphicObjectType ))
     561             :             {
     562             : 
     563             :                 OUString aPropName =
     564           0 :                     (m_eGraphicObjectType == FILLED_DATA_POINT)
     565             :                     ? OUString( "BorderDashName" )
     566           0 :                     : OUString( "LineDashName" );
     567             : 
     568             :                 const XLineDashItem & rItem =
     569             :                     static_cast< const XLineDashItem & >(
     570           0 :                         rItemSet.Get( nWhichId ));
     571             : 
     572           0 :                 if( rItem.QueryValue( aValue, MID_NAME ))
     573             :                 {
     574           0 :                     if( aValue != GetPropertySet()->getPropertyValue( aPropName ))
     575             :                     {
     576             :                         // add LineDash to list
     577           0 :                         uno::Any aLineDash;
     578           0 :                         rItem.QueryValue( aLineDash, MID_LINEDASH );
     579           0 :                         OUString aPreferredName;
     580           0 :                         aValue >>= aPreferredName;
     581           0 :                         aValue <<= PropertyHelper::addLineDashUniqueNameToTable(
     582           0 :                             aLineDash, m_xNamedPropertyTableFactory, aPreferredName );
     583             : 
     584           0 :                         GetPropertySet()->setPropertyValue( aPropName, aValue );
     585           0 :                         bChanged = true;
     586             :                     }
     587           0 :                 }
     588             :             }
     589             :         }
     590           0 :         break;
     591             : 
     592             :         case XATTR_FILLGRADIENT:
     593             :         {
     594           0 :             if( lcl_supportsFillProperties( m_eGraphicObjectType ))
     595             :             {
     596             :                 OUString aPropName =
     597           0 :                     (m_eGraphicObjectType == FILLED_DATA_POINT)
     598             :                     ? OUString( "GradientName" )
     599           0 :                     : OUString( "FillGradientName" );
     600             : 
     601             :                 const XFillGradientItem & rItem =
     602             :                     static_cast< const XFillGradientItem & >(
     603           0 :                         rItemSet.Get( nWhichId ));
     604             : 
     605           0 :                 if( rItem.QueryValue( aValue, MID_NAME ))
     606             :                 {
     607           0 :                     if( aValue != GetPropertySet()->getPropertyValue( aPropName ))
     608             :                     {
     609             :                         // add Gradient to list
     610           0 :                         uno::Any aGradient;
     611           0 :                         rItem.QueryValue( aGradient, MID_FILLGRADIENT );
     612           0 :                         OUString aPreferredName;
     613           0 :                         aValue >>= aPreferredName;
     614           0 :                         aValue <<= PropertyHelper::addGradientUniqueNameToTable(
     615           0 :                             aGradient, m_xNamedPropertyTableFactory, aPreferredName );
     616             : 
     617           0 :                         GetPropertySet()->setPropertyValue( aPropName, aValue );
     618           0 :                         bChanged = true;
     619             :                     }
     620           0 :                 }
     621             :             }
     622             :         }
     623           0 :         break;
     624             : 
     625             :         case XATTR_FILLHATCH:
     626             :         {
     627           0 :             if( lcl_supportsFillProperties( m_eGraphicObjectType ))
     628             :             {
     629             :                 OUString aPropName =
     630           0 :                     (m_eGraphicObjectType == FILLED_DATA_POINT)
     631             :                     ? OUString( "HatchName" )
     632           0 :                     : OUString( "FillHatchName" );
     633             : 
     634             :                 const XFillHatchItem & rItem =
     635             :                     static_cast< const XFillHatchItem & >(
     636           0 :                         rItemSet.Get( nWhichId ));
     637             : 
     638           0 :                 if( rItem.QueryValue( aValue, MID_NAME ))
     639             :                 {
     640           0 :                     if( aValue != GetPropertySet()->getPropertyValue( aPropName ))
     641             :                     {
     642             :                         // add Hatch to list
     643           0 :                         uno::Any aHatch;
     644           0 :                         rItem.QueryValue( aHatch, MID_FILLHATCH );
     645           0 :                         OUString aPreferredName;
     646           0 :                         aValue >>= aPreferredName;
     647           0 :                         aValue <<= PropertyHelper::addHatchUniqueNameToTable(
     648           0 :                             aHatch, m_xNamedPropertyTableFactory, aPreferredName );
     649             : 
     650           0 :                         GetPropertySet()->setPropertyValue( aPropName, aValue );
     651           0 :                         bChanged = true;
     652             :                     }
     653           0 :                 }
     654             :             }
     655             :         }
     656           0 :         break;
     657             : 
     658             :         case XATTR_FILLBITMAP:
     659             :         {
     660           0 :             if( lcl_supportsFillProperties( m_eGraphicObjectType ))
     661             :             {
     662             :                 const XFillBitmapItem & rItem =
     663             :                     static_cast< const XFillBitmapItem & >(
     664           0 :                         rItemSet.Get( nWhichId ));
     665             : 
     666           0 :                 if( rItem.QueryValue( aValue, MID_NAME ))
     667             :                 {
     668           0 :                     if( aValue != GetPropertySet()->getPropertyValue( "FillBitmapName" ))
     669             :                     {
     670             :                         // add Bitmap to list
     671           0 :                         uno::Any aBitmap;
     672           0 :                         rItem.QueryValue( aBitmap, MID_GRAFURL );
     673           0 :                         OUString aPreferredName;
     674           0 :                         aValue >>= aPreferredName;
     675           0 :                         aValue <<= PropertyHelper::addBitmapUniqueNameToTable(
     676           0 :                             aBitmap, m_xNamedPropertyTableFactory, aPreferredName );
     677             : 
     678           0 :                         GetPropertySet()->setPropertyValue( "FillBitmapName" , aValue );
     679           0 :                         bChanged = true;
     680             :                     }
     681             :                 }
     682             :             }
     683             :         }
     684           0 :         break;
     685             : 
     686             :         // hack, because QueryValue of XLineTransparenceItem returns sal_Int32
     687             :         // instead of sal_Int16
     688             :         case XATTR_LINETRANSPARENCE:
     689           0 :             if( lcl_supportsLineProperties( m_eGraphicObjectType ))
     690             :             {
     691             :                 OUString aPropName =
     692           0 :                       (m_eGraphicObjectType == FILLED_DATA_POINT)
     693             :                       ? OUString( "BorderTransparency" )
     694           0 :                       : (m_eGraphicObjectType == LINE_DATA_POINT)
     695             :                       ? OUString( "Transparency" )
     696           0 :                       : OUString( "LineTransparence" );
     697             : 
     698             :                 const XLineTransparenceItem & rItem =
     699             :                     static_cast< const XLineTransparenceItem & >(
     700           0 :                         rItemSet.Get( nWhichId ));
     701             : 
     702           0 :                 if( rItem.QueryValue( aValue ))
     703             :                 {
     704             :                     OSL_ENSURE( ! aValue.isExtractableTo(
     705             :                                     ::getCppuType( reinterpret_cast< const sal_Int16 * >(0))),
     706             :                                 "TransparenceItem QueryValue bug is fixed. Remove hack." );
     707           0 :                     sal_Int32 nValue = 0;
     708           0 :                     if( aValue >>= nValue )
     709             :                     {
     710             :                         OSL_ENSURE( nValue < SAL_MAX_INT16, "Transparency value too large" );
     711           0 :                         sal_Int16 nValueToSet( static_cast< sal_Int16 >( nValue ));
     712           0 :                         aValue <<= nValueToSet;
     713             : 
     714           0 :                         GetPropertySet()->setPropertyValue( aPropName, aValue );
     715           0 :                         bChanged = true;
     716             :                     }
     717             :                     else
     718             :                     {
     719             :                         OSL_FAIL( "Wrong type in Transparency Any" );
     720             :                     }
     721           0 :                 }
     722             :             }
     723           0 :             break;
     724             : 
     725             :         // hack, because QueryValue of XFillTransparenceItem returns sal_Int32
     726             :         // instead of sal_Int16
     727             :         case XATTR_FILLTRANSPARENCE:
     728           0 :             if( lcl_supportsFillProperties( m_eGraphicObjectType ))
     729             :             {
     730             :                 OUString aPropName =
     731           0 :                       (m_eGraphicObjectType == FILLED_DATA_POINT)
     732             :                       ? OUString( "Transparency" )
     733           0 :                       : OUString( "FillTransparence" );
     734             : 
     735             :                 const XFillTransparenceItem & rItem =
     736             :                     static_cast< const XFillTransparenceItem & >(
     737           0 :                         rItemSet.Get( nWhichId ));
     738             : 
     739           0 :                 if( rItem.QueryValue( aValue ))
     740             :                 {
     741             :                     OSL_ENSURE( ! aValue.isExtractableTo(
     742             :                                     ::getCppuType( reinterpret_cast< const sal_Int16 * >(0))),
     743             :                                 "TransparenceItem QueryValue bug is fixed. Remove hack." );
     744           0 :                     sal_Int32 nValue = 0;
     745           0 :                     if( aValue >>= nValue )
     746             :                     {
     747             :                         OSL_ENSURE( nValue < SAL_MAX_INT16, "Transparency value too large" );
     748           0 :                         sal_Int16 nValueToSet( static_cast< sal_Int16 >( nValue ));
     749           0 :                         aValue <<= nValueToSet;
     750             : 
     751           0 :                         GetPropertySet()->setPropertyValue( aPropName, aValue );
     752             :                         // if linear or no transparence is set, delete the gradient
     753             :                         OUString aTransGradPropName =
     754           0 :                               (m_eGraphicObjectType == FILLED_DATA_POINT)
     755             :                               ? OUString( "TransparencyGradientName" )
     756           0 :                               : OUString( "FillTransparenceGradientName" );
     757           0 :                         GetPropertySet()->setPropertyValue(
     758           0 :                             aTransGradPropName, uno::makeAny( OUString() ));
     759             : 
     760           0 :                         bChanged = true;
     761             :                     }
     762             :                     else
     763             :                     {
     764             :                         OSL_FAIL( "Wrong type in Transparency Any" );
     765             :                     }
     766           0 :                 }
     767             :             }
     768           0 :             break;
     769             :     }
     770             : 
     771           0 :     return bChanged;
     772             : }
     773             : 
     774             : } //  namespace wrapper
     775             : } //  namespace chart
     776             : 
     777             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10