diff options
author | Kurt Zenker <kz@openoffice.org> | 2010-08-11 13:35:12 +0200 |
---|---|---|
committer | Kurt Zenker <kz@openoffice.org> | 2010-08-11 13:35:12 +0200 |
commit | 104e5322c5b511105b26b8c811078da66e6d95b9 (patch) | |
tree | 628016c3ea6d6a140f7b9feae22675d39c751988 /starmath/source/symbol.cxx | |
parent | b00d08e6519dc4c560560da95d5d5bfdebe6ea08 (diff) | |
parent | 9382d479d3815d9a073322ad5c8ddfe0dfa13eaa (diff) |
CWS-TOOLING: integrate CWS tl83_OOO330
Notes
Notes:
split repo tag: writer_ooo/OOO330_m4
split repo tag: writer_ooo/OOO330_m5
Diffstat (limited to 'starmath/source/symbol.cxx')
-rw-r--r-- | starmath/source/symbol.cxx | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/starmath/source/symbol.cxx b/starmath/source/symbol.cxx index e248f9726629..5208ce3644ce 100644 --- a/starmath/source/symbol.cxx +++ b/starmath/source/symbol.cxx @@ -290,6 +290,28 @@ void SmSymbolManager::Load() DBG_ERROR( "no symbol set found" ); m_bModified = false; } + + // now add a %i... symbol to the 'iGreek' set for every symbol found in the 'Greek' set. + SmLocalizedSymbolData aLocalizedData; + const String aGreekSymbolSetName( aLocalizedData.GetUiSymbolSetName( A2OU("Greek") ) ); + const SymbolPtrVec_t aGreekSymbols( GetSymbolSet( aGreekSymbolSetName ) ); + String aSymbolSetName( (sal_Unicode) 'i' ); + aSymbolSetName += aGreekSymbolSetName; + size_t nSymbols = aGreekSymbols.size(); + for (size_t i = 0; i < nSymbols; ++i) + { + // make the new symbol a copy but with ITALIC_NORMAL, and add it to iGreek + const SmSym &rSym = *aGreekSymbols[i]; + Font aFont( rSym.GetFace() ); + DBG_ASSERT( aFont.GetItalic() == ITALIC_NONE, "expected Font with ITALIC_NONE, failed." ); + aFont.SetItalic( ITALIC_NORMAL ); + String aSymbolName( (sal_Unicode)'i' ); + aSymbolName += rSym.GetName(); + SmSym aSymbol( aSymbolName, aFont, rSym.GetCharacter(), + aSymbolSetName, TRUE /*bIsPredefined*/ ); + + AddOrReplaceSymbol( aSymbol ); + } } void SmSymbolManager::Save() @@ -314,10 +336,21 @@ void SmSymbolManager::Save() } DBG_ASSERT(pSym - pSymbols == nSaveSymbolCnt, "wrong number of symbols" ); #endif + + // prepare to skip symbols from iGreek on saving + SmLocalizedSymbolData aLocalizedData; + String aSymbolSetName( (sal_Unicode) 'i' ); + aSymbolSetName += aLocalizedData.GetUiSymbolSetName( A2OU("Greek") ); + SymbolPtrVec_t aTmp( GetSymbols() ); std::vector< SmSym > aSymbols; for (size_t i = 0; i < aTmp.size(); ++i) - aSymbols.push_back( *aTmp[i] ); + { + // skip symbols from iGreek set since those symbols always get added + // by computational means in SmSymbolManager::Load + if (aTmp[i]->GetSymbolSetName() != aSymbolSetName) + aSymbols.push_back( *aTmp[i] ); + } rCfg.SetSymbols( aSymbols ); #if 0 delete [] pSymbols; |