implement RTF_SECT and RTF_SECTD
This commit is contained in:
parent
ffddfa7c55
commit
3430986b5c
2 changed files with 34 additions and 4 deletions
|
@ -161,6 +161,7 @@ RTFDocumentImpl::RTFDocumentImpl(uno::Reference<uno::XComponentContext> const& x
|
||||||
m_aColorTable(),
|
m_aColorTable(),
|
||||||
m_bFirstRun(true),
|
m_bFirstRun(true),
|
||||||
m_bNeedPap(false),
|
m_bNeedPap(false),
|
||||||
|
m_bNeedSep(false),
|
||||||
m_aListTableSprms(),
|
m_aListTableSprms(),
|
||||||
m_xStorage(),
|
m_xStorage(),
|
||||||
m_aBuffer(),
|
m_aBuffer(),
|
||||||
|
@ -427,9 +428,6 @@ void RTFDocumentImpl::text(OUString& rString)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
writerfilter::Reference<Properties>::Pointer_t const pCharacterProperties(
|
|
||||||
new RTFReferenceProperties(m_aStates.top().aCharacterAttributes, m_aStates.top().aCharacterSprms)
|
|
||||||
);
|
|
||||||
writerfilter::Reference<Properties>::Pointer_t const pParagraphProperties(
|
writerfilter::Reference<Properties>::Pointer_t const pParagraphProperties(
|
||||||
new RTFReferenceProperties(m_aStates.top().aParagraphAttributes, m_aStates.top().aParagraphSprms)
|
new RTFReferenceProperties(m_aStates.top().aParagraphAttributes, m_aStates.top().aParagraphSprms)
|
||||||
);
|
);
|
||||||
|
@ -453,6 +451,18 @@ void RTFDocumentImpl::text(OUString& rString)
|
||||||
}
|
}
|
||||||
m_bNeedPap = false;
|
m_bNeedPap = false;
|
||||||
}
|
}
|
||||||
|
if (m_bNeedSep)
|
||||||
|
{
|
||||||
|
writerfilter::Reference<Properties>::Pointer_t const pProperties(
|
||||||
|
new RTFReferenceProperties(m_aStates.top().aSectionAttributes, m_aStates.top().aSectionSprms)
|
||||||
|
);
|
||||||
|
Mapper().props(pProperties);
|
||||||
|
Mapper().endParagraphGroup();
|
||||||
|
Mapper().endSectionGroup();
|
||||||
|
Mapper().startSectionGroup();
|
||||||
|
Mapper().startParagraphGroup();
|
||||||
|
m_bNeedSep = false;
|
||||||
|
}
|
||||||
|
|
||||||
if (m_aStates.top().nDestinationState == DESTINATION_FIELDINSTRUCTION)
|
if (m_aStates.top().nDestinationState == DESTINATION_FIELDINSTRUCTION)
|
||||||
{
|
{
|
||||||
|
@ -471,7 +481,12 @@ void RTFDocumentImpl::text(OUString& rString)
|
||||||
if (m_aStates.top().nDestinationState == DESTINATION_NORMAL || m_aStates.top().nDestinationState == DESTINATION_FIELDRESULT)
|
if (m_aStates.top().nDestinationState == DESTINATION_NORMAL || m_aStates.top().nDestinationState == DESTINATION_FIELDRESULT)
|
||||||
{
|
{
|
||||||
if (!m_bTable)
|
if (!m_bTable)
|
||||||
Mapper().props(pCharacterProperties);
|
{
|
||||||
|
writerfilter::Reference<Properties>::Pointer_t const pProperties(
|
||||||
|
new RTFReferenceProperties(m_aStates.top().aCharacterAttributes, m_aStates.top().aCharacterSprms)
|
||||||
|
);
|
||||||
|
Mapper().props(pProperties);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
RTFValue::Pointer_t pValue(new RTFValue(m_aStates.top().aCharacterAttributes, m_aStates.top().aCharacterSprms));
|
RTFValue::Pointer_t pValue(new RTFValue(m_aStates.top().aCharacterAttributes, m_aStates.top().aCharacterSprms));
|
||||||
|
@ -624,6 +639,9 @@ int RTFDocumentImpl::dispatchSymbol(RTFKeyword nKeyword)
|
||||||
m_bNeedPap = true;
|
m_bNeedPap = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case RTF_SECT:
|
||||||
|
m_bNeedSep = true;
|
||||||
|
break;
|
||||||
case RTF_BACKSLASH:
|
case RTF_BACKSLASH:
|
||||||
if (m_aStates.top().nDestinationState == DESTINATION_FIELDINSTRUCTION)
|
if (m_aStates.top().nDestinationState == DESTINATION_FIELDINSTRUCTION)
|
||||||
m_aStates.top().aFieldInstruction.append('\\');
|
m_aStates.top().aFieldInstruction.append('\\');
|
||||||
|
@ -840,6 +858,10 @@ int RTFDocumentImpl::dispatchFlag(RTFKeyword nKeyword)
|
||||||
m_aStates.top().aParagraphAttributes = m_aDefaultState.aParagraphAttributes;
|
m_aStates.top().aParagraphAttributes = m_aDefaultState.aParagraphAttributes;
|
||||||
m_bTable = false;
|
m_bTable = false;
|
||||||
break;
|
break;
|
||||||
|
case RTF_SECTD:
|
||||||
|
m_aStates.top().aSectionSprms = m_aDefaultState.aSectionSprms;
|
||||||
|
m_aStates.top().aSectionAttributes = m_aDefaultState.aSectionAttributes;
|
||||||
|
break;
|
||||||
case RTF_TROWD:
|
case RTF_TROWD:
|
||||||
m_aStates.top().aTableRowSprms = m_aDefaultState.aTableRowSprms;
|
m_aStates.top().aTableRowSprms = m_aDefaultState.aTableRowSprms;
|
||||||
m_aStates.top().aTableRowAttributes = m_aDefaultState.aTableRowAttributes;
|
m_aStates.top().aTableRowAttributes = m_aDefaultState.aTableRowAttributes;
|
||||||
|
@ -1936,6 +1958,8 @@ RTFParserState::RTFParserState()
|
||||||
aCharacterAttributes(),
|
aCharacterAttributes(),
|
||||||
aParagraphSprms(),
|
aParagraphSprms(),
|
||||||
aParagraphAttributes(),
|
aParagraphAttributes(),
|
||||||
|
aSectionSprms(),
|
||||||
|
aSectionAttributes(),
|
||||||
aTableRowSprms(),
|
aTableRowSprms(),
|
||||||
aTableRowAttributes(),
|
aTableRowAttributes(),
|
||||||
aTableCellSprms(),
|
aTableCellSprms(),
|
||||||
|
|
|
@ -109,6 +109,9 @@ namespace writerfilter {
|
||||||
// reset by pard
|
// reset by pard
|
||||||
RTFSprms_t aParagraphSprms;
|
RTFSprms_t aParagraphSprms;
|
||||||
RTFSprms_t aParagraphAttributes;
|
RTFSprms_t aParagraphAttributes;
|
||||||
|
// reset by sectd
|
||||||
|
RTFSprms_t aSectionSprms;
|
||||||
|
RTFSprms_t aSectionAttributes;
|
||||||
// reset by trowd
|
// reset by trowd
|
||||||
RTFSprms_t aTableRowSprms;
|
RTFSprms_t aTableRowSprms;
|
||||||
RTFSprms_t aTableRowAttributes;
|
RTFSprms_t aTableRowAttributes;
|
||||||
|
@ -212,7 +215,10 @@ namespace writerfilter {
|
||||||
/// Color index <-> RGB color value map
|
/// Color index <-> RGB color value map
|
||||||
std::vector<sal_uInt32> m_aColorTable;
|
std::vector<sal_uInt32> m_aColorTable;
|
||||||
bool m_bFirstRun;
|
bool m_bFirstRun;
|
||||||
|
/// If paragraph properties should be emitted on next run.
|
||||||
bool m_bNeedPap;
|
bool m_bNeedPap;
|
||||||
|
/// If section properties should be emitted on next run.
|
||||||
|
bool m_bNeedSep;
|
||||||
/// The list table and list override table combined.
|
/// The list table and list override table combined.
|
||||||
RTFSprms_t m_aListTableSprms;
|
RTFSprms_t m_aListTableSprms;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue