diff --git a/editeng/source/editeng/editattr.hxx b/editeng/source/editeng/editattr.hxx index 8e82084..19632c0 100644 --- a/editeng/source/editeng/editattr.hxx +++ b/editeng/source/editeng/editattr.hxx @@ -30,9 +30,9 @@ #define _EDITATTR_HXX #include +#include class SvxFont; -class SvxFontItem; class SvxWeightItem; class SvxPostureItem; class SvxShadowedItem; diff --git a/editeng/source/editeng/editdoc.cxx b/editeng/source/editeng/editdoc.cxx index 0161eaa0..53e293d 100644 --- a/editeng/source/editeng/editdoc.cxx +++ b/editeng/source/editeng/editdoc.cxx @@ -2169,33 +2169,36 @@ bool CharAttribList::DbgCheckAttribs() const } #endif -SvxFontTable::SvxFontTable() +sal_uLong SvxFontTable::GetId( const SvxFontItem& rFontItem ) const { + for(FontItemMap::const_iterator it = maFontItemMap.begin(); it != maFontItemMap.end(); ++it) + { + if ( *it->second == rFontItem ) + return it->first; + } + DBG_WARNING( "Font not found: GetId()" ); + return 0; } -SvxFontTable::~SvxFontTable() +void SvxFontTable::Insert( sal_uLong nIdx, SvxFontItem *pFontItem) { - SvxFontItem* pItem = First(); - while( pItem ) - { - delete pItem; - pItem = Next(); - } + maFontItemMap.insert( nIdx, pFontItem ); } -sal_uLong SvxFontTable::GetId( const SvxFontItem& rFontItem ) +int SvxFontTable::Count() const { - SvxFontItem* pItem = First(); - while ( pItem ) - { - if ( *pItem == rFontItem ) - return GetCurKey(); - pItem = Next(); - } - DBG_WARNING( "Font not found: GetId()" ); - return 0; + return maFontItemMap.size(); } +SvxFontItem* SvxFontTable::Get( sal_uLong nIdx ) +{ + FontItemMap::iterator it = maFontItemMap.find( nIdx ); + if (it == maFontItemMap.end() ) + return NULL; + return it->second; +} + + SvxColorList::SvxColorList() { } diff --git a/editeng/source/editeng/editdoc.hxx b/editeng/source/editeng/editdoc.hxx index 2b35c3e..6a14fdf 100644 --- a/editeng/source/editeng/editdoc.hxx +++ b/editeng/source/editeng/editdoc.hxx @@ -39,8 +39,8 @@ #include #include #include - #include +#include "boost/ptr_container/ptr_map.hpp" class ImpEditEngine; class SvxTabStop; @@ -141,15 +141,20 @@ SV_DECL_PTRARR( ContentInfoArray, ContentAttribsInfoPtr, 1 ) // ---------------------------------------------------------------------- // class SvxFontTable // ---------------------------------------------------------------------- -DECLARE_TABLE( DummyFontTable, SvxFontItem* ) -class SvxFontTable : public DummyFontTable +class SvxFontTable { +private: + typedef boost::ptr_map FontItemMap; + FontItemMap maFontItemMap; public: - SvxFontTable(); - ~SvxFontTable(); + SvxFontTable() {} + ~SvxFontTable() {} - sal_uLong GetId( const SvxFontItem& rFont ); + sal_uLong GetId( const SvxFontItem& rFont ) const; + void Insert( sal_uLong nIdx, SvxFontItem *pFontItem ); + int Count() const; + SvxFontItem* Get( sal_uLong nIdx ); }; // ----------------------------------------------------------------------