| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| #ifndef CHART_PROPERTYHELPER_HXX |
| #define CHART_PROPERTYHELPER_HXX |
| |
| #include <com/sun/star/beans/XPropertySet.hpp> |
| #include <com/sun/star/beans/Property.hpp> |
| #include <com/sun/star/beans/PropertyValue.hpp> |
| #include <com/sun/star/uno/Any.hxx> |
| #include <com/sun/star/lang/XMultiServiceFactory.hpp> |
| #include <comphelper/property.hxx> |
| #include <map> |
| #include "charttoolsdllapi.hxx" |
| |
| namespace chart |
| { |
| |
| typedef int tPropertyValueMapKey; |
| |
| typedef ::std::map< tPropertyValueMapKey, ::com::sun::star::uno::Any > |
| tPropertyValueMap; |
| |
| namespace PropertyHelper |
| { |
| |
| /** adds a line dash with a unique name to the gradient obtained by the given |
| factory. |
| |
| @return The name used for storing this element in the table |
| */ |
| OOO_DLLPUBLIC_CHARTTOOLS ::rtl::OUString addLineDashUniqueNameToTable( |
| const ::com::sun::star::uno::Any & rValue, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::lang::XMultiServiceFactory > & xFact, |
| const ::rtl::OUString & rPreferredName ); |
| |
| /** adds a gradient with a unique name to the gradient obtained by the given |
| factory. |
| |
| @return The name used for storing this element in the table |
| */ |
| OOO_DLLPUBLIC_CHARTTOOLS ::rtl::OUString addGradientUniqueNameToTable( |
| const ::com::sun::star::uno::Any & rValue, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::lang::XMultiServiceFactory > & xFact, |
| const ::rtl::OUString & rPreferredName ); |
| |
| /** adds a transparency gradient with a unique name to the gradient obtained |
| by the given factory. |
| |
| @return The name used for storing this element in the table |
| */ |
| OOO_DLLPUBLIC_CHARTTOOLS |
| ::rtl::OUString addTransparencyGradientUniqueNameToTable( |
| const ::com::sun::star::uno::Any & rValue, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::lang::XMultiServiceFactory > & xFact, |
| const ::rtl::OUString & rPreferredName ); |
| |
| /** adds a hatch with a unique name to the gradient obtained by the given |
| factory. |
| |
| @return The name used for storing this element in the table |
| */ |
| OOO_DLLPUBLIC_CHARTTOOLS ::rtl::OUString addHatchUniqueNameToTable( |
| const ::com::sun::star::uno::Any & rValue, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::lang::XMultiServiceFactory > & xFact, |
| const ::rtl::OUString & rPreferredName ); |
| |
| /** adds a bitmap with a unique name to the gradient obtained by the given |
| factory. |
| |
| @return The name used for storing this element in the table |
| */ |
| OOO_DLLPUBLIC_CHARTTOOLS ::rtl::OUString addBitmapUniqueNameToTable( |
| const ::com::sun::star::uno::Any & rValue, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::lang::XMultiServiceFactory > & xFact, |
| const ::rtl::OUString & rPreferredName ); |
| |
| // -------------------------------------------------------------------------------- |
| |
| /** Set a property to a certain value in the given map. This works for |
| properties that are already set, and those which are not yet in the map. |
| |
| @param any is the value encapsulated in the variant type Any |
| */ |
| OOO_DLLPUBLIC_CHARTTOOLS |
| void setPropertyValueAny( tPropertyValueMap & rOutMap, tPropertyValueMapKey key, |
| const ::com::sun::star::uno::Any & rAny ); |
| |
| /** Set a property to a certain value in the given map. This works for |
| properties that are already set, and those which are not yet in the map. |
| |
| @param value is the value of type Value that will be put into a variant type |
| Any before set in the property map. |
| */ |
| template< typename Value > |
| void setPropertyValue( tPropertyValueMap & rOutMap, tPropertyValueMapKey key, const Value & value ) |
| { |
| setPropertyValueAny( rOutMap, key, ::com::sun::star::uno::makeAny( value )); |
| } |
| |
| template<> |
| void setPropertyValue< ::com::sun::star::uno::Any >( tPropertyValueMap & rOutMap, tPropertyValueMapKey key, const ::com::sun::star::uno::Any & rAny ); |
| |
| OOO_DLLPUBLIC_CHARTTOOLS void setPropertyValueDefaultAny( tPropertyValueMap & rOutMap, tPropertyValueMapKey key, const ::com::sun::star::uno::Any & rAny ); |
| |
| /** Calls setPropertyValue() but asserts that the given property hasn't been set |
| before. |
| */ |
| template< typename Value > |
| void setPropertyValueDefault( tPropertyValueMap & rOutMap, tPropertyValueMapKey key, const Value & value ) |
| { |
| setPropertyValueDefaultAny( rOutMap, key, ::com::sun::star::uno::makeAny( value )); |
| } |
| |
| /** Calls setPropertyValue() but asserts that the given property hasn't been set |
| before. |
| */ |
| template<> |
| void setPropertyValueDefault< ::com::sun::star::uno::Any >( tPropertyValueMap & rOutMap, tPropertyValueMapKey key, const ::com::sun::star::uno::Any & rAny ); |
| |
| /** Calls setPropertyValueDefault() with an empty Any as value |
| */ |
| OOO_DLLPUBLIC_CHARTTOOLS void setEmptyPropertyValueDefault( tPropertyValueMap & rOutMap, tPropertyValueMapKey key ); |
| |
| |
| } // namespace PropertyHelper |
| |
| // ================================================================================ |
| |
| struct OOO_DLLPUBLIC_CHARTTOOLS PropertyNameLess |
| { |
| inline bool operator() ( const ::com::sun::star::beans::Property & first, |
| const ::com::sun::star::beans::Property & second ) |
| { |
| return ( first.Name.compareTo( second.Name ) < 0 ); |
| } |
| }; |
| |
| struct OOO_DLLPUBLIC_CHARTTOOLS PropertyLess : public ::std::binary_function< |
| ::com::sun::star::beans::Property, |
| ::com::sun::star::beans::Property, |
| bool > |
| { |
| bool operator() ( const ::com::sun::star::beans::Property & rFirst, |
| const ::com::sun::star::beans::Property & rSecond ) |
| { |
| return ( rFirst.Name.compareTo( rSecond.Name ) < 0 ); |
| } |
| }; |
| |
| struct OOO_DLLPUBLIC_CHARTTOOLS PropertyValueNameEquals : public ::std::unary_function< ::com::sun::star::beans::PropertyValue, bool > |
| { |
| explicit PropertyValueNameEquals( const ::rtl::OUString & rName ) : |
| m_aName( rName ) |
| {} |
| |
| bool operator() ( const ::com::sun::star::beans::PropertyValue & rPropValue ) |
| { |
| return rPropValue.Name.equals( m_aName ); |
| } |
| |
| private: |
| ::rtl::OUString m_aName; |
| }; |
| |
| } // namespace chart |
| |
| // CHART_PROPERTYHELPER_HXX |
| #endif |