sax: add methods to duplicate current top marker and reapply it later
The need for this is ooxml: we need to have a duplicate entry (rPr) like this: <p> <pPr> <rPr>...</rPr> </pPr> <r> <rPr>...</rPR> </r> </p> This patch allows to do that by setting aside a copy of the <rPr> line, and then merging the copy when needed. Change-Id: I3868a822aa9e5210f3d814c68398a38f95072cd5 Reviewed-on: https://gerrit.libreoffice.org/1648 Reviewed-by: Noel Power <noel.power@suse.com> Tested-by: Noel Power <noel.power@suse.com>
This commit is contained in:
committed by
Noel Power
parent
8c178a5033
commit
1f2c079dd2
@@ -142,6 +142,8 @@ public:
|
|||||||
void mark( ::com::sun::star::uno::Sequence< sal_Int32 > aOrder =
|
void mark( ::com::sun::star::uno::Sequence< sal_Int32 > aOrder =
|
||||||
::com::sun::star::uno::Sequence< sal_Int32 >() );
|
::com::sun::star::uno::Sequence< sal_Int32 >() );
|
||||||
void mergeTopMarks( MergeMarksEnum eMergeType = MERGE_MARKS_APPEND );
|
void mergeTopMarks( MergeMarksEnum eMergeType = MERGE_MARKS_APPEND );
|
||||||
|
void copyTopMarkPush();
|
||||||
|
void copyTopMarkPop();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Now create all the overloads in a typesafe way (i.e. without varargs) by creating a number of overloads
|
Now create all the overloads in a typesafe way (i.e. without varargs) by creating a number of overloads
|
||||||
|
@@ -265,6 +265,20 @@ namespace sax_fastparser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FastSaxSerializer::copyTopMarkPush()
|
||||||
|
{
|
||||||
|
assert (!maMarkStack.empty());
|
||||||
|
maSavedMarkStack.push(boost::shared_ptr< ForMerge > ( new ForMerge(*maMarkStack.top())));
|
||||||
|
}
|
||||||
|
|
||||||
|
void FastSaxSerializer::copyTopMarkPop()
|
||||||
|
{
|
||||||
|
assert (!maSavedMarkStack.empty());
|
||||||
|
maMarkStack.push(maSavedMarkStack.top());
|
||||||
|
mergeTopMarks();
|
||||||
|
maSavedMarkStack.pop();
|
||||||
|
}
|
||||||
|
|
||||||
void FastSaxSerializer::writeBytes( const Sequence< ::sal_Int8 >& aData ) throw ( NotConnectedException, BufferSizeExceededException, IOException, RuntimeException )
|
void FastSaxSerializer::writeBytes( const Sequence< ::sal_Int8 >& aData ) throw ( NotConnectedException, BufferSizeExceededException, IOException, RuntimeException )
|
||||||
{
|
{
|
||||||
if ( maMarkStack.empty() )
|
if ( maMarkStack.empty() )
|
||||||
|
@@ -145,6 +145,8 @@ public:
|
|||||||
@see mark()
|
@see mark()
|
||||||
*/
|
*/
|
||||||
void mergeTopMarks( sax_fastparser::MergeMarksEnum eMergeType = sax_fastparser::MERGE_MARKS_APPEND );
|
void mergeTopMarks( sax_fastparser::MergeMarksEnum eMergeType = sax_fastparser::MERGE_MARKS_APPEND );
|
||||||
|
void copyTopMarkPush();
|
||||||
|
void copyTopMarkPop();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream > mxOutputStream;
|
::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream > mxOutputStream;
|
||||||
@@ -203,6 +205,7 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
::std::stack< boost::shared_ptr< ForMerge > > maMarkStack;
|
::std::stack< boost::shared_ptr< ForMerge > > maMarkStack;
|
||||||
|
::std::stack< boost::shared_ptr< ForMerge > > maSavedMarkStack;
|
||||||
|
|
||||||
void writeFastAttributeList( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastAttributeList >& Attribs );
|
void writeFastAttributeList( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastAttributeList >& Attribs );
|
||||||
void write( const ::rtl::OUString& s );
|
void write( const ::rtl::OUString& s );
|
||||||
|
@@ -162,6 +162,16 @@ void FastSerializerHelper::mergeTopMarks( MergeMarksEnum eMergeType )
|
|||||||
mpSerializer->mergeTopMarks( eMergeType );
|
mpSerializer->mergeTopMarks( eMergeType );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FastSerializerHelper::copyTopMarkPush()
|
||||||
|
{
|
||||||
|
mpSerializer->copyTopMarkPush();
|
||||||
|
}
|
||||||
|
|
||||||
|
void FastSerializerHelper::copyTopMarkPop()
|
||||||
|
{
|
||||||
|
mpSerializer->copyTopMarkPop();
|
||||||
|
}
|
||||||
|
|
||||||
FastAttributeList * FastSerializerHelper::createAttrList()
|
FastAttributeList * FastSerializerHelper::createAttrList()
|
||||||
{
|
{
|
||||||
return new FastAttributeList( mxTokenHandler );
|
return new FastAttributeList( mxTokenHandler );
|
||||||
|
Reference in New Issue
Block a user