diff options
author | Miklos Vajna <vmiklos@frugalware.org> | 2011-07-27 12:15:42 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@frugalware.org> | 2011-07-29 17:32:40 +0200 |
commit | 3b47c0788e5d11094a893ea8b5995de7dcaa6e6b (patch) | |
tree | 1b94c566b9b14e624acdee98e88220e9e43b6c0b /writerfilter | |
parent | 32a8777fd8efc84d3bbfdc95b83ab3e4965c8863 (diff) |
Move font and style table out of rtf parser state
Those tables are global, so they belong to the document, not to the
parser state.
Diffstat (limited to 'writerfilter')
-rw-r--r-- | writerfilter/source/rtftok/rtfdocumentimpl.cxx | 30 | ||||
-rw-r--r-- | writerfilter/source/rtftok/rtfdocumentimpl.hxx | 13 |
2 files changed, 22 insertions, 21 deletions
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx index 3b369bd06283..ab6d274f0755 100644 --- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx +++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx @@ -270,7 +270,11 @@ RTFDocumentImpl::RTFDocumentImpl(uno::Reference<uno::XComponentContext> const& x m_aObjectSprms(), m_aObjectAttributes(), m_bObject(false), - m_pObjectData(0) + m_pObjectData(0), + m_aFontTableEntries(), + m_nCurrentFontIndex(0), + m_aStyleTableEntries(), + m_nCurrentStyleIndex(0) { OSL_ASSERT(xInputStream.is()); m_pInStream = utl::UcbStreamHelper::CreateStream(xInputStream, sal_True); @@ -1670,7 +1674,7 @@ int RTFDocumentImpl::dispatchValue(RTFKeyword nKeyword, int nParam) { case RTF_F: if (m_aStates.top().nDestinationState == DESTINATION_FONTENTRY) - m_aStates.top().nCurrentFontIndex = nParam; + m_nCurrentFontIndex = nParam; else { m_aStates.top().aCharacterSprms.push_back(make_pair(NS_sprm::LN_CRgFtc0, pIntValue)); @@ -1699,7 +1703,7 @@ int RTFDocumentImpl::dispatchValue(RTFKeyword nKeyword, int nParam) if (i == nRTFEncodings) // not found return 0; - m_aFontEncodings[m_aStates.top().nCurrentFontIndex] = rtl_getTextEncodingFromWindowsCodePage(aRTFEncodings[i].codepage); + m_aFontEncodings[m_nCurrentFontIndex] = rtl_getTextEncodingFromWindowsCodePage(aRTFEncodings[i].codepage); } break; case RTF_CF: @@ -1711,7 +1715,7 @@ int RTFDocumentImpl::dispatchValue(RTFKeyword nKeyword, int nParam) case RTF_S: if (m_aStates.top().nDestinationState == DESTINATION_STYLEENTRY) { - m_aStates.top().nCurrentStyleIndex = nParam; + m_nCurrentStyleIndex = nParam; m_aStates.top().aTableAttributes.push_back(make_pair(NS_rtf::LN_ISTD, pIntValue)); } else @@ -1720,7 +1724,7 @@ int RTFDocumentImpl::dispatchValue(RTFKeyword nKeyword, int nParam) case RTF_CS: if (m_aStates.top().nDestinationState == DESTINATION_STYLEENTRY) { - m_aStates.top().nCurrentStyleIndex = nParam; + m_nCurrentStyleIndex = nParam; m_aStates.top().aTableAttributes.push_back(make_pair(NS_rtf::LN_ISTD, pIntValue)); RTFValue::Pointer_t pValue(new RTFValue(2)); m_aStates.top().aTableAttributes.push_back(make_pair(NS_rtf::LN_SGC, pValue)); // character style @@ -2300,12 +2304,12 @@ int RTFDocumentImpl::popState() if (m_aStates.top().nDestinationState == DESTINATION_FONTTABLE) { - writerfilter::Reference<Table>::Pointer_t const pTable(new RTFReferenceTable(m_aStates.top().aFontTableEntries)); + writerfilter::Reference<Table>::Pointer_t const pTable(new RTFReferenceTable(m_aFontTableEntries)); Mapper().table(NS_rtf::LN_FONTTABLE, pTable); } else if (m_aStates.top().nDestinationState == DESTINATION_STYLESHEET) { - writerfilter::Reference<Table>::Pointer_t const pTable(new RTFReferenceTable(m_aStates.top().aStyleTableEntries)); + writerfilter::Reference<Table>::Pointer_t const pTable(new RTFReferenceTable(m_aStyleTableEntries)); Mapper().table(NS_rtf::LN_STYLESHEET, pTable); } else if (m_aStates.top().nDestinationState == DESTINATION_LISTOVERRIDETABLE) @@ -2326,7 +2330,7 @@ int RTFDocumentImpl::popState() writerfilter::Reference<Properties>::Pointer_t const pProp( new RTFReferenceProperties(m_aStates.top().aTableAttributes, m_aStates.top().aTableSprms) ); - aEntry.first = m_aStates.top().nCurrentFontIndex; + aEntry.first = m_nCurrentFontIndex; aEntry.second = pProp; } else if (m_aStates.top().nDestinationState == DESTINATION_STYLEENTRY) @@ -2338,7 +2342,7 @@ int RTFDocumentImpl::popState() writerfilter::Reference<Properties>::Pointer_t const pProp( new RTFReferenceProperties(mergeAttributes(), mergeSprms()) ); - aEntry.first = m_aStates.top().nCurrentStyleIndex; + aEntry.first = m_nCurrentStyleIndex; aEntry.second = pProp; } else if (m_aStates.top().nDestinationState == DESTINATION_LISTENTRY) @@ -2643,9 +2647,9 @@ int RTFDocumentImpl::popState() m_nGroup--; if (bFontEntryEnd) - m_aStates.top().aFontTableEntries.insert(make_pair(aEntry.first, aEntry.second)); + m_aFontTableEntries.insert(make_pair(aEntry.first, aEntry.second)); else if (bStyleEntryEnd) - m_aStates.top().aStyleTableEntries.insert(make_pair(aEntry.first, aEntry.second)); + m_aStyleTableEntries.insert(make_pair(aEntry.first, aEntry.second)); // list table else if (bListEntryEnd) { @@ -2742,11 +2746,7 @@ RTFParserState::RTFParserState() aTableCellSprms(), aTableCellAttributes(), aTabAttributes(), - aFontTableEntries(), - nCurrentFontIndex(0), aCurrentColor(), - aStyleTableEntries(), - nCurrentStyleIndex(0), nCurrentEncoding(0), nUc(1), nCharsToSkip(0), diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.hxx b/writerfilter/source/rtftok/rtfdocumentimpl.hxx index 808e3a9d3270..8140ec3abdbf 100644 --- a/writerfilter/source/rtftok/rtfdocumentimpl.hxx +++ b/writerfilter/source/rtftok/rtfdocumentimpl.hxx @@ -204,14 +204,8 @@ namespace writerfilter { // reset by tx RTFSprms_t aTabAttributes; - RTFReferenceTable::Entries_t aFontTableEntries; - int nCurrentFontIndex; - RTFColorTableEntry aCurrentColor; - RTFReferenceTable::Entries_t aStyleTableEntries; - int nCurrentStyleIndex; - rtl_TextEncoding nCurrentEncoding; /// Current \uc value. @@ -373,6 +367,13 @@ namespace writerfilter { bool m_bObject; /// Contents of the objdata group, stored here so we can delete it when we leave the object group. SvStream* m_pObjectData; + + RTFReferenceTable::Entries_t m_aFontTableEntries; + int m_nCurrentFontIndex; + + RTFReferenceTable::Entries_t m_aStyleTableEntries; + int m_nCurrentStyleIndex; + }; } // namespace rtftok } // namespace writerfilter |