summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
Diffstat (limited to 'writerfilter')
-rw-r--r--writerfilter/source/dmapper/DomainMapper.cxx51
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx6
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.hxx19
-rw-r--r--writerfilter/source/ooxml/model.xml1
4 files changed, 38 insertions, 39 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index 25c3cd543fb4..4493b6886881 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -253,37 +253,10 @@ void DomainMapper::lcl_attribute(Id nName, Value & val)
break;
case NS_ooxml::LN_CT_Sym_char:
- if( m_pImpl->GetTopContext() && m_pImpl->GetTopContext()->GetFootnote().is())
- {
- m_pImpl->GetTopContext()->GetFootnote()->setLabel(OUString( sal_Unicode(nIntValue)));
- break;
- }
- else //it's a _real_ symbol
- {
- m_pImpl->SetSymbolData(nIntValue);
- }
+ m_pImpl->SetSymbolChar(nIntValue);
break;
case NS_ooxml::LN_CT_Sym_font:
- //the footnote symbol and font are provided after the footnote is already inserted
- if( m_pImpl->GetTopContext() && m_pImpl->GetTopContext()->GetFootnote().is())
- {
- uno::Reference< beans::XPropertySet > xAnchorProps( m_pImpl->GetTopContext()->GetFootnote()->getAnchor(), uno::UNO_QUERY );
- xAnchorProps->setPropertyValue(
- getPropertyName( PROP_CHAR_FONT_NAME),
- uno::makeAny( sStringValue ));
- }
- else //a real symbol
- if (m_pImpl->GetTopContext())
- {
- m_pImpl->GetTopContext()->Insert(PROP_CHAR_FONT_NAME, uno::makeAny( sStringValue ));
- /*
- * In case of symbol, symbol character get imported first and then font of symbols.
- * So we are storing symbol character and when we parse symbol font then create UNO object for text.
- */
- sal_Int32 symboldata = m_pImpl->GetSymbolData();
- utext( reinterpret_cast < const sal_uInt8 * >( &(symboldata) ), 1 );
- }
-
+ m_pImpl->SetSymbolFont(sStringValue);
break;
case NS_ooxml::LN_CT_Underline_val:
handleUnderlineType(nIntValue, m_pImpl->GetTopContext());
@@ -2551,6 +2524,26 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext )
m_pImpl->disableInteropGrabBag();
}
break;
+ case NS_ooxml::LN_EG_RunInnerContent_sym:
+ {
+ resolveSprmProps(*this, rSprm);
+ SymbolData aSymbolData = m_pImpl->GetSymbolData();
+ uno::Any aVal = uno::makeAny( aSymbolData.sFont );
+ if( rContext->GetFootnote().is())
+ {
+ uno::Reference< beans::XPropertySet > xAnchorProps( rContext->GetFootnote()->getAnchor(), uno::UNO_QUERY );
+ xAnchorProps->setPropertyValue( getPropertyName( PROP_CHAR_FONT_NAME), aVal);
+ rContext->GetFootnote()->setLabel(OUString( aSymbolData.cSymbol ));
+ }
+ else //it's a _real_ symbol
+ {
+ rContext->Insert(PROP_CHAR_FONT_NAME, aVal);
+ rContext->Insert(PROP_CHAR_FONT_NAME_ASIAN, aVal);
+ rContext->Insert(PROP_CHAR_FONT_NAME_COMPLEX, aVal);
+ utext( reinterpret_cast < const sal_uInt8 * >( &(aSymbolData.cSymbol) ), 1 );
+ }
+ }
+ break;
default:
{
#ifdef DEBUG_WRITERFILTER
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 473e47dd876d..ad96b2d5a87a 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -198,7 +198,6 @@ DomainMapper_Impl::DomainMapper_Impl(
m_bTOCPageRef(false),
m_bStartGenericField(false),
m_bTextInserted(false),
- m_nSymboldata(-1),
m_pLastSectionContext( ),
m_pLastCharacterContext(),
m_nCurrentTabStopIndex( 0 ),
@@ -426,11 +425,6 @@ void DomainMapper_Impl::RemoveLastParagraph( )
}
}
-void DomainMapper_Impl::SetSymbolData( sal_Int32 nSymbolData )
-{
- m_nSymboldata = nSymbolData;
-}
-
void DomainMapper_Impl::SetIsLastSectionGroup( bool bIsLast )
{
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
index 101445a4039a..4b2e638ce759 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
@@ -313,6 +313,16 @@ struct FloatingTableInfo
css::uno::Any getPropertyValue(const OUString &propertyName);
};
+struct SymbolData
+{
+ sal_Unicode cSymbol;
+ OUString sFont;
+ SymbolData():
+ cSymbol(),
+ sFont()
+ { }
+};
+
class DomainMapper;
class DomainMapper_Impl
{
@@ -362,8 +372,7 @@ private:
OUString m_sCurrentBkmkName;
_PageMar m_aPageMargins;
- sal_Int32 m_nSymboldata;
-
+ SymbolData m_aSymbolData;
// TableManagers are stacked: one for each stream to avoid any confusion
std::stack< std::shared_ptr< DomainMapperTableManager > > m_aTableManagers;
@@ -500,8 +509,10 @@ public:
void SetParaSectpr(bool bParaSectpr);
bool GetParaSectpr() { return m_bParaSectpr;}
- void SetSymbolData( sal_Int32 nSymbolData );
- sal_Int32 GetSymbolData() { return m_nSymboldata;}
+ void SetSymbolChar( sal_Int32 nSymbol) { m_aSymbolData.cSymbol = sal_Unicode(nSymbol); }
+ void SetSymbolFont( OUString &rName ) { m_aSymbolData.sFont = rName; }
+ const SymbolData & GetSymbolData() { return m_aSymbolData;}
+
/// Setter method for m_bSdt.
void SetSdt(bool bSdt);
/// Getter method for m_bSdt.
diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml
index 9a8c4d07af77..860655eaa320 100644
--- a/writerfilter/source/ooxml/model.xml
+++ b/writerfilter/source/ooxml/model.xml
@@ -17840,6 +17840,7 @@
<resource name="CT_Sym" resource="Properties">
<attribute name="font" tokenid="ooxml:CT_Sym_font"/>
<attribute name="char" tokenid="ooxml:CT_Sym_char"/>
+ <action name="end" tokenid="ooxml:EG_RunInnerContent_sym" action="sendPropertiesWithId" sendtokenid="ooxml:EG_RunInnerContent_sym"/>
</resource>
<resource name="CT_Text" resource="Stream">
<attribute name="xml:space" tokenid="ooxml:CT_Text_space"/>