summaryrefslogtreecommitdiff
path: root/starmath
diff options
context:
space:
mode:
authorLuboš Luňák <l.lunak@suse.cz>2011-08-30 15:28:59 +0200
committerLuboš Luňák <l.lunak@suse.cz>2011-08-30 16:56:37 +0200
commit198b1c528c6a55adbb84c4e97def4b0b6bccd5a7 (patch)
tree719f6c20eee4720fd23388ec0cdee7a1e16c1130 /starmath
parent41fae7dc55878a49571888aff3c29a36bddb834d (diff)
helper to simplify horrible string conversions
Diffstat (limited to 'starmath')
-rw-r--r--starmath/source/ooxml.cxx34
1 files changed, 15 insertions, 19 deletions
diff --git a/starmath/source/ooxml.cxx b/starmath/source/ooxml.cxx
index c5acb47987cf..992285cfca3f 100644
--- a/starmath/source/ooxml.cxx
+++ b/starmath/source/ooxml.cxx
@@ -421,18 +421,23 @@ void SmOoxml::HandleRoot( const SmRootNode* pNode, int nLevel )
m_pSerializer->endElementNS( XML_m, XML_rad );
}
+static rtl::OString mathSymbolToString( const SmNode* node )
+{
+ OSL_ASSERT( node->GetType() == NMATH && static_cast< const SmTextNode* >( node )->GetText().Len() == 1 );
+ sal_Unicode chr = Convert( static_cast< const SmTextNode* >( node )->GetText().GetChar( 0 ));
+ return rtl::OUStringToOString( rtl::OUString( chr ), RTL_TEXTENCODING_UTF8 );
+}
+
void SmOoxml::HandleOperator( const SmOperNode* pNode, int nLevel )
{
fprintf( stderr, "OPER %d\n", pNode->GetToken().eType );
const SmSubSupNode* subsup = pNode->GetSubNode( 0 )->GetType() == NSUBSUP
? static_cast< const SmSubSupNode* >( pNode->GetSubNode( 0 )) : NULL;
const SmNode* operation = subsup != NULL ? subsup->GetBody() : pNode->GetSubNode( 0 );
- OSL_ASSERT( operation->GetType() == NMATH && static_cast< const SmTextNode* >( operation )->GetText().Len() == 1 );
- sal_Unicode chr = Convert( static_cast< const SmTextNode* >( operation )->GetText().GetChar( 0 ));
m_pSerializer->startElementNS( XML_m, XML_nary, FSEND );
m_pSerializer->startElementNS( XML_m, XML_naryPr, FSEND );
- rtl::OString chrValue = rtl::OUStringToOString( rtl::OUString( chr ), RTL_TEXTENCODING_UTF8 );
- m_pSerializer->singleElementNS( XML_m, XML_char, FSNS( XML_m, XML_val ), chrValue.getStr(), FSEND );
+ m_pSerializer->singleElementNS( XML_m, XML_char,
+ FSNS( XML_m, XML_val ), mathSymbolToString( operation ).getStr(), FSEND );
if( subsup == NULL || subsup->GetSubSup( CSUB ) == NULL )
m_pSerializer->singleElementNS( XML_m, XML_subHide, FSNS( XML_m, XML_val ), "1", FSEND );
if( subsup == NULL || subsup->GetSubSup( CSUP ) == NULL )
@@ -555,12 +560,8 @@ void SmOoxml::HandleBrace( const SmBraceNode* pNode, int nLevel )
{
m_pSerializer->startElementNS( XML_m, XML_d, FSEND );
m_pSerializer->startElementNS( XML_m, XML_dPr, FSEND );
- const SmMathSymbolNode* opening = pNode->OpeningBrace();
- OSL_ASSERT( static_cast< const SmTextNode* >( opening )->GetText().Len() == 1 );
- sal_Unicode chr = Convert( static_cast< const SmTextNode* >( opening )->GetText().GetChar( 0 ));
- rtl::OString chrValue = rtl::OUStringToOString( rtl::OUString( chr ), RTL_TEXTENCODING_UTF8 );
- m_pSerializer->singleElementNS( XML_m, XML_begChr, FSNS( XML_m, XML_val ), chrValue.getStr(), FSEND );
-
+ m_pSerializer->singleElementNS( XML_m, XML_begChr,
+ FSNS( XML_m, XML_val ), mathSymbolToString( pNode->OpeningBrace()).getStr(), FSEND );
std::vector< const SmNode* > subnodes;
if( pNode->Body()->GetType() == NBRACEBODY )
{
@@ -574,10 +575,8 @@ void SmOoxml::HandleBrace( const SmBraceNode* pNode, int nLevel )
const SmMathSymbolNode* math = static_cast< const SmMathSymbolNode* >( subnode );
if( !separatorWritten )
{
- OSL_ASSERT( static_cast< const SmTextNode* >( math )->GetText().Len() == 1 );
- sal_Unicode chr3 = Convert( static_cast< const SmTextNode* >( math )->GetText().GetChar( 0 ));
- rtl::OString chrValue3 = rtl::OUStringToOString( rtl::OUString( chr3 ), RTL_TEXTENCODING_UTF8 );
- m_pSerializer->singleElementNS( XML_m, XML_sepChr, FSNS( XML_m, XML_val ), chrValue3.getStr(), FSEND );
+ m_pSerializer->singleElementNS( XML_m, XML_sepChr,
+ FSNS( XML_m, XML_val ), mathSymbolToString( math ).getStr(), FSEND );
separatorWritten = true;
}
}
@@ -587,11 +586,8 @@ void SmOoxml::HandleBrace( const SmBraceNode* pNode, int nLevel )
}
else
subnodes.push_back( pNode->Body());
- const SmMathSymbolNode* closing = pNode->ClosingBrace();
- OSL_ASSERT( static_cast< const SmTextNode* >( closing )->GetText().Len() == 1 );
- sal_Unicode chr2 = Convert( static_cast< const SmTextNode* >( closing )->GetText().GetChar( 0 ));
- rtl::OString chrValue2 = rtl::OUStringToOString( rtl::OUString( chr2 ), RTL_TEXTENCODING_UTF8 );
- m_pSerializer->singleElementNS( XML_m, XML_endChr, FSNS( XML_m, XML_val ), chrValue2.getStr(), FSEND );
+ m_pSerializer->singleElementNS( XML_m, XML_endChr,
+ FSNS( XML_m, XML_val ), mathSymbolToString( pNode->ClosingBrace()).getStr(), FSEND );
m_pSerializer->endElementNS( XML_m, XML_dPr );
for( unsigned int i = 0; i < subnodes.size(); ++i )
{